このドキュメントでは、Natural をバッチモードで実行する場合の特殊な考慮事項について説明します。次のトピックについて説明します。
Natural では、2 つの処理モードを区別しています。
(Natural スタジオを使用する)対話式モード
バッチモード
2 つのモードの主な違いは、対話式モードでは、コマンドとデータがユーザーによりキーボードから入力され、出力が画面に表示されることです。バッチモードでは、ユーザーが介入することなく、入力がファイルから読み取られ、出力がファイルに書き込まれます。
Natural がバッチジョブとして実行されている場合、バッチジョブを実行したユーザーが Natural を操作する必要ありません。バッチジョブは、順番の決まった入力データを受け取って順番に実行されるプログラムで構成されます。
バッチモードは、大量のデータを定期的に処理する場合に便利です。
バッチモードは、パラメータ BATCHMODE
を使用してアクティブ化されます。
バッチモードでNatural セッションを開始するには
以下に示すように、ダイナミックパラメータ BATCHMODE
で Natural を起動します。
natural BATCHMODE
上記の呼び出し(BATCHMODE
パラメータのみが指定されている場合)では、必要な入出力チャネルがコンフィグレーションユーティリティで定義済みであるとみなされます。入出力チャネルについて詳しくは、このセクションで後述する「バッチモードでの Natural の使用」を参照してください)。パラメータファイル内のバッチモードに関連するプロファイルパラメータの詳細については、『コンフィグレーションユーティリティ』ドキュメントの「バッチモード」を参照してください。
また、必要な入出力チャネルをダイナミックパラメータとして上記の呼び出しに追加することもできます。これについては、このセクションの「バッチモードのサンプルセッション」で後述します。上記の呼び出しでダイナミックパラメータとして指定された入出力チャネルは、パラメータファイル内のチャネル定義を上書きします。
出力チャンネルとして定義されているファイルをチェックします。終了時には、このファイルには、セッションが正常に終了したことを示すメッセージが含まれている必要があります。
バッチモードの Natural セッションは、セッション中に次のいずれかを検出すると終了します。
注意:
バッチ入力ファイルで入力終了条件が発生すると、バッチセッションも終了します。この場合、出力チャネルとして定義されたファイルに、予期しない終了を示すメッセージが含まれています。
バッチモードで Natural セッションを開始するには、ダイナミックパラメータ BATCHMODE
を指定する必要があります。さらに、入出力チャネルは以下で説明するように定義する必要があります。
重要:
バッチモードでは、入力チャネル CMSYNIN
および/または CMOBJIN
、ならびに出力チャネル CMPRINT
が常に必要です。
以下では次のトピックについて説明します。
バッチモードには次のパラメータを使用できます。
パラメータ | 説明 |
---|---|
CMSYNIN |
Natural プログラムの実行中に INPUT ステートメントによって読み込まれる Natural コマンドとデータ(オプション)を含むバッチ入力ファイルを定義します。
|
CMOBJIN |
INPUT ステートメントで読み取るデータを含むバッチ入力ファイルを定義します。このデータは、該当する RUN または EXECUTE コマンドの直後に、パラメータ CMSYNIN で定義されたファイルに配置することもできます。
|
CMPRINT |
Natural プログラムの DISPLAY 、PRINT および WRITE ステートメントから得られた出力のバッチ出力ファイルを定義します。
|
CMPRTnn |
セッション中に実行される任意の Natural プログラムによって参照される追加レポートの出力ファイルを定義します。nn は、DISPLAY 、PRINT 、または WRITE ステートメントで使用されているレポート番号に対応する 01~31 の 2 桁の 10 進数です。
|
CMWRKnn |
セッション中に実行される任意の Natural プログラムによって参照されるワークファイルを定義します。nn は、READ WORK
FILE または WRITE WORK
FILE ステートメントで使用されている番号に対応する 01~32 の 2 桁の 10 進数である必要があります。
|
NATLOG |
パラメータ CMPRINT で定義されたバッチ出力ファイルに書き込むことができなかったメッセージを記録するために使用します。バッチモードで NATLOG を有効にすることをお勧めします。
|
以下のパラメータは、入力ファイルのエンコードおよび出力ファイルのエンコードに使用されるコードページを指定するために使用されます。
パラメータ | 説明 |
---|---|
CPSYNIN |
コマンドのバッチ入力ファイルのエンコードに使用するコードページを指定します。このファイルは、パラメータ CMSYNIN で定義されます。
|
CPOBJIN |
データのバッチ入力ファイルのエンコードに使用するコードページを指定します。このファイルは、パラメータ CMOBJIN で定義されます。
|
CPPRINT |
バッチ出力ファイルのエンコードに使用するコードページを指定します。このファイルは、パラメータ CMPRINT で定義されます。
|
CMSYNIN
および CMOBJIN
に対するエンコード:
入力ファイル CMSYNIN
または CMOBJIN
のいずれかにコードページが指定されている場合、入力ファイルのデータはこのコードページを使用してエンコードされているとみなされます。
入力ファイル CMSYNIN
または CMOBJIN
のいずれかにコードページが指定されていない場合、入力ファイル内のデータは、Natural パラメータ CP
で指定されたデフォルトのコードページを使用してエンコードされているとみなされます。
Natural パラメータ CP
でコードページが指定されていない場合、入力ファイルのデータは現在のシステムコードページを使用してエンコードされているとみなされます。
CMPRINT
に対するエンコード:
出力ファイル CMPRINT
にコードページが指定されている場合、出力データはこのコードページを使用してエンコードされます。
出力ファイル CMPRINT
にコードページが指定されていない場合、出力データは、Natural パラメータ CP
で指定されたデフォルトのコードページを使用してエンコードされます。
Natural パラメータ CP
でコードページが指定されていない場合、出力データは現在のシステムコードページを使用してエンコードされます。
エンコード/デコードが失敗した場合(例えば、ファイルのエンコードに使用されるコードページに含まれていない文字が CMPRINT
に書き込まれた場合)、バッチジョブはスタートアップエラー 42(バッチモードドライバエラー)で終了し、エンコード/デコードエラーが発生したファイルが示されます。
特に、これらの各パラメータでは、コードページとして UTF-8 を指定することができることに注意してください。これにより、UTF-8 でエンコードされた Unicode データの読み取りと書き込みが可能になります。
この例では、バッチモードで Natural を起動する方法を説明します。単純な Natural プログラムが実行され、データ項目がバッチ入力ファイルから取得されます。この項目が INPUT
ステートメントで処理された後、続く DISPLAY
ステートメントによってデータがバッチ出力ファイルに書き込まれます。続いて、Natural が終了します。
この例では、ライブラリ SYSEXBAT
に保存されているプログラム RECCONT
を使用しています。
注意:
このライブラリに保存されているオブジェクトの詳細については、ライブラリ SYSEXBAT
内のテキスト A-README
を参照してください。
サンプルセッションが、次のコールによって呼び出されます。
natural BATCHMODE CMSYNIN=cmd.txt CMOBJIN=data.txt CMPRINT=out.txt NATLOG=ALL
注意:
このコールでは、すべてのファイルが現在のディレクトリにあり、出力がこのディレクトリに書き込まれることを想定しています。ファイルが別のディレクトリにある場合、または出力を別のディレクトリに書き込む場合は、パスを指定する必要があります。
上記の呼び出しのパラメータを以下で説明します。
BATCHMODE
パラメータ
BATCHMODE
はバッチモードを有効にし、システム変数の値*DEVICE
をBATCH
に設定します。CMSYNIN=cmd.txt
バッチ入力ファイル cmd.txt は、ファイルシステムに保存されるテキストファイルです。このファイルの内容を以下に示します。ライブラリ
SYSEXBAT
へのログオン、Natural プログラムRECCONT
の実行、および Natural セッションの終了のための Natural システムコマンドが含まれています。LOGON SYSEXBAT EXECUTE RECCONT FINNatural プログラム
RECCONT
の内容は次のとおりです。DEFINE DATA LOCAL 1 #firstname (A10) 1 #lastname (A10) END-DEFINE INPUT (IP=OFF AD=M) #firstname #lastname DISPLAY #firstname #lastname ENDCMOBJIN=data.txt
RECCONT
プログラム内のINPUT
ステートメントは、バッチ入力ファイル data.txt で定義されたデータを使用します。これは、ファイルシステムに保存されているテキストファイルです。このファイルの内容を以下に示します。Ben % Smith注意:
パーセント文字(%)は、情報が次行に続くことを示します。CMPRINT=out.txt
プログラム
RECCONT
内のDISPLAY
ステートメントは、ファイルシステムで作成されたバッチ出力ファイル out.txt にデータを書き込みます。このファイルの内容を以下に示します。NEXT LOGON SYSEXBAT Logon accepted to library SYSEXBAT. NEXT EXECUTE RECCONT DATA Ben % DATA Smith Page 1 25.04.05 13:39:09 #FIRSTNAME #LASTNAME ---------- ---------- Ben Smith NEXT FIN NAT9995 Natural session terminated normally.NATLOG=ALL
上記のコールでサンプルセッションを呼び出すと、(バッチ入出力ファイルファイルの名前も含めて)すべてのタイプのメッセージを含むログファイルが作成されます。通常、ログファイルは、ローカルコンフィグレーションファイルに定義されている Natural の一時ディレクトリに作成されます。
NATLOG
パラメータの説明を参照してください。
次の図は、バッチモードで Natural が入力を読み取り出力を書き込むさまざまな方法を示しています。
上図に示すように、次のいずれかの手順に従います。
CMOBJIN および CMSYNIN
バッチ入力には異なるファイルが使用されます。あるファイルには Natural コマンドが含まれ、別のファイルにはデータが含まれます。
natural BATCHMODE CMSYNIN=cmd.txt CMOBJIN=data.txt CMPRINT=out.txt
CMSYNIN
バッチ入力には 1 つのファイルが使用されます。これには Natural コマンドとデータの両方が含まれています。
natural BATCHMODE CMSYNIN=data.txt CMOBJIN=data.txt CMPRINT=out.txt
注意:
使用されるバッチ入力ファイルは 1 つのみですが、パラメータ CMSYNIN
と CMOBJIN
の両方を指定する必要があります。両方のパラメータが同じファイルを参照する必要があります。
CMOBJIN および STACK
バッチ入力には 1 つのファイルが使用されます。これにはデータが含まれています。Natural コマンドは、プロファイルパラメータ STACK
を使用して指定します。
natural BATCHMODE CMOBJIN=data.txt STACK="(LOGON SYSEXBAT; RECCONT;FIN)"
システム変数 *DEVICE
は、Natural がバッチモードまたは対話式モードのどちらで実行されているかを示します。
モード | 説明 |
---|---|
バッチモード | *DEVICE には値 BATCH が含まれます。この値は、パラメータ BATCHMODE によって設定されます。
|
対話式モード | *DEVICE には BATCH 以外の値が含まれています。ほとんどの場合、値 VIDEO が含まれています。
|
例:
IF *DEVICE = "BATCH" THEN WRITE 'This is the background task' ELSE WRITE 'This is the interactive session' END-IF
Natural がバッチモードで実行されている場合は、一部の機能が使用できなくなるか、無効になります。
対話式入力または対話式出力はできません。
INPUT
ステートメントのデータのみを処理できます。
端末データベース SAGtermcap
はサポートされていません。そのため、別の文字セットに使用される端末機能 TCS はサポートされていません。別の文字セットを使用するには、代わりに環境変数 NATTCHARSET
を使用してください。
CMPRINT
で定義されたバッチ出力ファイルには、色およびビデオ属性は書き込まれません。
充填文字は INPUT
ステートメント内には表示されません。
特定の Natural システムコマンドはバッチモードで実行できないため、無視されます。『システムコマンド』ドキュメントには、この制限が適用される各システムコマンドに対応する注記が記載されています。
前述のバッチモードに加えて、バッチモードのシミュレートも可能です。ただし、バッチモードのシミュレーションではなく、バッチモードを使用することをお勧めします。バッチモードには、バッチモードシミュレーションと比較して次の利点があります。
キーワードデリミタモードがサポートされており、簡単なデータ入力が可能です。
構成可能なフォーマット済みの出力処理。
拡張エラー処理。
起動およびシャットダウンの高速化。
プログラムの実行の高速化。
入力チャネルがファイルにリダイレクトされる場合、Natural は入力コマンドとデータをキーボードからではなく、このファイルから読み取ります。端末で行うのとまったく同じ方法でデータを指定する必要があります。例えば、入力フィールドが 2 つあるの場合、2 つ目のフィールドに配置するには、最初のフィールドの末尾を空白で満たす必要があります。キーワードデリミタモードはサポートされていません。キーワードデリミタモードを使用するには、バッチモードシミュレーションの代わりにバッチモードを使用します。
出力チャネルがファイルにリダイレクトされると、Natural は画面に表示されるすべての出力をこのファイルに書き込みます。制御シーケンスもファイルに書き込まれるため、ファイルを読み取れなくなります。フォーマット済みの出力を取得するには、バッチモードシミュレーションではなくバッチモードを使用します。
Natural の起動時にダイナミックパラメータ BATCH
を使用して、システム変数 *DEVICE
を値 BATCH
に設定します。この値は Natural プログラムで確認できます。
natural BATCH < input-file-name
Natural は、この入力ファイルからすべての入力操作を受け取ります(この入力ファイルの例を以下に示します)。
natural BATCH < input-file-name > output-file-name
Natural レポートのみを保持し、他のすべての出力を非表示にする場合(NULL デバイスへの出力の書き込み)、プロファイルパラメータ MAINPR
を有効なプリンタ番号に設定し、パラメータファイル内の対応する論理プリンタ(デバイス)に実行可能ファイルを割り当て、次のように指定します。
natural BATCH < input-file-name > /dev/null
Natural レポートはすべて実行可能ファイルに書き込まれますが、画面出力は省略されます。入力ファイルは、Natural で入力がまったく必要ない場合でも指定する必要があります。この場合、NULL デバイスも使用できます。
dlist program *^M fin^M
バッチモードシミュレーションの入力ファイルには、対話式セッションで実行する同じキー入力が含まれている必要があります。
上記のサンプル入力ファイルでは、次のキー入力が使用されます。
d | [Direct Command]ウィンドウを開きます。 |
プログラムのリストを表示します。* | すべてのプログラムのリストの表示に使用される Natural システムコマンドを実行します。 |
^M | CTRL+M キーの組み合わせ(改行)の省略表記です。ENTER キーをシミュレートします。 |
FIN | Natural セッションの終了に使用される Natural システムコマンドを実行します。 |
^M | CTRL+M キーの組み合わせ(改行)の省略表記です。ENTER キーをシミュレートします。 |