このステートメントは、Con-nect または Con-form がインストールされている場合にのみ使用できます。
COMPOSE |
[RESETTING-clause] |
[MOVING-clause] |
[ASSIGNING-clause] |
[FORMATTING-clause] |
[EXTRACTING-clause] |
複数の節を指定した場合、これらの節は上記の順序で処理されます。
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
COMPOSE
ステートメントでは、Con-form(Con-nect 内のテキストフォーマッタ)によるテキストのフォーマットを、Natural プログラムから直接開始します。
フォーマットするテキストは、変数を使用して提供するか、または Con-nect テキストブロック(Con-form フォーマットコマンドを含むドキュメント)から取得できます。
Natural 変数の内容は、フォーマットするテキストにダイナミックに組み込む変数として Con-form に渡すことができます。
また、Con-form 変数に含まれている値は、テキストフォーマッタから Natural プログラムに返すこともできます。
Con-form の手続きが完了すると(ドキュメントがフォーマットされると)、出力は次の場所のいずれかに渡されます。
Natural レポート
Con-nect システムファイル内のドキュメント
COMPOSE
ステートメントを実行する Natural プログラム内の変数
Natural 以外のプログラム
RESETTING-clause | この節は、テキストフォーマットバッファエリアからの情報を削除して、CSIZE によって割り当てられた COMPOSE バッファからメモリを解放します。 「RESETTING 節」を参照してください。
|
---|---|
MOVING-clause | この節は、テキスト行をテキストフォーマッタバッファエリアに移動、またはフォーマッタに直接移動して、フォーマットされたテキスト出力をフォーマッタのワークスペースから取得します。 「MOVING 節」を参照してください。 |
ASSIGNING-clause | この節は、Natural 変数をテキスト変数に割り当てます。 「ASSIGNING 節」を参照してください。 |
FORMATTING-clause | この節は、テキストおよび Con-form ステートメントを組み合わせた入力を使用して、最終的なフォーマット形式(正しい改行と改ページを含む)でテキストを作成します。 「FORMATTING 節」を参照してください。 |
EXTRACTING-clause | この節は、テキスト変数の値を Natural 変数に割り当てます。 「EXTRACTING 節」を参照してください。 |
RESETTING |
DATAAREA |
||||
TEXTAREA |
|||||
MACROAREA |
|||||
ALL |
この節は、テキストフォーマットバッファエリアから次のものを削除します。
注意:
互換性に関する理由から、キーワード TEXTAREA
は、MOVING
節で使用されるものと同じフォーマッタの "データエリア" を表します。
この節は、1 つ以上のテキスト値をテキストフォーマットバッファエリアに移動します(「構文 1」)。 このエリアは、フォーマット操作の入力ソースとして使用できます。 テキストフォーマッタが現時点で入力待ちになっている場合(「ダイアログモード」を参照)、テキストは Con-form のテキストエリアには格納されずに、フォーマッタに直接渡されます(「Syntax 1」と「構文 2」)。 ソース入力は、LAST
オプションで終了します。 フォーマットされたテキストが現時点で出力待ちになっている場合は(「ダイアログモード」を参照)、MOVING
節の構文 3 を使用して、Natural プログラムからフォーマッタに制御を戻します。 ステータス変数の詳細については、「FORMATTING
節」を参照してください。
ダイアログモードのステータスに応じて、MOVING
節を次の形式のいずれかで使用できます。
MOVING
節の構文 1 は、フォーマットがまだ始まっていない場合、またはフォーマッタが入力用のダイアログモードで入力(最初のステータス変数である TERM
)を待っている場合に適しています。
MOVING [operand1] 37 [TO DATAAREA ] [LAST ] [STATUS [TO ] operand2 [operand3 [operand4 [operand5]]]]
|
MOVING
節の構文 2 は、フォーマッタが入出力両用のダイアログモードで追加の入力(最初のステータス変数である TERM
)を待っている場合に適しています。 このモードでは、フォーマッタは複数行の入力を受け入れません。
実行コンテキストは、一連の COMPOSE
ステートメントを実行する間に変化することがあります。 したがって、フォーマッタが入力待ちの場合でも、出力変数を再指定する必要があります。
MOVING |
[operand1] [TO DATAAREA ]
|
[OUTPUT ] TO VARIABLES operand6 20
|
||
LAST |
||||
[STATUS [TO ] operand2 [operand3 [operand4 [operand5]]]]
|
MOVING
節の構文 3 は、フォーマッタが出力用(および同時に入力用の可能性もあり)のダイアログモードで、出力(最初のステータス変数内である STRG
)を Natural プログラムに渡す場合に適しています。
MOVING OUTPUT [TO VARIABLES ] operand6 20 [STATUS [TO ] operand2 [operand3 [operand4 [operand5]]]]
|
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | A | A | N | P | 可 | 不可 | |||||||||||
operand2 | S | A | 可 | 可 | |||||||||||||||
operand3 | S | B | 可 | 可 | |||||||||||||||
operand4 | S | B | 可 | 可 | |||||||||||||||
operand5 | S | B | 可 | 可 | |||||||||||||||
operand6 | S | A | A | 可 | 不可 |
Operand2 は、フォーマット/長さ A4 で定義する必要があります。 Operand3、operand4、および operand5 は、フォーマット/長さ B4 で定義する必要があります。
この節は、値を Con-form テキスト変数に割り当てます。 これらのテキスト変数は、フォーマット操作の中で後で参照できます。
テキスト変数名は、大文字で指定する必要があります。
ASSIGNING [TEXTVARIABLE ] {operand1=operand2}, 19
|
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | A | 可 | 不可 | ||||||||||||||
operand2 | C | S | A | N | P | 可 | 可 |
この節では、フォーマットされた出力が Con-form によって生成されます。
フォーマットオプションは、1 つ以上の副節で指定します。 副節を省略すると、Con-form によってデフォルトのフォーマットオプションが適用されます。 ステータス変数は、ダイアログモードで使用されます。
FORMATTING |
OUTPUT-subclause | |||||
INPUT-subclause | ||||||
STATUS-subclause | ||||||
PROFILE-subclause | ||||||
MESSAGES-subclause | ||||||
ERRORS-subclause | ||||||
ENDING-subclause | ||||||
STARTING-subclause |
OUTPUT-subclause | 出力メディア。 Natural レポート、Con-nect キャビネット、1 つ以上の Natural 変数(または Natural 変数の配列)、または Natural 以外のプログラムを、出力メディアにすることができます。 「OUTPUT 副節」を参照してください。 | |
---|---|---|
INPUT-subclause | 入力メディア。 Con-nect ドキュメント、COMPOSE データエリア(「MOVING 節を参照)、COMPOSE ステートメントを実行する Natural プログラムの環境(「MOVING 節を参照)、Natural プログラム、またはこれらの 4 つを混合したものを、入力メディアにすることができます。
|
|
STATUS-subclause |
フォーマット操作のステータス。 フォーマット操作では、 フォーマット処理の間に、次の変数が Natural プログラムに渡されます。 |
|
State | ダイアログモードで入力の準備ができている場合は TERM 。
|
|
ダイアログモードで出力の準備ができている場合は STRG 。
|
||
フォーマット処理が正常に完了した場合は END 。
|
||
フォーマット処理が正常に完了しなかった場合は ENDX 。
|
||
Position | フォーマットしているドキュメントのページ番号と行番号。 ページ番号と行番号は、2 つの変数(ページ位置と行位置)で別々に保持されます。 | |
Amount of Output Data | Natural プログラムに渡されるフォーマット済み出力の行数。 フォーマッタは、値が挿入される次の出力変数へのポインタとしてこの番号を使用します。 この値は、出力行が発行されると 1 ずつ増加します 現在の値が範囲外にある場合、値は 1 に設定されます。 | |
PROFILE-subclause | 入力処理の前に処理されるテキストブロック。 | |
MESSAGES-subclause | 警告メッセージと統計情報の出力、およびエラー処理を制御します。 | |
ERRORS-subclauses | ||
ENDING-subclause | 「ENDING 副節」を参照してください。 | |
STARTING-subclause | 「STARTING 副節」を参照してください。 |
この副節を使用すると、Con-form でフォーマットされたテキストの出力先を指定できます
この副節を省略すると、デフォルトの出力デバイスとして Natural のメインプリンタが使用されます。
OUTPUT |
(rep) | ||
SUPPRESSED |
|||
CALLING operand1
|
|||
TO VARIABLES [CONTROL operand2
operand3]operand4 20
|
|||
DOCUMENT-option |
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | A | 可 | 不可 | ||||||||||||||
operand2 | C | S | A | 可 | 不可 | ||||||||||||||
operand3 | C | S | A | 可 | 不可 | ||||||||||||||
operand4 | S | A | A | 可 | 不可 |
構文要素の説明:
OUTPUT (rep) |
出力先をプリンタに指定し(レポート番号が 0 ではない)、Con-nect プリンタプロファイルが Con-nect API 関数 Z-DRIVER によってすでにロードされている場合、そのプロファイルの設定は、フォーマットされる出力テキストのテキスト強調表示オプションを制御するために使用されます。 プリンタプロファイルがアクティブであり、論理フォームフィードの制御を指定していなかった場合は、Natural ニュークリアスの適切な内部機能を使用して改ページが挿入されます。 現在アクティブになっている Con-nect プロファイルに反映されていないその他のテキスト強調表示オプションは、すべて無視されます。 注意: 出力先をレポート 0 に指定するか、またはプリンタプロファイルがアクティブでない場合は、出力処理の役割が Con-nect から Natural ニュークリアスルーチンに渡されます。 この状況では、太字、下線、および斜体といったテキスト強調表示オプションのみが認識されます。 注意: |
---|---|
OUTPUT SUPPRESSED | このオプションを指定すると、出力が SUPPRESSED されます。
|
OUTPUT CALLING | 「Natural 以外のプログラム」セクションを参照してください。 |
OUTPUT TO VARIABLES |
通常、フォーマットしたテキストは、最終的なフォーマット形式で Natural 変数の配列に渡されます。 各行は変数に格納されます(必要に応じて、変数に適合するように行は切り捨てられます)。 テキスト強調表示オプションは無視されます。ただし、例外として、
Operand2 と operand3 は、フォーマット/長さを A1 にする必要があります。 詳細については、「ダイアログモード」を参照してください。 |
OUTPUT DOCUMENT | 下記の「DOCUMENT オプション」を参照してください。 |
DOCUMENT |
INTO |
FINAL
|
[CABINET ] operand1 [PASSW= operand2]
|
||||||
INTERMEDIATE |
|||||||||
[GIVING ]
|
operand3 [operand4] | ||||||||
operand4 [operand3] |
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | A | 可 | 不可 | ||||||||||||||
operand2 | S | A | 可 | 不可 | |||||||||||||||
operand3 | S | B | 可 | 可 | |||||||||||||||
operand4 | S | B | 可 | 可 |
Operand3 (フォーマット/長さ B10)はフォーマッタによって使用され、ユニークキーをドキュメントから Natural プログラムに戻します。 このオプションは、互換性保持のためにのみサポートされています。
Operand4 (フォーマット/長さ B4)はフォーマッタによって使用され、フォーマットされた出力ドキュメントを指す ISN を Natural プログラムに戻します。 この ISN は、Con-nect API の連続的な呼び出しでドキュメントを参照する場合に有用です。
operand1(長さは最大 8 文字まで)を指定しなかった場合、ドキュメントは現在のユーザーのキャビネットに追加されます(現在アクティブな Natural ユーザー ID と同じ ID を持つキャビネットに追加)。
現在想定されているユーザー ID でアクセスできないキャビネットにドキュメントを保存する場合は、パスワード(最大 8 文字まで)を指定する必要があります。
Con-form は Con-nect アクセス制限の準拠を強化し、Con-nect に定義済みのキャビネット ID だけを受け入れます。
注意:
キャビネット ID は、大文字で指定する必要があります。
ドキュメントは、ドキュメント名なしで COMPOSE フォルダに追加されます。 タイトル行には、COMPOSE FORMATTING
ステートメントを実行するプログラムの名前が、実行の日時とともに挿入されます。
キーワード INTERMEDIATE
を省略すると、ドキュメントは最終的なフォーマット形式のテキストで作成されます。 この場合、太字や斜体などの特定のテキスト強調表示オプションは無視されます。
INPUT |
DATAAREA |
FROM |
EXIT operand2 |
9 | |||||
CABINETS operand2 [PASSW= operand3]
|
|||||||||
operand1FROM |
EXIT operand2 |
10 | |||||||
CABINETS operand2 [PASSW= operand3]
|
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | A | 可 | 不可 | ||||||||||||||
operand2 | C | S | A | 可 | 不可 | ||||||||||||||
operand3 | S | A | 可 | 不可 |
この副節は、テキストフォーマッタに入力を提供するソースを指定します。 入力は、1 つ以上の MOVING
操作によって値を挿入する必要がある Con-form のデータエリア(データエリアとダイアログモードからのテキストを組み合わせることも可能)から取得されるか、またはテキストブロック(operand1 で指定)から取得されます。 テキストブロックは、Con-nect キャビネットに含まれているか、または Natural 以外のプログラム によって提供されます。 テキストブロックは、CALL
ステートメントに適用されるものと同じ構文を使用して呼び出します。 Con-nect キャビネットまたは Natural 以外のプログラムの階層を指定すると、operand1 で指定したテキストブロックを見つけるために各階層が順番にスキャンされます。
現在想定されているユーザー ID でアクセスできないキャビネットにドキュメントを保存する場合は、パスワードを指定する必要があります。
Con-form は Con-nect アクセス制限の準拠を強化し、Con-nect に定義済みのキャビネット ID だけを受け入れます。
この副節を省略すると、Con-form データエリアが処理されます。
注意:
キャビネット ID と テキストブロック ID は、大文字で指定する必要があります。
[STATUS operand1 [operand2 [operand3 [operand4]]]]
|
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Operand1 | S | A | 可 | 不可 | |||||||||||||||
Operand2 | S | B | 可 | 不可 | |||||||||||||||
Operand3 | S | B | 可 | 不可 | |||||||||||||||
Operand4 | S | B | 可 | 不可 |
構文要素の説明:
operand 1 | Status 変数 "State" を含みます。 |
---|---|
operand 2 | Status 変数 "Position(ページ番号)" を含みます。 |
operand 3 | Status 変数 "Position(行番号)" を含みます。 |
operand 4 | Status 変数 "Amount of Output Data" を含みます。 |
PROFILE operand1 |
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | A | 可 | 不可 |
この副節を使用すると、指定したテキストブロックの内容が、INPUT-subclause で指定されている入力よりも先に処理されます(デフォルトでは、テキストブロックがプロファイルとして処理されることはありません)。
MESSAGES |
[LISTED ] [ON ] (rep)
|
||
SUPPRESSED |
警告メッセージと統計情報は、フォーマットが完了すると表示されます。 SUPPRESSED
を指定すると、メッセージは表示されず、またエラーは無視されます。
ERRORS |
[LISTED ] [ON ] (rep)
|
||
INTERCEPTED |
この副節は、フォーマットエラーが発生した場合に実行されるアクションを指定します。 エラーは単に無視されるだけですが、Natural の標準エラー処理ルーチンによって処理されるか、または Natural レポート(rep)に出力されます。
注意:
エラーとメッセージは相互に排他的です。 異なるオプションを指定していた場合でも、一部のエラーでは Natural の標準エラー処理ルーチンが呼び出されます。 DEFINE PRINTER (n) OUTPUT 'CONNECT'
ステートメントによって出力先が Con-nect システムになっているレポートを、エラーまたはメッセージの出力先に指定することはできません。
ENDING |
[AT ] [PAGE ] operand1 |
||
AFTER operand1 [PAGES ]
|
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | N | P | 可 | 不可 |
この副節を使用すると、指定した番号の後にあるページでのフォーマット済みテキストの出力を抑制したり、フォーマットされた出力の量を指定したページ数に制限できます。
STARTING [FROM ] [PAGE ] operand1 |
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | N | P | 可 | 不可 |
この副節を使用すると、指定した番号(operand1)のページに到達するまで、フォーマットされたテキストの出力が抑制されます。
EXTRACTING [TEXTVARIABLE ] {operand =operand2}, 19
|
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | S | A | N | P | 可 | 可 | |||||||||||||
operand2 | C | S | A | 可 | 不可 |
この節は、テキスト変数の値を Natural 変数に割り当てます。 テキスト変数の現在の設定は、前のフォーマット操作の結果によるものです。
テキスト変数名は、大文字で指定する必要があります。
COMPOSE
ステートメントの FORMATTING
節が実行されると、フォーマット処理が開始されます(MOVING
節によるテキスト入力を行おうとしたが、まだその入力が行われていない場合でも開始されます)。 フォーマット処理がアクティブな間は、COMPOSE MOVING
ステートメントの実行によって生じるテキスト入力は、フォーマッタのワークスペースに直接送られます(この入力は、後で別のフォーマットプロセスに再使用することはできません)。 フォーマット処理が非アクティブな場合、テキスト入力は中間にある "DATAAREA" の COMPOSE
バッファに格納されます。 したがって、入力を複数のフォーマット処理で再使用できます。
フォーマッタのバッファは Natural プログラムの最後ではクリアされないため、個々の COMPOSE
ステートメントを 1 つの Natural プログラムの中で実行する必要はありません。これらのステートメントは、連続して呼び出される複数のプログラムの中で発行できます。
RESETTING
節や FORMATTING
節が実行されるか、または重大なフォーマットエラーが発生すると、進行中のフォーマット処理は終了します。
入力終了(EOI)は、MOVING
節の LAST
副節で指定します。
入力ソースとして Con-nect ドキュメントを指定した場合は、ドキュメントの終点に到達すると、そこが入力終了であるとみなされます。
注意:
フォーマット処理が所定の処理ステップにおいて常に適切なステータスであることを、FORMATTING
または MOVING
節の STATUS
副節を使用して確認することをお勧めします。
ダイアログモード処理は、入力のフォーマット中および出力の生成中に、ユーザープログラムとフォーマッタの間で実行される一連の対話です。
ダイアログモードを使用すると、ユーザープログラムで、入力階層の任意のレベルにあるフォーマッタに未加工テキストを入力として提供できます。 また、このモードは、フォーマットされた出力を現在のプログラム環境に直接受け入れます。
対話を行うには、フォーマット処理を一連のステップに再分割します。各ステップは、COMPOSE
ステートメントによって別々に呼び出されます。
入力テキストのソースが DATAAREA
であるか、またはフォーマット制御ステートメント .TE ON
に到達したときに、Con-form のデータエリアに処理するデータがそれ以上ない場合は、入力用のダイアログモードに入ります。 入力用のダイアログモードは、最初の STATUS
変数にあるワード TERM
によって通知されます。
ユーザープログラムでは、その後処理される COMPOSE
ステートメントの MOVING
関数を呼び出し、要求された入力を提供することによって、応答する必要があります。 MOVING
節の LAST
オプションを指定するか、または MOVING
関数からのテキストと同様に .TE ON
によって端末入力が呼び出された場合は .TE OFF
を指定することによって、ユーザープログラムは端末入力を終了できます。 フォーマッタでは、フォーマット処理の終了を END
または ENDX
(最初のステータス変数にエラーがある場合)を使用して通知します。
出力先を TO VARIABLES
に指定すると、出力用のダイアログモードに入ります。 提供された Natural 変数に値が挿入されるか、または改ページに到達すると(いずれか先に発生した方)、制御がフォーマッタから Natural プログラムに戻されます。 出力用のダイアログモードは、最初の
STATUS
変数にあるワード STRG
によって通知されます。 ユーザープログラムは、Natural 変数に挿入されたフォーマット済み出力を取得して、その後処理される COMPOSE MOVING
ステートメントで Natural 変数の別のセットを出力先に指定することによって、応答する必要があります。 フォーマット処理の終了は、END
または ENDX
(最初のステータス変数にエラーがある場合)で示されます。
注意:
ダイアログモードを使用する場合(「INPUT 副節
」と「OUTPUT 副節
」を参照)、通常はフォーマット操作を複数の COMPOSE
ステートメントに分散して実行します。
入力と出力処理を組み合わせたダイアログモードに入ることができます。 したがって、フォーマッタによって追加入力が要求されるか(TERM
で示される)、またはフォーマッタによって出力が提供されると(STRG
で示される)、Natural プログラムでは適切なアクションを実行する必要があります。
入力と出力処理を組み合わせたダイアログモードに入ると、フォーマッタで一度に受け入れられる入力は 1 行だけになります。 入力モードのみの場合は、一度に複数の行が受け入れられます。
一連の COMPOSE MOVING
の実行を含む COMPOSE FORMATTING
ステートメントによってダイアログモードに入ったことが示される場合は、次のことに注意してください。
COMPOSE ASSIGNING
と COMPOSE EXTRACTING
ステートメントは、ダイアログモードがアクティブな間は有効です。
COMPOSE RESETTING
と FORMATTING
は、すべてのフォーマット処理を直ちに強制終了します。
FORMATTING
節で指定したパラメータに応じて、入力と出力は Natural 以外のプログラムで処理されます。 このようなプログラムは、CALL
ステートメント内で使用されているのと同じメカニズムによって呼び出されます。
COMPOSE
は、標準のリンケージ規則を使用してこれらのプログラムとパラメータを交換します(CICS 環境ではダイナミックロードは不可)。
注意:
Natural 以外のプログラムによる入力または出力処理は、メインフレームコンピュータ上でのみ可能です。他のプラットフォームでは COMPOSE
ステートメントの該当する部分は無視されます。
フォーマット処理のステータスに応じて、フォーマッタと Natural 以外のプログラムの間で 2 つまたは 3 つのパラメータの受け渡しが行われます。
パラメータ 1(フォーマット/長さ A1) | ファンクションコードが、フォーマッタから Natural 以外のプログラムに渡されます。 設定可能値: | |
---|---|---|
I | 開始(入力、出力)。 | |
O | ドキュメントをオープン(入力)。 | |
R | ドキュメントの 1 行を読み取り(入力)。 | |
W | 出力の 1 行に書き込み(出力)。 | |
C | ドキュメントをクローズ(入力)。 | |
T | 終了(入力、出力)。 | |
パラメータ 2(フォーマット/長さ B1) |
レスポンスコードが Natural 以外のプログラムからフォーマッタに渡されます。 設定可能値: |
|
X'00' | 機能が正常に完了しました。 | |
X'01' | 機能 O への応答:ドキュメントが見つかりませんでした。 | |
機能 R への応答:ドキュメントの終点に到達しました。 | ||
X'FF' | 機能が完了していません。 | |
パラメータ 3(フォーマット A1/256) | 機能 O と W の場合、こらのパラメータはフォーマッタから Natural 以外のプログラムに渡されます。 ただし、機能 R からのパラメータは、Natural 以外のプログラムからフォーマッタに渡されます。 | |
バイト 1~2 | このパラメータの長さ n を表します。 | |
バイト 3~4 | 空きです。 | |
バイト 5~n | 機能 O:ドキュメント名。 | |
機能 R:Natural 以外のプログラムによって読み取られる行。 | ||
機能 W:フォーマッタからの出力の行。 | ||
フォームフィードが必要な場合は出力の先頭に 出力を Natural 以外のプログラムに渡す場合は、テキストを強調表示する太字や斜体などの特定のオプションは無視されます。 |
COMPOSE RESETTING ALL FORMATTING INPUT 'TEXT' FROM CABINET 'TLIB' OUTPUT (1) MESSAGES LISTED ON (0)
上記の COMPOSE
ステートメントでは、レポート 1 上に生成される Con-nect キャビネット TLIB 内のテキストブロック TEXT
をフォーマットして出力します。 エラーおよび統計メッセージは、レポート 0(デフォルトプリンタ)に表示されます。
COMPOSE RESETTING ALL COMPOSE MOVING '.FI ON' 'This is an example' COMPOSE MOVING 'for use of Con-form from' 'within Natural applications' LAST COMPOSE FORMATTING
上記の COMPOSE
ステートメントは、レポート 0(デフォルトプリンタ)にフォーマットされたテキストを出力します。
COMPOSE ASSIGNING 'VAR1' = 'Text1', 'VAR2' = 540
上記の COMPOSE
ステートメントは、Con-nect プロシージャの Con-form テキスト変数 &VAR1
と &VAR2
に値を割り当てます。
XYLIB
内のテキストブロック XYZ
:
.FI ON Dear Mr &name., .IL I am pleased to invite you to a presentation of our new product &prod..
Natural プログラム:
... INPUT #NAME (A32) #PROD (A32) COMPOSE ASSIGNING 'NAME' = #NAME, 'PROD' = #PROD FORMATTING INPUT 'XYZ' FROM CABINET 'XYLIB' OUTPUT (1) MESSAGES SUPPRESSED ...
プログラムによって生成された入力マップ:
#NAME Davenport #PROD Natural 4.2
出力結果:
Dear Mr Davenport, I am pleased to invite you to a presentation of our new product Natural 4.2.
この例は、入力と出力処理を組み合わせたダイアログモードでのフォーマット処理を示しています。 このプログラム例では、Con-form の行単位のフォーマットモードを開始して、一部のコマンドと変数を Con-form に渡し、ステータス情報とフォーマットされた出力行を画面に表示するサブルーチンを実行します。
DEFINE DATA LOCAL 01 #LINES_PER_PERFORM(P5) /* counts repeat-loops per PERFORM CNF_OUT 01 #TRACE(A1) INIT<'N'> /* if 'Y' displays additional trace-infos 01 #OUT_FORM(A1) INIT<'F'> /* output-format 01 #START_PAGE (P3) INIT<1> /* beginning of display 01 #CNTR (P5) /* Loop-Counter 01 #STATI /* Status-Information 02 #STATUS (A4) /* can be STRG TERM END or ENDX 02 #PAGE (B4) /* actual page-number 02 #LINE (B4) /* actual line-number on page (not .tt/.bt) 02 #NO_LINES (B4) /* number of lines returned 02 REDEFINE #NO_LINES 03 #NO_LINES_I (I4) 01 #OUTPUT(A30/4) /* output of formatted line 01 #INDEX (P3) /* index as pointer to out line END-DEFINE * SET KEY ALL SET CONTROL 'M9' INPUT 008/008 'Demonstration of formatted output to Variable'(I) / 08X 'Enter page to start display :' #START_PAGE(AD=MIL) / 08X 'Display additional trace-data ?:' #TRACE(AD=MIT) / 08X 'Please select the output-format:' #OUT_FORM(AD=MIT) '(F=Final without BP/US-marks' / 44X 'M=Final with BP/US-marks "<>"' / 09X '(only, if CMF-Zap 2056 applied =>) I=Intermediate)' / 50X 'PF3=Exit'(I) * IF *PF-KEY EQ 'PF3' SET CONTROL 'MB' STOP END-IF * IF NOT (#OUT_FORM EQ 'F' OR EQ 'M' OR EQ 'I') REINPUT ' Please enter valid code!' MARK *#OUT_FORM ALARM END-IF * WRITE TITLE LEFT 'Stat * Page * Line * No.Lines >> Formatted Output'(I) / '-'(79)(I) * SET CONTROL 'MB' COMPOSE RESETTING ALL /* clear all con-form buffers RESET #NO_LINES * * start line-oriented formatting-mode here * starting from 0 DECIDE ON FIRST VALUE OF #OUT_FORM VALUE 'F' COMPOSE FORMATTING OUTPUT TO VARIABLES #OUTPUT (1:4) /* to Output STATUS #STATUS #PAGE #LINE #NO_LINES /* get Status VALUE 'M' COMPOSE FORMATTING OUTPUT TO VARIABLES CONTROL '<' '>' #OUTPUT (1:4) /* to output STATUS #STATUS #PAGE #LINE #NO_LINES /* get Status VALUE 'I' COMPOSE FORMATTING OUTPUT TO VARIABLES CONTROL 'I' 'N' #OUTPUT (1:4) /* to output STATUS #STATUS #PAGE #LINE #NO_LINES /* get Status NONE STOP END-DECIDE * RESET #NO_LINES * * put some commands to con-form to see something * COMPOSE MOVING '.pl 16;.hs 2;.tt 1Formatierung in Variable//;.tt 2//' /* Cmd OUTPUT TO VARIABLES #OUTPUT (1:4) /* to Output STATUS #STATUS #PAGE #LINE #NO_LINES /* get Status * COMPOSE MOVING '.fs 1;.bt Ende Seite #//;.fi on;.tb *=15' /* Commands OUTPUT TO VARIABLES #OUTPUT (1:4) /* to Output STATUS #STATUS #PAGE #LINE #NO_LINES /* get Status * * * loop 40-times, send commands to con-form and display output * COMPOSE ASSIGNING 'Wert' = '1-20' /* Assign value to variable &Wert * FOR #CNTR 1 40 /* Loop some time IF #STATUS NE 'TERM' /* no wait-for-input => error!!!! IF #STATUS EQ 'STRG' IGNORE ELSE WRITE 'Unexpected Status-code' #STATUS(AD=OI) 'found!' / 'Execution has stopped....' STOP END-IF END-IF * IF #CNTR EQ 21 COMPOSE ASSIGNING 'Wert' = '21-40' /* Assign a variable-value END-IF COMPOSE ASSIGNING 'CNTR' = #CNTR /* Again assignment COMPOSE MOVING '.BP;&Wert *Durchlauf &CNTR;.BR' /* Commands OUTPUT TO VARIABLES #OUTPUT (1:4) /* to Output STATUS #STATUS #PAGE #LINE #NO_LINES /* get Status PERFORM CNF-OUT /* show result END-FOR COMPOSE MOVING LAST /* End-Of-Processing OUTPUT TO VARIABLES #OUTPUT (1:4) /* to Output STATUS #STATUS #PAGE #LINE #NO_LINES /* get Status * IF #TRACE EQ 'Y' WRITE 'End of processing...'(I) END-IF * * Subroutines * PERFORM CNF-OUT * * Subroutine to display any waiting output from con-form * DEFINE SUBROUTINE CNF-OUT RESET #LINES_PER_PERFORM REPEAT UNTIL #STATUS EQ 'TERM' /* TERM = input waiting PERFORM BREAK /* do some break-processing AT BREAK OF #PAGE IF #PAGE GT #START_PAGE WRITE '-'(79)(I) END-IF IF #TRACE EQ 'Y' WRITE 'End of this page...'(I) END-IF NEWPAGE END-BREAK IF #PAGE GE #START_PAGE /* show line of output IF #NO_LINES_I GT 0 FOR #INDEX 1 #NO_LINES_I ADD 1 TO #LINES_PER_PERFORM /* count loops WRITE NOTIT NOHDR #STATUS '*' #PAGE '*' #LINE '*' #NO_LINES '>>' #OUTPUT (#INDEX) END-FOR END-IF END-IF IF #STATUS NE 'STRG' /* if no wait on out ESCAPE BOTTOM END-IF RESET #NO_LINES COMPOSE MOVING OUTPUT TO VARIABLES #OUTPUT (1:4) /* get Output STATUS #STATUS #PAGE #LINE #NO_LINES /* Status END-REPEAT * IF #TRACE EQ 'Y' WRITE 'Count of Lines per PERFORM was'(I) #LINES_PER_PERFORM(AD=OI) END-IF * END-SUBROUTINE SET CONTROL 'MB' END