JCLの紹介

本章では、OpenFrameで使用できるJCLを紹介し、JCLの記述形式、オペランド、JCLの開始と終了について説明します。

1. 概要

OpenFrameは、富士通メインフレームのジョブ制御言語(JCL)に対応するXSP JCLを提供します。

現在OpenFrameでは、以下の2種類のXSP JCLをサポートしています。

  • ジョブ制御文

    ジョブの実行から終了までを制御します。

  • マクロ制御文

    事前に記述されたJCLを簡単な文法で使用できるようにします。

2. 記述形式

本節では、JCLとマクロの記述形式について説明します。

2.1. JCL

以下は、JCLの記述形式です。

figure 1 1
JCLの記述形式
項目 説明

名前(Name)

JCL文の名前を指定します。名前を指定する際は、必ず2桁目から記述します。通常はコメントですが、以下の場合には意味を持ちます。

  • 構文がEX文の場合 : ジョブ・ステップ名を示しており、別の文でそのジョブ・ステップ名が必要な場合に使用されます。

  • マクロの場合 : IF文、IFN文、SKIP文の分岐点として使用されます。

  • 値が*、/、=の場合: 「*」はコメント文、「/」は段落文、「=」は命令文です。

上記の3番目の場合を除いて、名前は8文字以内の英数字にし、最初の文字は必ず英文字にします。特殊文字「.」を含めることができます。

オペレーション(Operation)

JCLのオペレーションを指定します。

名前を指定した場合、名前との間に1つ以上のスペースを入れます。名前を省略した場合は、3桁目以降から記述します。

コメント文、段落文にはオペレーションがありません。

オペランド(Operand)

各JCL文に適するオペランドを記述します。

各オペランドは、コンマ(,)で区切ります。オペランドはオペレーションの後に記述し、その間には1つ以上のスペースを入れます。

オペレーションのみ存在しており、オペランドは存在しない構文もあります。オペランドが存在しない構文の場合、オペレーションの後はコメントとして見なされます。

コメント(Comment)

オペランドの後にコメントを記述する場合、その間に1つ以上のスペースを入れます。

オペランドが存在する構文でオペランドを省略すると、コメントを記入することができません。

継続行(Continued operand)

1つのJCL文を1行に記述できない場合、以下で記述する方法を用い、複数行にわたって記述することができます。

継続行の詳細については、継続的表現を参照してください。

任意指定領域(Ignored space)

73桁目から80桁目までは任意の文字が入力できます。

81桁目以降のスペースはシステムで無視されます。

2.1.1. 継続的表現

以下は、オペランド、コメント、引用文字列を継続的に表現するための方法です。

  • オペランドの継続1

    • 71桁目以前にオペランドがコンマで(,)で終わった場合、オペランドの継続が指定されたと判断します。

    • 継続行の1桁目にはスペースを入れます。スペースは複数桁を記述することができます。

    • 継続しているオペランドは、スペース以降から記述します。

  • オペランドの継続2

    • オペランドがコンマ(,)で終わらず、コメントを記述していない状態で72桁目にスペース以外の文字を記述した場合、オペランドが継続するものと判断します。

    • 継続行の1桁目にはスペースを記述します。スペースは複数桁を記述することができます。

    • 継続しているオペランドはスペース以降から記述し、オペランドを区切るためのコンマ(,)が先に記述される必要があります。

  • コメントの継続

    コメントが記述できる制御文において、オペランドの記述が終わってコメントを記述する際、72桁目にスペース以外の文字を記述すると、次の行までコメントが記述されるものと判断します。

  • 引用文字列の継続

    オペランドが単一引用符(' ')で囲まれており、複数行にわたって記述された場合、1行目が単一引用符で終わっていない場合は継続されるものと判断します。

    以降、継続行の1桁目にはスペースを入れ、内容はスペース以降から記述します。スペースは複数桁を記述することができます。

