JCLの紹介
OpenFrameは、富士通メインフレームのジョブ制御言語(JCL)に対応するMSP JCLを提供します。本章では、JCLの基本概念について説明します。
1. 記述形式
本節では、JCLの記述形式について記述します。
1.1. JCL文
以下は、JCL文の記述形式です。

項目 | 説明 |
---|---|
名前(Name) |
JCL文の名前を指定します。他のJCL文と区別したり、システムで参照したりする際に使用します。 名前を指定する際は、必ず3桁目から記述します。名前は8文字以内の英数字にし、最初の文字は必ず英文字にします。 コメント文、段落見出し、空文には名前がありません。 |
オペレーション(Operation) |
JCLのオペレーションを指定します。 名前を指定した場合、名前との間に1つ以上の空白を入れます。名前を省略した場合は、4桁目以降から記述します。 コメント文、段落見出し、空文にはオペレーションがありません。 |
オペランド(Operand) |
各JCLの構文に適するオペランドを記述します。各オペランドはコンマ(,)で区切ります。 オペランドはオペレーションの後ろに記述し、その間には1つ以上の空白を入れます。 コメント文、段落見出し、空文、PEND文にはオペランドがありません。 |
コメント(Comment) |
オペランドの後にコメントを記述する場合、間に1つ以上の空白を入れます。 オペランドが存在する構文(JOB文、EXEC文、DD文、PROC文)でオペランドを省略した場合、コメントは記入できません。 また、空文にもコメントを記入できません。 |
継続行(Continued operand) |
1つのJCL文を1行に記述できない場合、以下に記述する方法を用い、複数行に亘って記述できます。 コメント文、段落見出し、空文には継続行を指定できません。継続行の詳細については、継続的表現で説明します。 |
任意指定領域(Ignored space) |
73桁目から80桁目までは任意の文字を入力できます。 81桁目以降のスペースはシステムで無視します。 |
1.1.1. 継続的表現
以下は、オペランド、コメント、引用符付き文字列を継続して表現するための方法です。
-
オペランドの継続1
-
71桁目の前のオペランドがコンマ(,)で終わった場合、オペランドの継続が指定されたと判断します。
-
継続行の1桁目と2桁目には「//」を記述します。
-
継続行では名前を記述してはなりません。
-
継続しているオペランドは4桁目から16桁目までの間に記述を始めます。
-
-
オペランドの継続2
-
オペランドがコンマ(,)で終わらず、コメントを記述していない状態で72桁目に空白以外の文字を記述した場合、オペランドが継続するものと判断します。
-
継続行の1桁目と2桁目には「//」を記述します。
-
継続行では名前を記述してはなりません。
-
継続しているオペランドは、4桁目から16桁目までの間に記述を始めます。まずオペランドを区切るためのコンマ(,)を記述します。
-
-
コメントの継続
コメントを記述できる制御文において、オペランドの記述が終わってコメントを記述する際、72桁目に空白以外の文字を記述すると、次の行までコメントが記述されるものと判断します。
-
引用符付き文字列の継続
オペランドの値が単一引用符(' ')で囲まれており、その値の内容が長くて複数行に亘って記述された場合は継続するものと判断します。以降、継続する行の1桁目と2桁目には「//」を記述し、内容は4桁目から16桁目の間に記述を始めます。
以下は、継続的表現の例です。
-
例1
「オペランドの継続1」のルールに基づいて、継続が指定されたものと判断します。
123-------------------------------------------------------------------72 //JOB1 JOB CLASS=A,MSGCLASS=A,COND=(0,EQ), // MSGLEVEL=(1,1)
-
例2
コンマ(,)以降にコメントを記述しても、それとは関係なく「オペランドの継続1」のルールに従います。
123-------------------------------------------------------------------72 //JOB1 JOB CLASS=A,MSGCLASS=A,COND=(0,EQ), this is comment // MSGLEVEL=(1,1)
-
例3
オペランドがコンマ(,)で終わってコメントを記述した状態で、72桁目に継続文字が記述されているため、「オペランドの継続1」と「コメントの継続」のルールが満たされています。この場合、「オペランドの継続1」のルールとして判断するため、次の行がコメント処理されず、MSGLEVELオペランドを認識することになります。
123-------------------------------------------------------------------72 //JOB1 JOB CLASS=A,MSGCLASS=A,COND=(0,EQ), this is comment A // MSGLEVEL=(1,1)
-
例4
オペランドがコンマ(,)で終わっていませんが、コメントがない状態で継続文字が72桁目に記述されているため、「オペランドの継続2」のルールに従います。
123-------------------------------------------------------------------72 //JOB1 JOB CLASS=A,MSGCLASS=A,COND=(0,EQ) B // ,MSGLEVEL=(1,1)
-
例5
オペランドがコンマ(,)で終わっておらずコメントを記述した状態で、継続文字が72桁目に記述されているため、「コメントの継続」ルールに従います。したがって、次の行はコメントと見なされ、MSGLEVEL=(1,1)はコメントとして処理されます。
123-------------------------------------------------------------------72 //JOB1 JOB CLASS=A,MSGCLASS=A,COND=(0,EQ) this is comment C // ,MSGLEVEL=(1,1)
-
例6
EXEC文のPARMオペランドの値が「引用符付き文字列の継続」ルールに基づいて継続として処理されました。PARMの値は「this is tmaxsoft program argument」です。
123-------------------------------------------------------------------72 //JOB1 JOB CLASS=A,MSGCLASS=A,COND=(0,EQ),MSGLEVEL=(1,1) //STEP1 EXEC PGM=TMAXSOFT,COND=(0,NE),PARM='this is tmaxsoft program a // rgument'
-
例7
「tmaxsoft_」はtmaxsoftの後に空白があることを意味します。このように設定した場合、空白までを値として判断します。したがって、PARMの値は「this is tmaxsoft program argument」となります。
123-------------------------------------------------------------------72 //JOB1 JOB CLASS=A,MSGCLASS=A,COND=(0,EQ),MSGLEVEL=(1,1) //STEP1 EXEC PGM=TMAXSOFT,COND=(0,NE),PARM='this is tmaxsoft_ // program argument'
2. オペランド
JCLのオペランドを記述する方法には、位置オペランド方式とキーワード・オペランド方式があります。
2.1. 位置オペランド
位置オペランドは、オペランドの位置が決定されており、最初から何番目に位置するかによってオペランドの値が指定される方式です。
以下は、位置オペランドの設定についてのルールです。
-
各位置オペランドはコンマ(,)で区切ります。
値1,値2,値3
-
位置オペランドを省略する場合も、その位置を示すためにコンマ(,)を省略してはなりません。
値1,,値3
-
省略する位置オペランドの以降に位置オペランドが存在しない場合は、以降の位置オペランドを区切る必要がないため、コンマ(,)を省略できます。
値1,値2,,キーワード = 値4
値1,値2,キーワード = 値4
-
位置オペランドの以降にキーワード・オペランドが存在しない場合、最後のコンマ(,)は省略します。
値1,値2
2.2. キーワード・オペランド
キーワード・オペランドは、キーワードと値を等号(=)で指定する方式です。
キーワード = 値
以下は、キーワード・オペランドの設定についてのルールです。
-
各キーワード・オペランドはコンマ(,)で区切ります。キーワードオペランドは位置に関係ないため、キーワード・オペランドを省略する場合はコンマ(,)も一緒に省略します。
-
キーワードオペランドは、EXEC文のPROCオペランドとPGMオペランドを除いては、順序に意味がありません。
-
位置オペランドとキーワード・オペランドが両方ある場合、すべての位置オペランドを先に記述してから、キーワード・オペランドを記述します。
-
位置オペランドをすべて省略した場合、キーワード・オペランドの前にコンマ(,)を指定する必要はありません。
2.3. 記述規約
以下は、本書のオペランドの記述規約です。
オペランド | 記述規約 |
---|---|
[ ] (brackets) |
この記号が使用されたオペランドは省略できます。
|
{ } (braces) |
この記号が使用された場合、いずれかのオペランドを選択します。
|
| (vertical bar) |
この記号が使用された場合、いずれかのオペランドを選択します。
|
Bold |
{ }内に何も記述されていない場合、デフォルト値として使用される値です。
|
... (ellipsis) |
この記号の直前に存在する項目を繰り返して指定できることを意味します。 |
2.3.1. 指定値のタイプ
以下は、オペランドに指定できる指定値のタイプについての説明です。
-
数字
意味
0|1|2|3|4|5|6|7|8|9
例
0, 1, 9
-
英文字と記号
意味
A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|$|#|@
例
C,J,@,$
-
記号と特殊文字
意味
英数字を除いた任意の文字として、コンマ(,)、単一引用符(' ')、等号(=)、括弧、空白などを単一引用符(' ')で囲んで記述します。
例
, , . , / , ' , ( , ) , * , & , + , - , = , 空白
-
英数字
意味
英文字、数字、または英文字と数字の組み合わせです。
例
A, 7, A56, 8X, ABC, 997
-
符号なし整数
意味
符号なし数字の組み合わせです。
例
01, 375
-
整数
意味
符号付き数字と数字の組み合わせです。
例
99, +76, -143
-
特殊文字列
意味
英文字、数字、記号、特殊文字、または英文字と数字と記号と特殊文字の組み合わせです。
例
32 A5, *315'?&A
-
引用符付き文字列
意味
<英数字> | '<特殊文字列>'のように特殊文字列が単一引用符(' ')で囲まれている場合、システムで1つの単一引用符(' ')として認識するためには、2つを連続して指定する必要があります。
アンパサンド(&)の場合も、2つが連続で指定されていると、1つのアンパサンド(&)と見なします。ただし、アンパサンド(&)は1つのみ指定されていても、1文字のアンパサンド(&)と見なします。引用符付き文字列が単一引用符(' ')で囲まれている場合、文字数に引用符(' ')は含まれません。
例
'5&23' '8=/' 'A''B', 8X3B
-
記号名
意味
英文字で始まる8文字以内の英数字と特殊文字の組み合わせです。
例
Z7@, LMN, A123BC
2.4. 例
以下は、JOB文に課金識別情報とプログラマー名を位置オペランドで指定し、CLASSとMSGCLASSをキーワード・オペランドで指定する例です。
//JOB1 JOB A001,TMAX.PROGRAM,CLASS=A,MSGLEVEL=(1,1)
課金識別情報とプログラマー名を指定する際、課金識別情報(A001)を省略する場合は最初のコンマ(,)を省略できません。
//JOB1 JOB ,TMAX.PROGRAM,CLASS=A,MSGLEVEL=(1,1)
プログラマー名(TMAX.PROGRAM)を省略する場合は、位置オペランドがそれ以上存在しないため、省略のためのコンマ(,)は指定しなくても構いません。
//JOB1 JOB A001,CLASS=A,MSGLEVEL=(1,1)
課金識別情報とプログラマー名の両方を省略する場合、以下のように指定できます。
//JOB1 JOB CLASS=A,MSGLEVEL=(1,1)
パラメータの指定
オペランドの値がパラメータのリストとして記述されている場合にも、各パラメータは、位置オペランドとキーワード・オペランドの記述方法に従います。
以下は、パラメータを指定する例です。
LABEL=(3,SL,PASSWORD,OUT,RETPD=350)
以下は、PASSWORD位置パラメータを省略した場合の例です。
LABEL=(3,SL,,OUT,RETPD=350)
以下は、SLパラメータとRETPDパラメータのみ指定する場合の例です。
LABEL=(,SL,RETPD=350)
3. JCL
本節では、ジョブ制御言語(JCL)で使用されるジョブの開始と終了および記述手順について説明します。
3.1. ジョブの開始と終了
以下は、ジョブの開始と終了についての説明です。
-
ジョブの開始
JOB文が出現したら、ジョブの開始です。
-
ジョブの終了
空文の次のジョブの開始を示すJOB文がジョブの終了です。入力ストリームの最後のジョブの場合、入力ストリームの最後がジョブの終了です。
ジョブには1つ以上のステップが必要です。つまり、JOB文と次のJOB文の間には1つ以上のEXEC文が存在しなければなりません。以下は、ジョブ・ステップの開始と終了についての説明です。
-
ジョブ・ステップの開始
EXEC文の開始がジョブ・ステップの開始です。
-
ジョブ・ステップの終了
次のジョブ・ステップの開始を示すEXEC文がジョブ・ステップの終了です。ジョブの最後のステップの場合、ジョブの終了とジョブ・ステップの終了が同じです。
3.2. 記述手順
ジョブ・ステップは、各ジョブの範囲内に記述します。したがって、EXEC文はJOB文の後に記述します。
3.2.1. JCL文の記述手順
以下は、JCL文の記述手順です。
-
JOB文
ジョブの開始を意味します。ただし、PRIORITY文がある場合はPRIORITY文の後に記述します。
-
EXEC文
EXEC文は以下の3つに分けられます。
-
プロシージャ内に記述されていない場合
JOB文、JOBLIB DD文、JOBCAT DD文の次に、各ジョブ・ステップの先頭に記述します。
-
ストリーム内プロシージャ内に記述されている場合
PROC文の次に、各プロシージャ・ステップの先頭に記述します。
-
カタログ式プロシージャ内に記述されている場合
各プロシージャ・ステップの先頭にPROC文がある場合は、PROC文の次に記述します。
-
-
DD文
DD文は以下の2つに分けられます。
-
JOBLIB DD文、JOBCAT DD文
JOB文の直後に、最初のジョブ・ステップを定義するEXEC文の前に記述します。ただし、JOB文とDD文の間にJES JCL文を記述することは可能です。
-
その他のDD文
EXEC文の次に記述します。
-
-
段落見出し
SYSINデータセットの最後に記述します。
-
空文
ジョブの最後に記述します。ストリーム内プロシージャまたはカタログ式プロシージャには記述できません。
-
コメント文
ジョブの範囲内であればどこでも構いません。ただし、インストリーム・データセット内には指定できません。
-
PROC文
PROC文は以下の2つに分けられます。
-
ストリーム内プロシージャ
各ストリーム内プロシージャの先頭に記述します。JOB文の次に、ストリーム内プロシージャを呼び出すジョブ・ステップの前に記述します。
-
カタログ式プロシージャ
カタログ式プロシージャの先頭に記述します。
-
-
PEND文
各ストリーム内プロシージャの最後に記述します。