job_submit

この ビルディング・ブロック は、PDS または z/OS® UNIX System Services ディレクトリーから JCL の実行を実行依頼します。 成果物には関連しません。

実行する JCL と必要な変数を指定するには、以下の例のように、この ビルディング・ブロック が実装する var_job_submit プロパティーを 「デプロイメント方式」 ステップに入力します。

actions:
    - name: SUBMIT A JCL TO RUN A JOB
      short_name: SUBMIT_JCL
      steps:
      - name: TEST STEP FOR THE SUBMISSION OF A JCL
        short_name: JOB_TEST
        properties:
        - key: template
          value: job_submit
        - key: var_job_submit
          value: my_var_job_submit

is_artifact: False

この例では、 var_job_submit プロパティーの値は my_var_job_submitですが、他の任意のストリングにすることができます。

この ビルディング・ブロック を正しく実行するには、環境変数が必要です。 それらを .yml ファイルに指定します。 Ansible ビルディング・ブロックおよび Python ビルディング・ブロックの汎用環境変数 を示し、それらの値をターゲットの z/OS 環境に適合させます。 この ビルディング・ブロックに固有の変数も指定します。

Ansible 変数

デプロイメント方式のステップで var_job_submit プロパティーを指定する場合は、実行する必要がある変数の値を指定する必要があります。
そのため、 Ansible 環境変数ファイルで以下の変数を定義する必要があります。
  • src (必須)。実行依頼する JCL を含むソース・ファイルまたはデータ・セット、または生成された JCL が実行依頼される前にレンダリングされる Jinja2 テンプレートを示します。
  • location (必須) は、JCL または Jinja2 テンプレートの場所を示します。
  • use_template (オプション)。 src 変数に Jinja2 テンプレートが含まれているかどうかを示します。 デフォルトでは、この変数は falseに設定されています。

zos_job_submit モジュールによって使用されるオプション変数を定義することもできます。

IBM® z/OS コレクションの Ansible 資料の zos_job_submit を参照してください。

以下の例は、 z/OS UNIX System Services ディレクトリーにある JCL の Ansible 環境変数ファイル内の変数に値を割り当てる方法を示しています。
my_var_job_submit:
   src: '/tmp/HELLO1.JCL'
   location: "USS"
以下の例は、 Jinja2 テンプレートの Ansible 環境変数ファイル内の変数に値を割り当てる方法を示しています。
job_submit_template:
   src: "spec_templates/hello.jcl.j2"
   location: "LOCAL"
   use_template: True

Jinja2 テンプレートで変数を定義する方法については、 Jinja2 テンプレートでの変数のコーディングを参照してください。

注: IBM z/OS コレクションの zos_job_submit にはバグがあるため、単純な引用符 (') やアンパーサンド (&) などの一部の特殊文字があります。 が正しく変換されていません。 このバグを回避するには、以下の 2 つの方法のいずれかを適用します。
  • 以下の行を使用して、 Jinja2 コードのフレームを作成します。
    {% autoescape false -%}
    ....
    {%- endautoescape %}
    例えば、以下のコードを入力できます。
    {% autoescape false -%}
    //{{template_values.jobcard}}
    //STEP0001 EXEC PGM=IEBGENER
    //SYSIN    DD DUMMY
    //SYSPRINT DD SYSOUT=*
    //SYSUT1   DD *
    "HELLO WORLD"
    /*
    //SYSUT2   DD SYSOUT=*
    //
    {%- endautoescape %}
  • 以下の行を使用して、 Jinja2 テンプレート内で変数を宣言します。
    {{ myVar | safe }}
    例えば、以下のコードを入力できます。
    //{{template_values.jobcard | safe}}
    //STEP0001 EXEC PGM=IEBGENER
    //SYSIN    DD DUMMY
    //SYSPRINT DD SYSOUT=*
    //SYSUT1   DD *
    "HELLO WORLD"
    /*
    //SYSUT2   DD SYSOUT=*
    //

デプロイメント方式のステップで var_job_submit プロパティーを指定しない場合は、 Ansible 環境変数ファイルからのデフォルトの job_submit_default 変数の値が使用されます。

以下の例は、 job_submit_default 変数を示しています。
hlq: 'NAZARE.WDEPLOY.ANSIBLE'

job_submit_default: 
   src: '{{ hlq }}.JCL(HELLO1)'
   location: "DATA_SET"

Python 変数

デプロイメント方式のステップで var_job_submit プロパティーを指定する場合は、実行する必要がある変数の値を指定する必要があります。
Python 環境変数ファイルで以下の変数を指定します。
  • spec ルート。これは、すべての Python 変数のルートです。
  • src (必須)。実行依頼する JCL を含むソース・ファイルまたはデータ・セット、または生成された JCL が実行依頼される前にレンダリングされる Jinja2 テンプレートを示します。
  • use_template (オプション)。 src 変数に Jinja2 テンプレートが含まれているかどうかを示します。 デフォルトでは、この変数は falseに設定されています。
  • dest 変数。リモート・マシン上に作成されるターゲット・ファイルへの絶対パスまたは相対パスを示します。 use_templateTrueに設定されている場合、この変数は必須です。
  • mode 変数。これは、ターゲット・ファイルに対するアクセス権を示します。 例えば、 0755のようになります。 この変数はオプションです。
  • max_rc (オプション)。JCL 実行の最大戻りコードを示します。
  • wait_time_s (オプション)。ジョブの完了を待機する最大時間を秒単位で設定します。
以下の例は、 Python 環境変数ファイル内の変数に値を割り当てる方法を示しています。
spec:

  my_var_job_submit:
     src: 'tmp/HELLO1.jcl'
     max_rc: 8
     wait_time_s: 25
以下の例は、 Jinja2 テンプレート用に Python 環境変数ファイル内の変数に値を割り当てる方法を示しています。
spec:

  job_submit_template:
     src: "spec_templates/hello.jcl.j2"
     use_template: True
     dest: "wd_test/jcl_template.jcl"

Jinja2 テンプレートで変数を定義する方法については、 Jinja2 テンプレートでの変数のコーディングを参照してください。

デプロイメント方式のステップで var_job_submit プロパティーを指定しなかった場合は、 Python 環境変数ファイルのデフォルトの job_submit_default 変数の値が使用されます。

以下の例は、 job_submit_default 変数を示しています。
spec:

  hlq: "{{ extra_vars.hlq if extra_vars.hlq is defined else 'NAZARE.WDEPLOY.PYTHON' }}"

  job_submit_default:
     src: '{{ env.spec.hlq }}.JCL(HELLO2)'
     max_rc: 4
#    wait_time_s: 30