以下は、継続的表現の例です。

  • 例1

    「オペランドの継続1」の規則に従い、継続が指定されたものと判断されます。

    12--------------------------------------------------------------------------72
    \ JOB JOB1,ML=1,
             HOLD
  • 例2

    コンマ(,)以降にコメントを記述しても、それとは関係なく「オペランドの継続1」の規則に従います。

    12--------------------------------------------------------------------------72
    \ JOB JOB1,ML=1, this is comment
             HOLD
  • 例3

    オペランドがコンマ(,)で終わり、コメントを記述した状態で72桁目にスペース以外の文字が記述されているため、「オペランドの継続1」と「コメントの継続」規則が満たされています。この場合、「オペランドの継続1」の規則で判断します。したがって、次の行がコメント処理されず、HOLDオペランドを認識します。

    12---------------------------------------------------------------------------72
    \ JOB JOB1,ML=1, this is comment
    A
             HOLD
  • 例4

    オペランドがコンマ(,)で終わっていないが、コメントがない状態でスペース以外の文字が72桁目に記述されているため、「オペランドの継続2」の規則に従います。

    12---------------------------------------------------------------------------72
    \ JOB JOB1,ML=1
    B
             ,HOLD
  • 例5

    オペランドがコンマ(,)で終わっておらず、コメントを記述した状態でスペース以外の文字が72桁目に記述されているため、「コメントの継続」規則に従います。したがって、次の行はコメントと見なされ、HOLDはコメント処理されます。

    12---------------------------------------------------------------------------72
    \ JOB JOB1,ML=1 this is comment
    C
             ,HOLD
  • 例6

    PARA文のオペランドの値が「引用文字列の継続」規則に従って継続として処理されます。値は「this is tmaxsoft program argument」です。

    12---------------------------------------------------------------------------72
    \ PARA 'this is tmaxsoft program a
    \      rgument'
  • 例7

    「tmaxsoft_」は、tmaxsoftの後にスペースがあり、新しい行であることを意味します。このように設定した場合、スペースまでを値として判断します。したがって、値は「this is tmaxsoft program argument」になります。

    12---------------------------------------------------------------------------72
    \ PARA 'this is tmaxsoft_
    \      program argument'

2.2. マクロ

以下は、マクロの記述形式です。

figure 1 2
マクロの記述形式
項目 説明

名前(Name)

マクロ文の名前を指定します。

名前を指定する際は、必ず2桁目から記述します。名前は、IF文、IFN文、SKIP文の分岐点として利用されます。

名前は、8文字以内の英文字、数字にし、最初の文字は必ず英文字にします。

オペレーション(Operation)

マクロのオペレーションを指定します。

名前を指定した場合、名前との間に1つ以上のスペースを入れます。

名前を省略した場合は、3桁目以降から記述します。

オペランド(Operand)

各構文に適するオペランドを記述します。

各オペランドはコンマ(,)で区切ります。オペランドはオペレーションの後に記述し、その間には1つ以上のスペースを入れます。

オペレーションのみ存在し、オペランドは存在しない構文もあります。オペランドが存在しない構文の場合、オペレーションの後はコメントとして見なされます。

コメント(Comment)

オペランドの後にコメントを記述する場合、その間には1つ以上のスペースを入れます。

オペランドが存在する構文でオペランドを省略した場合、コマンドは記入できません。

継続行(Continued operand)

1つのJCL文を1行に記述できない場合、以下に記述する方法を用い、複数行にわたって記述することができます。

継続に関してはJCLの場合と同様です。

任意指定領域(Ignored space)

73桁目から80桁目までは任意の文字が入力できます。

81桁目以降のスペースはシステムで無視されます。

3. オペランド

JCLのオペランドを記述する方法には、位置オペランド方式とキーワード・オペランド方式があります。

3.1. 位置オペランド

位置オペランドは、オペランドの位置が決定されており、何番目に位置するかによってオペランドの値が指定される方式です。

  • 位置オペランドはコンマ(,)で区切ります。

    値1,値2,値3
  • 位置オペランドを省略する場合でも、その位置を示す必要があるため、コンマ(,)は省略できません。

    値1,,値3
  • 省略する位置オペランド以降に位置オペランドが存在しない場合、以降の位置オペランドを区切る必要がないため、コンマ(,)が省略できます。

    値1,値2,,キーワード = 値4
    値1,値2,キーワード = 値4
  • 位置オペランド以降にキーワード・オペランドが存在しない場合、最後のコンマ(,)は省略します。

    値1,値2

3.2. キーワード・オペランド

キーワード・オペランドはキーワードと値を等号(=)で指定する方式です。また、キーワードのみ使用する方式もあります。

キーワード = 値 or キーワード
  • キーワード・オペランドはコンマ(,)で区切ります。キーワード・オペランドは位置とは関係ないため、キーワード・オペランドを省略する場合はコンマ(,)も省略します。

  • キーワード・オペランドの順序は特に意味はありません。

  • 位置オペランドとキーワード・オペランドが両方とも存在する場合、すべての位置オペランドを先に記述してから、キーワード・オペランドを記述します。

  • 位置オペランドをすべて省略した場合は、キーワード・オペランドの前にコンマ(,)を指定する必要はありません。

