バージョン 4.2.5
 —  オペレーション  —

バッチモードの Natural(すべての環境)

このドキュメントでは、Natural をバッチモードで実行する場合の全般的な考慮事項について説明します。

以下のトピックについて説明します。


Adabas データセット

Adabas データセットは、シングルユーザーモードでのみ指定する必要があります。 これらのデータセットは、Adabas を使用する通常のアプリケーションプログラムの実行に必要なものと同じです。 Adabas データセットの詳細については、関連する Adabas ドキュメントを参照してください。

Top of page

ソートデータセット

SORT ステートメントを含む Natural プログラムが Natural セッション中に実行される場合は、ソートデータセットを指定する必要があります。

要件は、オペレーティングシステムのソートプログラムを呼び出す通常の COBOL または PL/1 アプリケーションプログラムの実行要件と同じで、使用中のソートプログラムによって異なります。

Natural は、中間データセットの SORTIN および SORTOUT を必要としませんが、ユーザー出口ルーチンインターフェイスの E15 および E35 を経由してソートプログラムと通信します。

Top of page

バッチモード環境のサブタスクセッションサポート

注意:
CMS 対応 Natural では、サブタスクはサポートされていません。

目的

サブタスクサポートにより、1 つのアドレススペース内で複数の Natural バッチモードセッションを実行できます。 後続のジョブステップを実行するのではなく、1 つのアドレススペース内で並行処理できるので、スループットが飛躍的に向上します。

通常、クライアント/サーバーアプリケーションおよび製品でこの機能(Natural リモートプロシージャコールなど)を活用します。 複数のサーバーサブタスクを開始して、リモートクライアントと通信することができます。

前提条件

Natural ニュークリアスを再起動する場合は、Natural ニュークリアスがリエントラントモジュールとしてリンクされている(リンケージエディタオプション RENT)必要があります。

Adabas リンクルーチン(ADALNK)がリエントランシーサポートによって生成される必要があります。

機能

サブタスクを開始するには、Natural プログラムから CALL ステートメントを発行します。 拡張フロントエンドパラメータリストによって、新しい Natural セッション("サブタスク")が開始されます。 このリストには、以下に示す最大 3 つのパラメータセットが含まれます。

標準 I/O データセットの変数名(CMPRINT など)とバッチモードインターフェイス起動用の他のパラメータを、起動パラメータエリアの起動プログラムから渡すことができます。 標準 I/O データセットは、未定義またはダミーのデータセットにすることができます。また、1 つのセッションで所有することも、複数のセッションで共有することもできます。

さらに、Natural プログラムでユーザーパラメータエリアを読み取るために、CALL インターフェイスが用意されています。

Natural セッションの開始

拡張パラメータリスト

拡張パラメータリストがない Natural バッチモードインターフェイスでは、標準のリンケージコールを使用して、最初の制御をオペレーティングシステムから取得します。 レジスタ 1 は、最後のアドレスインジケータとして、高位ビットでアドレスをポイントします。 このアドレスは、以下のパラメータエリアの長さを含むハーフワードフィールドをポイントします。

拡張パラメータリストには、最大 3 つのパラメータアドレスが含まれます。 これは、最後のアドレス(最初、2 番目、または 3 番目のアドレス)の高位ビットで示されます。 すべてのパラメータアドレスは、以下のパラメータエリアのパラメータ長を含むハーフワードフィールドをポイントします。 長さ 0 は、パラメータエリアが存在しないことを示します。

起動パラメータエリア

同じリージョン内で複数のバッチモード Natural(サブ)タスクが実行されている場合は、デフォルトではこれらのセッションはまったく同じ Natural 標準 I/O データセット(CMPRINTCMSYNIN など)にアクセスします。これは、これらのファイル名の設定に使用できる Natural プロファイルパラメータがないためです。 また、デフォルトでは Natural システム変数の *INIT-ID*INIT-USER は、バッチモード用の定義なので同じです。

Natural サブタスクセッション用に一意の標準 I/O データセット名と一意の ID を指定するために、拡張パラメータリスト内の起動パラメータを使用して Natural システムのデフォルトを上書きできます。 起動パラメータエリアは、ペアの 8 文字フィールドから成るテーブルです。

