出口プログラム (Exitプログラム)とは?
出口プログラム (Exitプログラム)とは、IBM i のOS機能を実行する前後にユーザー作成プログラム(ユーザーが制御したい条件やロジック)を埋め込みできる機能を指します。
正確には、
出口点(Exit Point):ユーザー作成プログラムを登録するエントリーポイント
IBM i OS機能の実行する前(または後)に、呼び出すことが出来るユーザー作成プログラムを指定できます。
出口プログラム(Exit Program):出口点(Exit Point)に登録するユーザー作成プログラム
以下の例ではIBM i のFTPサーバーにログインする際のユーザーID(ほか?)を判断してFTPセッション中で実行できるコマンドや機能を制限する事ができます。
※クライアントのIPアドレスを判断して制御、も実装できます。
下図のようにIBM i ではftpでIBM i にログイン時、ログイン後の操作時の挙動を制御するユーザー作成プログラム(RPG,COBOL,CLP,Java,etc.)が実行されます。
出口点(Exit Point)の登録情報は WRKREGINFコマンドで確認できる
/WRKREGINF EXITPNT(*ALL)
で全ての出口点のリストを取得できます。
- OUTPUT(*PRINT)を指定すればスプールに落とすことができます。
- EXITPNT(*REGISTERED) - 出口点に出口プログラムを登録しているものだけ
※ユーザーのExit Program登録だけでなく、システムで登録済みの出口点も表示されます。 - EXITPNT(*UNREGISTERED) - 出口プログラム登録がない出口点
を表示・出力もできます。
WRKREGINFコマンドの実行例:出口点の一覧(例)です。
WRKREGINFコマンドの実行例:上記画面からOPT.5で出口点の登録情報を表示できます。
上記画面の一番上のFTPサーバーのログオンのExit Pointの登録情報を見てみますと、下図のように、出口プログラムの現在数は0だと分かります。
例)FTPサーバーログオンのExit Pointは3種類あります(出口点の形式)
上にあげたIBM i FTPサーバーの2種類のExit Pointのうち、ログイン時のExit Point QIBM_QTMF_SVR_LOGONは3行あります。この3行は同一の処理(ftpサーバーにログインする際の挙動の制御)に対する処理ですが、それぞれのExit Pointで処理可能な内容が異なります。
3つの出口点の処理内容は下記です。
参考:FTPサーバー・ログオン出口点
TCPL0100 : FTPサーバーへのログオン可否、ログインするIBM i ユーザープロフィール・パスワード、現行ライブラリーの制御
TCPL0200 : 上記に加え、作業ディレクトリの指定、アプリケーションのリターンコードを返す、ftpクライアントとの暗号化制御が可能です。
TCPL0300 : 上記2つに加え、パスワード・ディレクトリーのCCSID処理、クライアント認証されたユーザー情報の受取りが可能です。
Exit Point QIBM_QTMF_SVR_LOGON に登録可能なExit Programは上記3つのうち1つだけです。当然ですが登録するExit Programに実装するロジックやパラメーターは3つのExit Pointの形式毎に異なります。
Exit Programを作成・追加してみる
・・・記憶では20世紀にやった記憶がありますがあまりに遠すぎて・・(^^; …改めてやってみたいと思います・・
FTPサーバーログオンの出口点のサンプルがこちらにあります。。
例: CL コードで作成された FTP サーバー・ログオン出口プログラム
例: ILE RPG コードで作成された FTP サーバー・ログオン出口プログラム
例: C コードで作成された FTP サーバー・ログオン出口プログラム
つづき・・・
実際に書いてみました