3.3. 例

以下は、JOB文でJOB名を位置オペランドとして指定し、MLにキーワード・オペランドとして指定する例です。

\ JOB JOB1,ML=1

3.4. 記述規約

オペランドの記述規約は以下のとおりです。

オペランド 記述規約

[ ] (brackets)

この記号で表現されているオペランドは省略できます。

  • 以下のように記述されている場合、次の4つのケースが可能です。

    A[,B][,C]
    • A

    • A,B

    • A,C

    • A,B,C

{ } (braces)

この記号で表現されているオペランドは、縦の項目のいずれかを選択することを意味します。

  • 以下のように記述されている場合、次の2つのケースが可能です。

    {B}
    {C}
    • B

    • C

| (vertical bar)

この記号で区切られている場合は、項目のいずれかを選択することを意味します。

  • 以下のように記述されている場合、次の2つのケースが可能です。

    { PS | PSU }
    • PS

    • PSU

Bold

選択記号{ }内に値を記述していない場合、デフォルトとして使用される値を意味します。

  • 以下の例で、FREEパラメータが省略されている場合は、FREE=ENDが指定されます。

    FREE = {END | CLOSE}

... (ellipsis)

この記号の前にある項目を繰り返し指定できることを意味します。

3.4.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

4. JCL

本節では、JCLで使用されるジョブ・グループ、ジョブの開始と終了および記述順序について説明します。

4.1. ジョブ・グループの開始と終了

以下は、ジョブ・グループの開始と終了についての説明です。ジョブ・グループには、1つ以上のジョブが必要です。

  • ジョブ・グループの開始

    • JOBG文がジョブの開始です。

  • ジョブ・グループの終了

    • JGEND文がジョブ・グループの終了です。

    • 次のジョブ・グループの開始を示すJOBG文がジョブ・グループの終了です。

    • 入力ストリームの中で最後のジョブ・グループである場合、入力ストリームの最後がジョブ・グループの終了です。

4.2. ジョブの開始と終了

以下は、ジョブの開始と終了についての説明です。

  • ジョブの開始

    • JOB文またはCODE文がJOB文の直前に存在する場合、このCODE文がジョブの開始です。

  • ジョブの終了

    • JEND文がジョブの終了です。

    • JGEND文がジョブの終了です。

    • 次のジョブの開始を示すJOB文、またはCODE文がジョブの終了です。

    • 入力ストリームの中で最後のジョブである場合、入力ストリームの最後がジョブの終了です。

以下は、ジョブ・ステップの開始と終了についての説明です。

  • ジョブ・ステップの開始

    • EX文の開始がジョブ・ステップの開始です。

  • ジョブ・ステップの終了

    • 次のジョブ・ステップの開始を示すEX文がジョブ・ステップの終了です。

    • ジョブの最後のステップの場合、ジョブの終了とジョブ・ステップの終了が同じです。

4.3. 記述順序

ジョブ・ステップは、それぞれのジョブ範囲内に記述します。したがって、EX文はJOB文の後に記述します。

4.3.1. JCLの記述順序

以下は、JCLの記述順序です。

  1. JOBG文:ジョブ・グループの開始を意味します。

  2. JOB文:ジョブの開始を意味します。ただし、CODE文が存在する場合はCODE文の後に記述します。

  3. EX文:JOB文の次に、各ジョブ・ステップの文頭に記述します。

  4. FD文:EX文の次に記述します。

  5. 段落文:SYSINデータセットの最後に記述します。

  6. 空文:ジョブの最後に記述します。

  7. コメント文:ジョブの範囲内ならどこでも構いません。ただし、インストリーム・データセット内では指定できません。

  8. JEND文:ジョブの最後を意味します。

  9. JGEND文:ジョブ・グループの最後を意味します。

4.3.2. MACRO JCLの記述順序

以下は、MACRO JCLの記述順序です。

  1. DEFINE文:マクロの開始を意味します。

  2. マクロ文:マクロの次に、マクロの範囲内ならどこでも構いません。

  3. JCL文:マクロの次に、マクロの範囲内ならどこでも構いません。

  4. DEFEND文:マクロの最後を意味します。