このドキュメントでは、Natural をさまざまな IMS/TM 環境で実行する方法について説明します。
次のトピックについて説明します。
IMS/TM では異なる 3 種類の環境を提供します。
これらの各環境で Natural を使用するために、Natural IMS インターフェイスにはそれぞれの環境固有のインターフェイスが提供されています。 このようなインターフェイスの役割は、環境から入力(通常は端末入力メッセージ)を受信すること、受信した入力を処理するために Natural に渡すこと、および得られた出力を正しい宛先に(通常は端末出力メッセージ)返すことです。 このようにして、利用可能なすべての IMS 環境で Natural の機能を使用することができます。
異なるさまざまな環境で利用できるだけでなく、各環境では操作方法が異なります。
メッセージ処理リージョンでは、Natural オンライントランザクションは、以下のいずれかになります。
ダイアログ指向の Natural セッションは、IMS 画面との進行中の対話を確立します。 Natural との入出力メッセージは論理的に関連付けられ、ダイアログ手順全体を通じて、Natural は次の入力メッセージを正しく処理できるように情報を保存します。 ダイアログ指向の方法では、Natural は会話型トランザクションまたは非会話型トランザクションのいずれかとして実行することができます。
ダイアログ指向の環境では、Natural は、入力待ち(Wait-for-Input、WFI)トランザクションとして、および並列スケジュールオプションを指定して、複数のメッセージ処理リージョンで実行することができます。
ダイアログ指向環境で Natural を実行するには、ロールサーバーまたはロールファイルを使用する必要があります(「ロールファイルおよびロールサーバー」を参照)。
Natural IMS インターフェイスがエラー状態を検出すると、このエラー状態に関する情報を含むレコードが IMS ログファイルに書き込まれます(「リカバリ処理」を参照)。 したがって、Natural が実行されるすべての端末およびすべての Natural トランザクションコードは、Automated Operator Interface(AOI)を使用する /LOG コマンドの発行を認可されている必要があります。
メッセージ指向の Natural セッションは、IMS メッセージキューからの 3270 形式以外のメッセージを処理します。 入力メッセージは互いに無関係であると見なされます。またダイアログの一部ではありません。 メッセージ指向の方法では、Natural は非会話型トランザクションとして実行する必要があります。
バッチメッセージ処理リージョンでは、Natural は入力トランザクションコードを使用することによって IMS メッセージキューにアクセスすることができます。 バッチ指向の BMP リージョンでは、Natural はシンボリックチェックポイントおよび拡張再スタートをサポートしています。 入力メッセージの形式は 3270 以外の形式です。
BMP Natural はオフラインの DL/I バッチジョブとしても実行することができます。
IOPCB を利用できない場合は、すべての END TRANSACTION
および BACKOUT TRANSACTION
ステートメントが無視されます。
診断の目的で次の機能を利用することができます。プロファイルパラメータ TPF
=(1)
を指定して Natural が起動された場合、上記の事実を示す非公式の WTO メッセージが発行されます。
このセクションでは、ダイアログ指向の会話型環境にのみ有効な特別な点について説明します。
ダイアログ指向の会話型環境は、会話型 MPP インターフェイスによって実装されます。このインターフェイスは、Natural パラメータモジュールによって会話型 MPP フロントエンドにリンクされています。 このフロントエンドは IMS/TM アプリケーションプログラムで、割り当てられたトランザクションコードの入力メッセージが IMS/TM メッセージキューで利用できる場合に、IMS/TM によってスケジュールされます。
ダイアログ指向の会話型環境では、少なくとも 157 バイトに NRASTART
値を加えたスクラッチパッドエリア(SPA)が必要です。
ダイアログ指向の非会話型環境は、非会話型の MPP インターフェイスによって実装されます。このインターフェイスは、Natural パラメータモジュールによって非会話型 MPP フロントエンドにリンクされています。 このフロントエンドは IMS/TM アプリケーションプログラムで、割り当てられたトランザクションコードの入力メッセージが IMS/TM メッセージキューで利用できる場合に、IMS/TM によってスケジュールされます。
ダイアログ指向の非会話型環境を使用する場合は、SIP 機能を有効にした Natural 認可サービスマネージャおよび物理的な入力編集ルーチンが前提条件となります。
Natural 認可サービスマネージャは、IMS/TM SPA をシミュレートするために使用します。
物理的な入力編集ルーチンは、入力メッセージの前にトランザクションコードを挿入するために使用します。
以下では、同じ Natural サブシステム ID を指定する必要があります。
NIMPARM
マクロの SPATID
NIMPIXT
マクロの SPATID
認可サービスマネージャの起動パラメータ
次の環境を想定して、Natural IMS インターフェイスは NAT-B に対してメッセージ X'000500006D' を用意します。これは端末ユーザーが CLEAR キーを押したことを意味します。
IMS-A IMS-B ----- ----- MPP-A1 MPP-A2 MPP-A3 MPP-B1 MPP-B2 MPP-B3 ------ ------ ------ ------ ------ ------ DIRECT SWITCH NAT-A -----------------------------> NAT-B |
トランザクションコードテーブルに、2 つのエントリを作成する必要があります。1 つ目のエントリは NAT-A
、2 つ目のエントリは NAT-B
です。
これらの 2 つのエントリは Natural Reserved Area(NRA)に対して異なるオフセットを指定する必要があり、またこれらのエリアがオーバーラップしないようにする必要があります。
NAT-B
は、Natural セッションが通常の方法で IMS-B
で開始されることを検出し、セッション開始出口ルーチンに制御を与えます。 セッション開始出口ルーチンは入力メッセージで文字列 X'000500006D'
をチェックして、Natural から見た入力メッセージの長さを 0
に設定します。
追加のロジックが出口 NIIXSTAR
または出口 NIIXSSTA
のいずれかで提供されない場合は、Natural は IMS-B で新しいユーザーセッションを開始します。
IMS-A
および IMS-B
は、Natural に対して異なる専用ロールファイルが割り当てられていると想定します。
両方(またはそれ以上)の Natural セッションは、直接プログラム間の切り替えを実行するときに SPA でデータを転送することによって、互いに通信することができます。
しばらくの間、このような環境に複数の Natural セッションが存在する場合は、"アクティブ" なセッションのみが正しく終了します。
このセクションでは、IMS/TM 環境の Natural で使用するメッセージ指向のインターフェイスについて説明します。
このインターフェイスは、純粋なデータ入力メッセージを処理するように設計されています。つまり、メッセージは 3270 データストリームを示していません。 メッセージ指向のインターフェイスは、ユーザーが記述した Natural プログラムによって駆動されます。このプログラムが、入力メッセージの取得を目的として IMS メッセージキューにアクセスするようにインターフェイスに指示します。
メッセージ指向のインターフェイスが作成された目的は、非会話型で非端末駆動のトランザクションを、非会話型の MPP トランザクションとして実行できるようにすることです。
メッセージ指向のインターフェイスには、MPP および BMP インターフェイスの両方から機能が組み込まれています。 要求される処理の多くは BMP タイプのトランザクションをエミュレートするため、BMP インターフェイスが基盤として使用されます。
メッセージ指向のインターフェイスは端末指向ではないため、メッセージまたは画面イメージが自動的に生成されて端末に送信されることはありません。 Natural ニュークリアスにはバッチ環境で実行されていることが通知されるため、出力はプリンタ出力と解釈され、入力は
CMSYNIN
ファイルからの入力であると想定されます。 通常 CMPRINT
に書き込まれるすべての出力は、Natural プロファイルパラメータ SENDER
で指定された IMS/TM の宛先に送信されます。 詳細については、以下の「SENDER の宛先」を参照してください。
Natural が入力データの取得を試みたが、入力データが STACK
コマンドを介してアプリケーションから提供されていない場合、EOF は入力が存在しないことを示し、Natural は終了します。
サービスモジュール CMSNFPRT
を使用することによって、ランタイム時に SENDER
を新しい値に設定することができます。
チェックポイント処理を除いて、DL/I 用の Natural および DB2 用の Natural での処理は、BMP モードと同様になります。 これが必要な理由は、物理的な 1 つのスケジューリングによって複数の無関係な入力メッセージが処理される可能性があるからです(ほとんどの場合、こうなります)。 会話型の MPP インターフェイス環境では、1 つの Natural セッション中に処理されるすべてのトランザクション、およびこの Natural セッション内のすべての DL/I 要求は関連していると見なされ、データベースの位置および PCB 使用のメンテナンスが必要となります。 非会話型のインターフェイスでは、この DL/I 用の Natural のロジックは適用されません。
1 つのスケジューリング(また 1 つの Natural セッション)中に処理されるトランザクションは互いに関連していないため、ロールファイルの Natural セッション情報を保持する必要はありません。 このため、このインターフェイスにはロールデータセットを割り当てる必要はありません。
ロールスロットエリアは GETMAIN
を介して割り当てられ、すべての Natural コントロールブロックおよびワークエリアの格納に使用されます。
処理はメッセージごとに実行されるので、再配置ロジックは必要ありません。
メッセージ指向のインターフェイスでは、メッセージキューからのすべてのメッセージの取得はフロントエンドの Natural プログラムによって開始されます。 ユーザー固有の処理要件を満たすために、このプログラムはユーザーが記述する必要があります。 しかし、次に示すような特定の構造も必要です。
PROGRAM INITIALIZATION REPEAT CALL 'CMGETMSG' MESSAGE-AREA MESSAGE-LENGTH IF MSG-LL = 0 /* QC on GU to message queue TERMINATE FETCH RETURN PGMA MESSAGE-AREA REPEAT CALL 'CMGETSEG' MESSAGE-AREA MESSAGE-LENGTH IF MSG-LL = 0 /* QD on GN to message queue ESCAPE FETCH RETURN PGMB MESSAGE-AREA END-REPEAT END-REPEAT END
サービスモジュール CMGETMSG
は、最初のメッセージセグメントを読み込みます。 サービスモジュール CMGETSEG
は、他のすべてのメッセージセグメントを読み込みます。
Natural は CMSYNIN
からの入力を読み込むことができないため、Natural スタックを入力に使用する必要があります。 この処理は、Natural プロファイルパラメータ STACK
を使用して行われます。
Natural を終了する前にアプリケーションが IMS メッセージキューにアクセスする処理は、ユーザーが行います。 これを行わないと、Natural トランザクションは異常終了し、メッセージキューに対する GU が実行されていないことを示す IMS アベンドコード 462 が表示されます。
異常終了の場合でもこれらの Natural メッセージを取得するには、最初の代替 PCB を EXPRESS PCB として定義することをお勧めします。
メッセージ指向の環境は、NTRD インターフェイスによって実装されます。このインターフェイスは、Natural パラメータモジュールによって NTRD フロントエンドにリンクされています。 このフロントエンドは、直接 IMS/TM によって、または NIMBOOT マクロで生成されたブートストラップモジュールを介して呼び出すことができます。
IMS/TM によって直接呼び出される場合、このフロントエンドは IMS/TM によってスケジュールされる IMS/TM アプリケーションプログラムです(割り当てられたトランザクションコードに対する入力メッセージを IMS/TM メッセージキューで利用できる場合)。
必要な STACK
パラメータを含む Natural プロファイルを使用することをお勧めします。 Natural パラメータモジュールで PROFILE=PROGRAM
を指定し、インターフェイスが起動されたトランザクションコードと同じ名前でプロファイルを作成します。 こうすることで、使用されるトランザクションコードごとに異なる STACK
を持つ異なるプロファイルを使用する柔軟性を得ることができます。
ブートストラップモジュールを介して呼び出す場合、このブートストラップモジュールは IMS/TM によってスケジュールされる IMS/TM アプリケーションプログラムです(割り当てられたトランザクションコードに対する入力メッセージを IMS/TM
メッセージキューで利用できる場合)。 このブートストラップモジュールは、一連のダイナミックプロファイルパラメータを提供します。その 1 つは STACK
プロファイルパラメータで、このブートストラップモジュールの生成中に名前が指定される NTRD フロントエンドを呼び出します。 多様なダイナミックプロファイルパラメータ設定で Natural を呼び出す場合は、さまざまなブートストラップモジュールを生成し、それぞれに独自のダイナミックプロファイルパラメータ文字列を使用する必要があります。
これらのブートストラップモジュールは、それぞれ一意の名前でリンクされている必要があります。 また、得られる各ロードモジュールに一意の IMS/TM トランザクションコードを割り当てる必要があります。
バッチメッセージ処理(BMP)環境は、BMP インターフェイスによって実装されます。このインターフェイスは、Natural パラメータモジュールおよびワークファイル/出力ファイルアクセスルーチン NATWKFO
によって、BMP フロントエンドにリンクされています。 このフロントエンドは、BMP JCL で指定された IMS/TM アプリケーションプログラムです。
標準の Natural バッチは、バッチメッセージ処理リージョンで実行されます。 標準の Natural バッチ実行と比較して、オプションの入力データセット CONTROL
を使用することができます。
オプションの BMP CONTROL
ファイルには、最大 2 つの入力カードが含まれています。
1 つ目の入力カードには、次のキーワードパラメータが含まれています。
キーワード | 意味 |
---|---|
ENV-TAB= |
使用する環境テーブルの名前。 |
TRNCODE= |
使用するトランザクションコードの名前。TRNCODE パラメータの説明を参照してください。
|
ENV-TAB=ENVBMP0 TRNCODE=NATIMS
CONTROL
ファイルの 2 つ目の入力カードには、ダイナミックな Natural パラメータが含まれています。
ダイナミックな Natural パラメータを渡すために CMPRMIN
データセットも使用する場合は、CONTROL
の入力が CMPRMIN
の入力に追加されます。 これは、CONTROL
で指定されたパラメータが CMPRMIN
で指定されたパラメータを上書きすることを意味します。
CONTROL
ファイルを使用しない場合、環境テーブルの名前は使用されるトランザクションコード(トランザクション指向の BMP)、または使用される PSB 名(バッチ指向の BMP)に対応するトランザクションコードテーブルのエントリによって決定されます。
WRITE (n)
ステートメントを使用すると、異なるプリンタで最大 31 の異なるレポートを、同じ Natural プログラム内に作成することができます。 レポートは、Natural パラメータモジュールで、または Natural DEFINE PRINTER (n)
ステートメントを使用して指定された IMS 端末に送信されます。 レポートを制御する NTPRINT
マクロで AM=IMS
を指定する必要があります。
このステートメントを使用するには、同じ Natural プログラム内に作成する並列レポートの数と同数の追加の代替 TP-PCB を PSB に定義し、WRKPCB パラメータを使用してトランザクションコードテーブルで追加の代替 TP-PCB の数を指定します。
注意: 1 つ目の代替 TP-PCB は Natural IMS インターフェイスによって使用されることに注意してください。 |
ダイアログ指向の環境で WRITE (n)
ステートメントを使用するときは、次の制限が適用されます。
レポートの生成は、1 つ以上の画面 I/O にまたがって実行することはできません。 画面 I/O 後に同じプリンタを使用する場合は、CLOSE PRINTER (n)
ステートメントを使用して、画面 I/O の前にプリンタを明示的に閉じる必要があります。
レポートの作成には、NTPRINT
マクロの次のキーワードサブパラメータが関連しています。
パラメータ | 意味 |
---|---|
AM |
"IMS" に設定する必要があります。 |
DEST
|
IMS/TM の宛先を指定します。 |
BLKSIZE
|
宛先に送信されるバッファのサイズを指定します。 レポート行がバッファされます。 |
DRIVER
|
レポートの作成に使用するドライバを指定します。 利用できる値のリストについては、Natural/IMS インターフェイスパラメータモジュールの PRTDRIV パラメータを参照してください。 ドライバは、フォームフィードの場所(レポートの開始位置、終了位置、開始位置と終了位置の両方、またはフォームフィードなし)、ページの開始位置(1 行目、または NII 2.2 との互換性のために 2 行目)、およびレポートの出力場所(SCS
プリンタまたは非 SCS プリンタ)を決定します。 さらに、JES API を使用することを指定できます。
|
これらのパラメータは、JES API を使用する場合のみ評価されます。 |
IMS/TM プリンタ(つまり、AM=STD
で定義されたプリンタ)の NTPRINT
マクロまたは PRINT
プロファイルパラメータ定義の OPEN
および CLOSE
のサブパラメータには常にデフォルトを使用することを強くお勧めします。 つまり、OPEN
および CLOSE
に対して値を指定しないか、またはデフォルトの OPEN=ACC
および CLOSE=CMD
を使用してください。
これは、OPEN
および CLOSE
の他のオプションを使用して、異なるアクセス方式に対して NATPARM
に静的にプリンタを定義した場合、および AM=IMS
でアクセス方式をダイナミックに上書きする場合に特に重要です。 この場合、常に AM=IMS、OPEN=ACC、CLOSE=CMD
を同時に指定してください。
注意:
アクセス方式が上書きされても、NTPRINT
オプションはダイナミックに指定された PRINT
オプションとマージされます。
非デフォルト値を使用すると発生する可能性がある問題
OPEN=OBJ
を使用すると、OUTPUT
オプションを DEFINE PRINTER
ステートメントで指定している場合に、間違った出力先に出力されたり、NAT8211
エラーが発生する場合があります。 OPEN=OBJ
を指定すると、OUTPUT
の上書きが評価される前にプリンタが開かれ、使用されるプリンタの出力先は OUTPUT
オプションで指定された場所ではなく、PRINT
パラメータで指定された場所になります。
CLOSE=FIN
を指定すると、プリンタは CLOSE PRINTER
時ではなく FIN
時に閉じられます。 これは、GU がメッセージキューに発行され、宛先が TP PCB でリセットされた後に、CLOSE
が来る場合があることを意味します。 このために、IMS/TM ステータスコード QF
(MPP)または A3
(BMP および OBMP/NTRD)に対して NII エラー NII3641
が発生します。 CLOSE=CMD
を指定すると、プリンタは CLOSE PRINTER
ステートメントで実際に閉じられます。
IMS/TM プリンタに書き込まれたレポートは、次の GU 呼び出しで(つまり端末 I/O 時または CMGETMSG
を介して)、IMS/TM によって暗黙的に閉じられます。 つまり、IMS/TM はプログラムの CLOSE PRINTER
または DEFINE PRINTER
ステートメントに関係なくレポートを出力します。
Natural に対してはプリンタは開いた状態で、同じレポート番号を持つ次の WRITE
ステートメントがすでに出力されたレポートを続行するため、NAT1518
エラーが発生します。
DEFINE PRINTER (1) WRITE (1) 'line 1' INPUT 'Press ENTER' or CALL 'CMGETMSG' (both issue a GU) WRITE (2) 'line 2'
INPUT
/CMGETMSG
は "物理的"に プリンタを閉じ、IMS/TM は行 'line 1'
を含むレポートを出力します。
プリンタは Natural に対して "論理的には" 開いているために、行 'line 2'
は新しいレポートを開始せず、宛先が GU 呼び出しによって削除されるためにエラー NAT1518
が発生します。
このため、次のルールを守ることを強くお勧めします。
注意: GU の後に同じ番号のレポートが継続された場合は CLOSE PRINTER ステートメントが必要です。 |
DEFINE PRINTER
ステートメントは暗黙の終了を実行します。この場合、CLOSE PRINTER
ステートメントは使用されません。例えば次のようになります。
正しいステートメント | 正しいステートメント | 誤ったステートメント(NAT1518) |
---|---|---|
REPEAT DEFINE PRINTER (1) WRITE (1) INPUT LOOP |
DEFINE PRINTER (1) REPEAT WRITE(1) CLOSE PRINTER (1) INPUT LOOP |
DEFINE PRINTER (1) REPEAT WRITE(1) INPUT LOOP |
ステートメント SET CONTROL 'N'
(端末コマンド %N
)は IMS/TM 環境では適用されません。 IMS/TM 環境で使用すると、次の論理出力画面が妨げられます。
TS=ON
が Natural セッションで指定されると、IMS/TM における Natural メッセージはすべて大文字に変換されます。
メッセージ指向(NTRD)およびサーバー(SRVD)環境において、通常は CMPRINT
に書き込まれるすべての出力は、Natural プロファイルパラメータ SENDER
で指定された宛先に送信されます。 SENDER
を指定する場合は、出力が IMS メッセージキューを介して送信される有効な IMS/TM の宛先(通常は LTERM
)を指定するか、または次の予約値のいずれかを指定します。
値 | 意味 |
---|---|
*WTO |
Natural 出力は宛先コード 11(プログラマ情報)で WTO を使用して、ジョブログに送信されます。 |
*MTO |
Natural 出力は /BROADCAST MASTER コマンドを使用して、IMS マスタコンソールに送信されます。
|
*PRINTnn |
Natural 出力は Natural プリンタ nn に書き込まれます。つまり、出力は内部の WRITE(nn) を使用して書き込まれます。
出力ファイルは各出力行後に閉じられ、各出力行の改行制御文字は空白になります。 |
注意:
/BROADCAST MASTER
コマンドが失敗すると(例えば認証問題のため)、WTO を使用してエラーメッセージが発行され、現在のメッセージを含むすべての Natural メッセージがジョブログに送信されます。 つまり、SENDER
の宛先は内部的に *WTO
に設定されます。
*PRINT nn
の場合には、AM=STD
で定義されたプリンタのみを使用することを強くお勧めします。
SENDER
の宛先をコード化することを強くお勧めします。 これにより、Natural の初期化が失敗した場合でも(Adabas エラー NAT3048
または NAT3148
などのため)、宛先は見つかります。
SENDER
の宛先をダイナミックに指定する必要がある場合は、予約値を一重引用符で囲む必要があります(例えば SENDER='*WTO'
)。
Natural プロファイルパラメータ PROGRAM
は、ダイアログ指向の環境および BMP 環境でサポートされています。
BMP 環境では、パラメータ PROGRAM
は、標準の z/OS バッチ環境と同じように動作します。 XNIIBACK
という名前を使った例が NIIvrs.SRCE
データセットで提供されています。 起動されたバックエンドプログラムは Natural IMS インターフェイスに戻るようになっています。
ダイアログ指向の環境では、Natural プロファイルパラメータ PROGRAM
は、BMP 環境を含む他の Natural 環境とは動作が少し異なります。
プロファイルパラメータ PROGRAM
または Natural サブプログラム CMPGMSET
で指定される名前は、IMS トランザクションコードの名前です。
Natural セッションがエラーなく終了した場合のみ、指定されたトランザクションコードが起動します。
TERMINATE
ステートメントで提供されるデータは、起動された IMS トランザクションに入力メッセージとして渡されます。