POSTCCはパラメーターで指定された値を完了コードにして終了するプログラムです。実用的な処理は何もしません。好きなコードで終了するIEFBR14みたいなものです。JCLのCONDパラメーターのテストや、CLISTのERRORステートメント、&LASTCC変数の動きのテストなど、セルフスタディ用に使って下さい。
汎用に作ってあるので、z/OS以外のMSP、VOS3でも動作するはずです。MVS3.8でも動きます。またバッチ、TSOのいずれでも動作します。
プログラムの登録
1 2 3 4 5 |
//POSTCC EXEC PGM=IEWL,PARM='LIST,MAP,LET,XREF,NCAL' //SYSPRINT DD SYSOUT=* //SYSLMOD DD DISP=SHR,DSN=...dsname...(POSTCC) ロードモジュールの登録先 //SYSLIN DD DISP=SHR,DSN=...dsname...(POSTCC) オブジェクトモジュール // |
オブジェクトモジュールをバイナリー・アップロードして、このJCLを参考にリンケージエディターを実行します。オブジェクトモジュールはここからダウンロードできます。»»» 「postcc.obj」
JCLで使う
1 2 3 4 5 6 7 8 9 10 |
// JOB //JOBLIB DD DISP=SHR,DSN=...dsname... //* //STEP1 EXEC PGM=POSTCC,COND=EVEN,PARM=0 //STEP2 EXEC PGM=POSTCC,COND=EVEN,PARM=38 //STEP3 EXEC PGM=POSTCC,COND=EVEN,PARM=U123 //STEP4 EXEC PGM=POSTCC,COND=EVEN,PARM=S0C7 //STEP5 EXEC PGM=POSTCC,COND=EVEN,PARM=1234 // // |
終了時に設定させたい完了コードを、PARMパラメーターまたはSYSIN DD文で指定します(PARMパラメーターが優先)。
1 2 3 4 5 6 7 8 9 |
// JOB //JOBLIB DD DISP=SHR,DSN=...dsname... //* //STEP6 EXEC PGM=POSTCC,COND=EVEN,PARM='W10' //STEP7 EXEC PGM=POSTCC,COND=EVEN,PARM='W5,U747' //STEP8 EXEC PGM=POSTCC,COND=EVEN,PARM='W7,S0C3' //STEP9 EXEC PGM=POSTCC,COND=EVEN,PARM='W12,43' // // |
一定時間タイマー停止させることもできます。完了コードの前に Wnn パラメーターを追加します。nnは停止時間を秒単位で指定します。W10は、10秒間停止してから指定の完了コードで終了します。
TSOで使う
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
CALLコマンドで呼び出す。 CALL '...dsname...(POSTCC)' '0' CALL '...dsname...(POSTCC)' '38' CALL '...dsname...(POSTCC)' 'U123' CALL '...dsname...(POSTCC)' 'S0C7' CALL '...dsname...(POSTCC)' 'W5,12' 5秒待ってから完了コード12で終了する コマンドプロセッサーとして動かす(ログオンプロシージャのSTEPLIBに登録)。 POSTCC 0 POSTCC 38 POSTCC U123 POSTCC S0C7 実際に設定された完了コードを見たいなら、CLISTを利用できる。 PROC 0 CC() CONTROL NOFLUSH ALLOC DD(SYSIN) DA(*) <=== VOS3の場合のみ実行する ERROR DO RETURN END CALL '...dsname...(POSTCC)' '&CC' WRITE CC=&MAXCC EXIT CODE(&MAXCC) CLISTの実行。 EX '...dsname...(clistname)' 'CC(1234)' |
TSOでは完了コードのパラメーターを省略すると、端末からの入力待ちとなります。プロンプトは出ないのでカーソル位置に直接コード値を入力します。
ソースプログラム(アセンブラ)も添付しますので、必要ならばご自由に改造して下さい。»»» 「POSTCC.txt」