- ある定義に TEMPLATE キーワードが指定されている場合、テンプレート名およびそのテンプレート名のサブフィールドは、以下の形でのみ使用することができます。
- LIKE キーワードのパラメーターとして
- LIKEDS キーワードのパラメーターとして (テンプレートがデータ構造の場合)
- %SIZE 組み込み関数のパラメーターとして
- %ELEM 組み込み関数のパラメーターとして
- 定義仕様書の %LEN 組み込み関数のパラメーターとして (名前付き定数、初期設定値など)
- 定義仕様書の %DECPOS 組み込み関数のパラメーターとして (名前付き定数、初期設定値など)
- INZ キーワードは、テンプレート・データ構造に使用することができます。
これによって、INZ(*LIKEDS) キーワードを介して、テンプレートの LIKEDS 定義で使用される初期設定値を設定できるようになります。
図 1. TEMPLATE 定義の例 * Define a template for the type of a NAME
D standardName S 100A VARYING TEMPLATE
* Define a template for the type of an EMPLOYEE
D employee_type DS QUALIFIED TEMPLATE INZ
D name LIKE(standardName)
D INZ('** UNKNOWN **')
D idNum 10I 0 INZ(0)
D type 1A INZ('R')
D years 5I 0 INZ(-1)
* Define a variable like the employee type, initialized
* with the default value of the employee type
D employee DS LIKEDS(employee_type)
D INZ(*LIKEDS) * Define prototypes using the template definitions
*
* The "id" parameter is defined like a subfield of a
* template data structure.
D getName PR LIKE(standardName)
D idNum
D findEmp PR N
D emp LIKEDS(employee_type)
D id LIKE(employee_type.idNum)
D CONST