A−VXのジョブ制御言語(JCL)
- 5 一時切り換え機能
JSLやPMLからジョブを実行しているとき、固定データやパラメータは「4 パラメータ」で書いたような方法でJSLやPMLから入力できます。ところが一部のデータはジョブ実行中に決定したいときがあります。このような場合に一時切り換え機能を使用します。
と書くと「4 置換機能」とほとんど同じに見えますが、「ジョブ実行中」というところに注目してください。簡単に書くと、全部のパラメータをJSL内に書くのではなく、一部をJS実行中にキーボードから入力できるようになるという機能です。
JSLまたはPMLのデータの中に「^_」と書きます。
例えば、
* JSL01 /RUN PRG01; MSD002_^_PRN101_ /> ;
とすると、このJSLを実行すると、画面上に2番目のデータの入力促進フィールドが表示されます。そこで「FILEA」と入力すると「^」の部分がFILEAに置換されてPRG01が実行されます。
こんな感じです。
これだけだと画面がさびしいのでディスプレイ文などで何を入力するのかなどの説明文を表示するとよりベターです。
以下にもう少し具体的な話を書きます。
下のCOBOLプログラム(TESTAA)があるとします。何をするプログラムでもなく、3つのデータ(16桁の英数字データ、6桁の数字データ、8桁の英数字データ)を入力するプログラムです。
000010 IDENTIFICATION DIVISION. 000020************************************** 000030** TEST ** 000040************************************** 000050 PROGRAM-ID. TESTAA. 000060** 000070 ENVIRONMENT DIVISION. 000080** 000090 DATA DIVISION. 000100 WORKING-STORAGE SECTION. 000110 01 DATA1 PIC X(16) VALUE SPACE. 000120 01 DATA2 PIC 9(6) VALUE ZERO. 000130 01 DATA3 PIC X(8) VALUE SPACE. 000140 SCREEN SECTION. 000150 SD GAMEN 000160 END STATUS IS ENDSTS. 000170 01 TEST-KAKU. 000180 05 LINE 22. 000190 10 COLUMN 10 PIC X(16) FROM DATA1. 000200 10 COLUMN 30 PIC 9(6) FROM DATA2. 000210 10 COLUMN 40 PIC X(8) FROM DATA3. 000220 01 TEST1-ACT. 000230 05 LINE 5. 000240 10 COLUMN 15 PIC X(16) USING DATA1. 000250 01 TEST2-ACT. 000260 05 LINE 21. 000270 10 COLUMN 10 PIC 9(6) USING DATA2. 000280 01 TEST3-ACT. 000290 05 LINE 18. 000300 10 COLUMN 10 PIC X(8) USING DATA3. 000310 PROCEDURE DIVISION. 000320 MPRG. 000330 ACCEPT TEST1-ACT. ← 1個目のキー入力 000340 ACCEPT TEST2-ACT. ← 2個目のキー入力 000350 ACCEPT TEST3-ACT. ← 3個目のキー入力 000360** 000370 DISPLAY TEST-KAKU. 000380 STOP RUN.
3つのデータ全部一時切り換え機能でJS実行時に入力するJSLは以下のように書きます。
このJSLを実行すると普通にCOBOLプログラムを実行するのと同じように、全部のデータをキーボードで入力することになります。/RUN TESTAA,FIL=TESTAPLML,DEV=MSD001; ^_^_^_ /> ; /PAUSE ;
1個目と3個目のデータを一時切り換え機能で入力することにします。
JSを実行してみます。最初は下のようにCOBOLプログラムの33行目のACCEPTの入力。ここで「LLLLL」を入力してみます。
次は数字を入力します。適当に「88」を入れます。
最後に英数字の入力。これも何でも良いので「AAAAAAAA」を入れてみます。
で、3つのデータを入力すると一番下に今まで入力した3つのデータがそのまま表示されます。
このようにJSの全部のパラメータを「^_」とするとそのまま全部のデータをキーボードから入力することになります。
/RUN TESTAA,FIL=TESTAPLML,DEV=MSD001; ^_6_^_ /> ; /PAUSE ;
1番目のデータだけ一時切り換え機能を使って入力します。2番目はJSL内で「000006」「AAAAA」を指定しています。
下のように1番目と3番目の入力フィールドが出て入力することができます。2番目は入力フィールドは出ずにJSで指定した値が使われます。
JSLでは「6」と書いたのに「600000」と入力されていますね。数字項目は桁数が足りないとき、左詰めで入力されます。だから「6」と入力したいのならJSLには「000006」と書かなければならないのでした。JSLを直してみましょう。ついでに英数字項目がどうなるか確認してみましょう。
/RUN TESTAA,FIL=TESTAPLML,DEV=MSD001; ^_000006_AAAAA_ /> ; /PAUSE ;
下のように数字項目に「6」が入力されています。3番目の項目の入力結果を見れば分かるとおり、英数字項目は右詰めで入力されます。