定義仕様書の TEMPLATE キーワードに関する規則:

  1. ある定義に TEMPLATE キーワードが指定されている場合、テンプレート名およびそのテンプレート名のサブフィールドは、以下の形でのみ使用することができます。
    • LIKE キーワードのパラメーターとして
    • LIKEDS キーワードのパラメーターとして (テンプレートがデータ構造の場合)
    • %SIZE 組み込み関数のパラメーターとして
    • %ELEM 組み込み関数のパラメーターとして
    • 定義仕様書の %LEN 組み込み関数のパラメーターとして (名前付き定数、初期設定値など)
    • 定義仕様書の %DECPOS 組み込み関数のパラメーターとして (名前付き定数、初期設定値など)
  2. 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