Google
オフコン練習帳内を検索
インターネット全体を検索

NECオフコン関連
オフコン一般
情報
トップ  >  A-VXのジョブ制御言語(JCL)

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 ;


JSを実行してみます。最初は下のようにCOBOLプログラムの33行目のACCEPTの入力。ここで「LLLLL」を入力してみます。


次は数字を入力します。適当に「88」を入れます。


最後に英数字の入力。これも何でも良いので「AAAAAAAA」を入れてみます。


で、3つのデータを入力すると一番下に今まで入力した3つのデータがそのまま表示されます。


このようにJSの全部のパラメータを「^_」とするとそのまま全部のデータをキーボードから入力することになります。

1個目と3個目のデータを一時切り換え機能で入力することにします。

/RUN TESTAA,FIL=TESTAPLML,DEV=MSD001;
^_6_^_
/> ;
/PAUSE ;


下のように1番目と3番目の入力フィールドが出て入力することができます。2番目は入力フィールドは出ずにJSで指定した値が使われます。


JSLでは「6」と書いたのに「600000」と入力されていますね。数字項目は桁数が足りないとき、左詰めで入力されます。だから「6」と入力したいのならJSLには「000006」と書かなければならないのでした。JSLを直してみましょう。ついでに英数字項目がどうなるか確認してみましょう。


1番目のデータだけ一時切り換え機能を使って入力します。2番目はJSL内で「000006」「AAAAA」を指定しています。
/RUN TESTAA,FIL=TESTAPLML,DEV=MSD001;
^_000006_AAAAA_
/> ;
/PAUSE ;


下のように数字項目に「6」が入力されています。3番目の項目の入力結果を見れば分かるとおり、英数字項目は右詰めで入力されます。

正確には、標準入力装置を一時的に別のものに切り替えるという機能なので、キーボード以外にも切り替えられますが、たぶんキーボードからの入力用途がほとんどでしょう。