INCLUDE copycode-name [operand1] |
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
INCLUDE ステートメントは、コピーコードタイプの外部オブジェクトのソース行を別のオブジェクトにコンパイル時に取り込みます。
INCLUDE ステートメントはコンパイル時に評価されます。コピーコードのソース行は、INCLUDE ステートメントを含むプログラムのソース行に、物理的に組み込まれるわけではありません。プログラムのコンパイル時に組み込まれた結果が、オブジェクトモジュールとなります。
注意:INCLUDE ステートメントを含むソースコード行に、他のステートメントは指定できません。
オペランド定義テーブル:
| オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 |
C | A | U | × | × | |||||||||||||||
構文要素の説明:
| 構文要素 | 説明 |
|---|---|
copycode-name |
コピーコード名:
指定するオブジェクトは、コピーコードタイプにする必要があります。コピーコードは、 コピーコードのソースが変更された場合、その変更をオブジェクトコードに反映させるには、変更したコピーコードを使用する全プログラムを再コンパイルする必要があります。 コピーコードのソースコードは構文的に完全なステートメトで構成されている必要があります。 |
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