INCLUDE copycode-name [operand1 99]
|
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
INCLUDE
ステートメントは、コピーコードタイプの外部オブジェクトのソース行を別のオブジェクトにコンパイル時に取り込みます。
INCLUDE
ステートメントはコンパイル時に評価されます。 コピーコードのソース行は、INCLUDE
ステートメントを含むプログラムのソース行に、物理的に組み込まれるわけではありません。プログラムのコンパイル時に組み込まれた結果が、オブジェクトモジュールとなります。
注意:INCLUDE
ステートメントを含むソースコード行に、他のステートメントは指定できません。
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | ステートメント参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | A | U | 不可 | 不可 |
構文要素の説明:
copycode-name |
copycode-name には、挿入するソースを持つコピーコードの名前を指定します。 copycode-name にはアンパサンド(&)を含むことができます。この文字はコンパイル時に Natural システム変数 指定するオブジェクトは、コピーコードタイプにする必要があります。 コピーコードは、 コピーコードのソースが変更された場合、その変更をオブジェクトコードに反映させるには、変更したコピーコードを使用する全プログラムを再コンパイルする必要があります。 コピーコードのソースコードは構文的に完全なステートメトで構成されている必要があります。 |
---|---|
operand1 |
組み込むコピーコードの値をダイナミックに挿入できます。 この値は operand1 で指定します。 コピーコードでは、値は次の表記で参照されます。 &n& つまり、値が挿入される位置を コピーコード内の各 1つのコピーコードパラメータ( 文字列を、空白を入れずに 1 つまたは複数のコピーコードパラメータに続けることができます( 注意:
|
** Example 'INCEX1': INCLUDE (include copycode) ************************************************************************ * WRITE 'Before copycode' * INCLUDE INCEX1C * WRITE 'After copycode' * END
** Example 'INCEX1C': INCLUDE (copycode used by INCEX1) ************************************************************************ * WRITE 'Inside copycode'
Page 1 05-01-25 16:26:36 Before copycode Inside copycode After copycode
** Example 'INCEX2': INCLUDE (include copycode with parameters) ************************************************************************ DEFINE DATA LOCAL 1 EMPL-VIEW VIEW OF EMPLOYEES 2 NAME END-DEFINE * * INCLUDE INCEX2C 'EMPL-VIEW' 'NAME' '''ARCHER''' '20' '''BAILLET''' * END
** Example 'INCEX2C': INCLUDE (copycode used by INCEX2) ************************************************************************ * Transferred parameters from INCEX2: * * &1& : EMPL-VIEW * &2& : NAME * &3& : 'ARCHER' * &4& : 20 * &5& : 'BAILLET' * * READ (&4&) &1& BY &2& = &3& DISPLAY &2& IF &2& = &5& WRITE 5X 'LAST RECORD FOUND' &2& STOP END-IF END-READ * * Statements above will be completed to: * * READ (20) EMPL-VIEW BY NAME = 'ARCHER' * DISPLAY NAME * IF NAME = 'BAILLET' * WRITE 5X 'LAST RECORD FOUND' NAME * STOP * END-IF * END-READ
Page 1 05-01-25 16:30:43 NAME -------------------- ARCHER ARCONADA ARCONADA ARNOLD ASTIER ATHERTON ATHERTON ATHERTON AUBERT BACHMANN BAECKER BAECKER BAGAZJA BAILLET LAST RECORD FOUND BAILLET
** Example 'INCEX3': INCLUDE (using nested copycodes) ************************************************************************ DEFINE DATA LOCAL 1 #A (I4) END-DEFINE * MOVE 123 TO #A WRITE 'Program INCEX3 ' '=' #A * INCLUDE INCEX31C '#A' '5' /* source line is #A := 5 * * MOVE 300 TO #A WRITE 'Program INCEX3 ' '=' #A * INCLUDE INCEX32C '''#A''' '''20''' /* source line is #A := 20 * WRITE 'Program INCEX3 ' '=' #A END
** Example 'INCEX31C': INCLUDE (copycode used by INCEX3) ************************************************************************ * Transferred parameters from INCEX3: * * &1& : #A * &2& : 5 * * &1& := &2& * WRITE 'Copycode INCEX31C' '=' &1&
** Example 'INCEX32C': INCLUDE (copycode used by INCEX3) ************************************************************************ * Transferred parameters from INCEX3: * * &1& : '#A' * &2& : '20' * * WRITE 'Copycode INCEX32C' &1& &2& * INCLUDE INCEX31C &1& &2&
Page 1 05-01-25 16:35:36 Program INCEX3 #A: 123 Copycode INCEX31C #A: 5 Program INCEX3 #A: 300 Copycode INCEX32C #A 20 Copycode INCEX31C #A: 20 Program INCEX3 #A: 20
** Example 'INCEX4': INCLUDE (with concatenated parameters in copycode) ************************************************************************ DEFINE DATA LOCAL 1 #GROUP 2 ABC(A10) INIT <'1234567890'> END-DEFINE * INCLUDE INCEX4C '#GROUP.' 'ABC' 'AB' * END
** Example 'INCEX4C': INCLUDE (copycode used by INCEX4) ************************************************************************ * Transferred parameters from INCEX4: * * &1& : #GROUP. * &2& : ABC * &3& : AB * * WRITE '=' &2& /* 'ABC' results into ABC WRITE '=' &1&ABC /* '#GROUP.' ABC results into #GROUP.ABC WRITE '=' &1&&2& /* '#GROUP.' 'ABC' results into #GROUP.ABC WRITE '=' &1&&3&C /* '#GROUP.' 'AB' C results into #GROUP.ABC
Page 1 05-01-25 16:37:59 ABC: 1234567890 ABC: 1234567890 ABC: 1234567890 ABC: 1234567890