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

バッチモードでの Natural

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


バッチモードについて

Natural では、次の 2 つの処理モードが区別されます。

2 つのモードの主な違いは、次のとおりです。対話式モードでは、コマンドとデータはユーザーがキーボードから入力し、出力は画面に表示されます。 バッチモードでは、ユーザーの操作なしに、入力はファイルから読み取られ、出力はファイルに書き込まれます。

Natural をバッチジョブとして実行する場合は、バッチジョブをサブミットしたユーザーと Natural との対話は不要です。 バッチジョブは、順番の決まった入力データを受け取って順番に実行されるプログラムで構成されます。

バッチモードは、大量のデータ処理を定期的に行う場合に便利です。

Top of page

バッチモードの Natural セッションの開始

バッチモードをアクティブにするには、パラメータ BATCHMODE を使用します。

Start of instruction setNatural セッションをバッチモードで開始するには

  1. 次のようにダイナミックパラメータ BATCHMODE を使用して、Natural を起動します。

    natural BATCHMODE

    上記の呼び出し(BATCHMODE パラメータのみの指定)は、必要な入力および出力チャネルがコンフィグレーションユーティリティですでに定義されていることを前提にしています。 入力および出力チャネルの詳細については、このセクションで後述する「バッチモードでの Natural の使用」を参照してください。 パラメータファイル内のバッチモード関連プロファイルパラメータの詳細については、『コンフィグレーションユーティリティ』ドキュメントの「バッチモード」を参照してください。

    必要な入力および出力チャネルをダイナミックパラメータとして上記の呼び出しに追加することもできます。 これについては、このセクションで後述する「バッチモードのサンプルセッション」で示します。 上記の呼び出しでダイナミックパラメータとして指定された入力および出力チャネルは、パラメータファイル内のチャネル定義を上書きします。

  2. 出力チャネルとして定義されているファイルを確認します。 このファイルの末尾に、セッションが正常に終了したことを示すメッセージが含まれている必要があります。

Top of page

バッチモードの Natural セッションの終了

バッチモードの Natural セッションは、セッション中に次のいずれかを検出すると終了します。

注意:
バッチ入力ファイルで入力終了条件が発生した場合も、バッチセッションは終了します。 この場合は、出力チャネルとして定義されているファイルに、予期しない終了を示すメッセージが含まれます。

Top of page

バッチモードでの Natural の使用

Natural セッションをバッチモードで開始するには、ダイナミックパラメータ BATCHMODE を指定する必要があります。 さらに、入力および出力チャネルを定義する必要があります(下記参照)。

重要:
入力チャネル CMSYNIN または CMOBJIN と出力チャネル CMPRINT は、バッチモードに常に必要です。

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

入力および出力チャネル

バッチモードでは、次のパラメータを使用できます。

パラメータ 説明
CMSYNIN Natural コマンドを含むバッチ入力ファイル(およびオプションで Natural プログラムの実行中に INPUT ステートメントによって読み込まれるデータ)を定義します。
CMOBJIN INPUT ステートメントによって読み込まれるデータを含むバッチ入力ファイルを定義します。 このデータは、関連する RUN または EXECUTE コマンドの直後に、パラメータ CMSYNIN で定義されたファイルに配置することもできます。
CMPRINT Natural プログラムの DISPLAYPRINT、および WRITE ステートメントから生成される出力用のバッチ出力ファイルを定義します。
CMPRTnn セッション中に実行される Natural プログラムによって参照される追加のレポート用の出力ファイルを定義します。 nn は、DISPLAYPRINT、または 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 のエンコード:

CMPRINT のエンコード:

エンコード/デコードに失敗すると(例えば、ファイルのエンコードに使用されたコードページに含まれていない CMPRINT に文字が書き込まれる場合)、バッチジョブはエンコード/デコードエラーが発生したファイルを示すスタートアップエラー 42(バッチモードドライバエラー)で終了します。

これらの各パラメータで、特に、UTF-8 をコードページとして指定することができます。 これにより、UTF-8 でエンコードされた Unicode データの読み書きが可能になります。

Top of page

バッチモードのサンプルセッション

この例は、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
FIN

Natural プログラム RECCONT には、以下の内容が含まれます。

DEFINE DATA
LOCAL
  1 #firstname   (A10)
  1 #lastname    (A10)
END-DEFINE
INPUT (IP=OFF AD=M) #firstname #lastname
DISPLAY #firstname #lastname
END
CMOBJIN=data.txt

プログラム RECCONTINPUT ステートメントは、バッチ入力ファイル data.txt で定義されたデータを使用します。 これは、ファイルシステムに保存されるテキストファイルです。 このファイルの内容を以下に示します。

Ben %
Smith

注意:
文字 "%" は、情報が次の行に続くことを示します。

CMPRINT=out.txt

プログラム RECCONTDISPLAY ステートメントは、ファイルシステムに作成されたバッチ出力ファイル 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 がバッチモードで入力の読み取りおよび出力の書き込みを行うさまざまな方法を示しています。

Batch mode

上の図に示されているように、以下のいずれかの方法で続行できます。

Top of page

バッチモード検出

システム変数 *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

Top of page

バッチモードの制限事項

Natural をバッチモードで実行している場合は、以下のような制限があります。

Top of page

バッチモードで Natural マップおよびダイアログを使用するためのヒント

アプリケーションがバッチモードでも対話式モードでも実行できるように設計されている場合は、以下の点を考慮する必要があります。

Natural 内では、入力データを読み込む方法が 2 つあります。

バッチモードでは、INPUT ステートメントを使用してデータを処理する必要があります。ダイアログではバッチモードでデータを処理できません。 ダイアログではデータを移動したり制御したりする端末コマンドもサポートされません。 それでも、ダイアログをバッチモードで実行できます。 ただしこの場合は、ダイアログを以下の方法で変更する必要があります。

Top of page