キーワードと置換値は、必要に応じて末尾を空白で埋める必要があります。

有効なキーワードは以下のとおりです。

CMHCOPY 恒久的なハードコピーの出力先
CMSYNIN コマンド入力データセット名
CMOBJIN オブジェクト入力データセット名
CMPRINT 標準出力データセット名
CMPRMIN ダイナミックパラメータ入力データセット名
CMPLOG ダイナミックパラメータ出力データセット名
CMTRACE トレース出力データセット名
INITID ジョブステップ名(システム変数 *INIT-ID
MSGCLASS CMPRINT および CMTRACE のダイナミックアロケーションのスプールクラス(z/OS のみ)
NATRJE ジョブサブミットデータセット名(z/OS のみ)
STEPLIB プログラムロードライブラリ名(プロファイルパラメータ LIBNAM(ロードライブラリの名前)も参照。z/OS のみ)
SUBPOOL z/OS ストレージサブプール(0~127、右詰め)
USERID 最初のユーザー ID(システム変数 *INIT-USER

これらのエントリの使用は任意で、特定の指定順序はありません。 データセットの空白値は、このデータセットが使用できないか空であることを表します。

z/VSE に関する注意事項:

デフォルトでは、すべての出力(CMPRINTCMHCOPYCMTRACE、および CMPLOG の結果)は SYSLST に送信されます。 SYS で始まるこれらのファイルの上書き指定は、z/VSE システム番号の上書きと見なされます。 可能なフォーマットは SYSnnn です。nnn000099 の範囲の 3 桁の番号で、無効な番号 nnn を指定すると無視されます。

ユーザーパラメータエリア

ユーザーパラメータエリアのフォーマットはフリーです。 ユーザーパラメータエリアは、特殊な CALL インターフェイスによって任意の Natural プログラムからアクセスできます(「ユーザーパラメータエリアへのアクセス」を参照)。

サブタスクの開始

Natural プログラムで以下のコールインターフェイス使用して、同じアドレススペースでサブタスクを開始できます。

PGMNAME 制御を取得する Natural ニュークリアス名(必須)。 同じニュークリアスで再起動するには、先頭の文字にアスタリスクを指定します。 実際のニュークリアス名がこのフィールドに返されます。
NATPARML Natural ダイナミックパラメータエリア
STRPARML 起動パラメータエリア
USRPARML ユーザーパラメータエリア

すべてのパラメータエリアは、以下のパラメータの長さで開始する必要があります。 以下に、CMTASK の使用例を示します。

例:

DEFINE DATA LOCAL
01 PGMNAME (A8) INIT <'*'>
01 PARM1
02 NATPARML (I2) INIT <30>
02 NATPARMS (A30) INIT <'INTENS=1,IM=D,STACK=MYPROG'>
01 PARM2
02 STRPARML (I2) INIT <32>
02 STRPARM1 (A16) INIT <'CMPRINT SYSPRINT'>
02 STRPARM2 (A16) INIT <'CMPRMIN MYPARMS'>
01 PARM3
02 USRPARML (I2) INIT <80>
02 USRPARMS (A80) INIT <'special user parameters'>
END-DEFINE
CALL 'CMTASK' PGMNAME NATPARML STRPARML USRPARML
END

サンプルプログラム ASYNBATSYSEXTP ライブラリ内にあります。

ユーザーパラメータエリアへのアクセス

起動時に渡されたユーザーパラメータエリアは、以下の CALL ステートメントを使用して、任意の Natural プログラムから読み取ることができます。

CALL 'CMUPARM' USRPARML USRPARMS

USRPARML は、USRPARMS エリアの長さ(I2)(呼び出し前)と、返されたデータの長さ(呼び出し後)です。 USRPARMS はパラメータデータエリアです。

返されるデータの長さがエリアの長さを超える場合は、データはエリアの長さに合わせて切り捨てられます。 以下のリターンコードが返されます。

0 データは正常に移動されました。
4 データは移動されましたが切り捨てられました。
8 データを使用できません。
12 長さの値が正の値ではありません。
16 パラメータ数が不足しています。

サンプルプログラム GETUPARMSYSEXTP ライブラリ内にあります。

Top of page