SEWB+/CONSTRUCTION アプリケーション開発ガイド

[目次][用語][索引][前へ][次へ]

7.9.9 @@expand文

形 式
@@expand 可変記号 [修飾名 [,位置] ]
     [ PREFIX=文字定数] [SUFFIX=文字定数]
     [ START=開始値] [UP=増分値]
     [ START_POSITION=開始位置]
     [ {VALUE | NOVALUE} ] ;
[ ]は省略できることを表します。
{ }は項目のどちらか一つを記述することを表します。

機 能
データ定義のレコードの生成を指示するときに使用します。

規 則
  • 言語種別がC,またはCOBOLの場合に指定する。
  • 言語種別がCOBOLの場合,レコード定義を参照するデータ定義が指定できる。
  • 可変記号名は@@interface文のATTRでデータ定義種別を指定した可変記号を指定する。
  • 修飾名は,データ定義識別子がRECORD_NAMEでなければならない。
  • データ定義で結合項目またはレコード定義ファイルが複数指定されている場合,生成したい結合項目またはレコード定義ファイルの位置(データ定義で指定した結合項目の順序)を指定する。すべての結合項目およびレコード定義ファイルをレコード生成の対象にする場合,結合項目の位置を省略する。
(例)
データ定義で指定した2番目の結合項目のレコード生成を行う。
@@expand @入力ファイル[レコード名,2];
  • PREFIXには,生成するデータ項目名の先頭に付ける文字列を文字定数で指定する。
  • SUFFIXには,生成するデータ項目名の末尾に付ける文字列を文字定数で指定する。
  • PREFIXおよびSUFFIXの指定は,言語種別がCOBOLでデータ項目名がFILLERの場合,無視される。
  • レベル番号の開始値または増分値の指定がない場合,データ定義で定義された開始値または増分値で展開される。
  • STARTは,言語種別がCOBOLの結合項目のレコード生成のときだけ有効である。ほかの場合は無視する。なお,COBOLのレコード定義ファイルのレコード生成の場合は,レコード定義ファイルで指定されたレベル番号で生成される。
  • STARTには,COBOL言語のレベル番号の開始値を数値定数または可変記号で指定する。開始値は1~49の範囲で指定する。
  • UPは,言語種別がCOBOLのときだけ有効である。多言語の場合は無視する。
  • UPには,COBOL言語のレベル番号の増分値を数値定数または可変記号で指定する。増分値は1~48の範囲で指定する。
  • STARTおよびUPは,結合項目のレコード生成の場合だけ有効である。レコード定義ファイルのレコード生成の場合は無視され,レコード定義ファイルで指定されたレベル番号で生成される。
  • レコード定義ファイルにコピー文(タイプ@)の指定がある場合,COPY文で展開する。
  • COPY文で展開する場合,PREFIXおよびSUFFIXの指定値を,COPY文のPREFIX句およびSUFFIX句に生成する。
  • START_POSITIONには,レコード生成を開始するカラム位置を数字定数または可変記号で指定する。カラム位置は1~99の範囲で指定する。省略した場合は2が仮定される。
  • 言語種別がCOBOLで,環境変数のCOBOLソース正書法が固定形式またはホスト向け固定形式の場合, START_POSITIONの値に6を加えたカラム位置から生成する。
  • レベル番号が49を超えた場合はエラーメッセージを出力し,レコードの展開を中止する。
  • 展開時に,データ項目の重複チェックおよびデータ項目名長のチェックは行われない。
  • VALUE,およびNOVALUEは,言語種別がCOBOLのときだけ有効である。他言語の場合は無視する。
  • VALUEはデータ項目の初期値を生成するときに指定する。NOVALUEのときにはデータ項目の初期値を生成しない。VALUE,およびNOVALUEの指定がない場合にはNOVALUEを仮定する。
  • レコード生成をするデータ項目のタイプには,リポジトリに最初から登録されているCまたはCOBOL用のタイプだけ使用できる。

生成規則
レコードの生成規則を表7-4~7-6に示します。

表7-4 レコード生成時に有効に使用されるデータ項目の定義情報

項番 区分 データ項目定義情報 COBOL C
1 名称 データ項目名 1 1
2 標準名称 × ×
3 振り仮名 × ×
4 属性 分類 ×
5 けた数
6 小数部けた数
7 反復回数
8 付加情報 フィールド1~20 × ×
9 コメント × ×
10 言語別
詳細情報
名前
11 タイプ
12 数字編集文字列 ×
13 初期値 2 ×
14 言語別フィールド × ×
15 取りうる値

(凡例)
○:使用する。
×:使用しない。

注※1
言語別詳細情報の名前が指定されていない場合,使用します。

注※2
@@expand文にVALUEの指定がある場合,使用します。

表7-5 COBOL言語用レコード生成キーワード

項番 辞書属性(タイプ) レコード生成キーワード
1 X(英数字項目) データ項目名 PIC X(けた数) OCCURS 反復回数 VALUE 初期値
2 Z(数字編集項目) データ項目名 PIC 数字編集文字列 OCCURS 反復回数 VALUE 初期値
3 N(漢字項目) データ項目名 PIC N(けた数) OCCURS 反復回数 VALUE 初期値
4 9(符号なし外部10進項目) データ項目名 PIC 9(けた数-小数部けた数) V9(小数部けた数) OCCURS 反復回数 VALUE 初期値
5 S(符号付き外部10進項目) データ項目名 PIC S9(けた数-小数部けた数) V9(小数部けた数) OCCURS 反復回数 VALUE 初期値
6 U(符号なし内部10進項目) データ項目名 PIC 9(けた数-小数部けた数) V9(小数部けた数) USAGE PACKED-DECIMAL OCCURS 反復回数 VALUE 初期値
7 P(符号付き内部10進項目) データ項目名 PIC S9(けた数-小数部けた数) V9(小数部けた数) USAGE PACKED-DECIMAL OCCURS 反復回数 VALUE 初期値
8 BU(符号なし2進項目) データ項目名 PIC 9(けた数-小数部けた数) V9(小数部けた数) USAGE BINARY OCCURS 反復回数 VALUE 初期値
9 B(符号付き2進項目) データ項目名 PIC S9(けた数-小数部けた数) V9(小数部けた数) USAGE BINARY OCCURS 反復回数 VALUE 初期値
10 E(外部浮動小数点項目) データ項目名 PIC 数字編集文字列 OCCURS 反復回数
11 D(内部浮動小数点項目) データ項目名 COMP-1またはCOMP-2 OCCURS 反復回数 VALUE 初期値
12 1 (内部ブール項目) データ項目名 PIC 1(けた数)USAGE BIT OCCURS 反復回数 VALUE 初期値
13 8(外部ブール項目) データ項目名 PIC 1(けた数)USAGE DISPLAY OCCURS 反復回数 VALUE 初期値
14 T(アドレスデータ項目) データ項目名 USAGE ADDRESS OCCURS 反復回数 VALUE 初期値
15 フリー定義 データ項目名 フリー定義

注1
日立COBOL2002または日立COBOL85以外の言語種別を使用している場合は,レコード生成キーワードのカスタマイズが必要になる場合があります。レコード生成キーワードのカスタマイズについては,マニュアル「SEWB+/REPOSITORY 辞書設計ガイド」の環境構築ユティリティについての記述を参照してください。

注2
「取りうる値」が定義されている場合,表中の生成に続けて,次に示す形式でレコード生成されます。ただし,値が指定されていない場合,その値を含む「88記号 VALUE値」は生成されません。

[図データ]

表7-6 C言語用生成規則

項番 辞書属性(タイプ) 生成キーワード
1 char(文字型) char データ項目名 [反復回数][けた数]
2 char*(文字型) char* データ項目名 [反復回数]
3 short(符号付き短整数型) short データ項目名 [反復回数]
4 unsigned short(符号なし短整数型) unsigned short データ項目名 [反復回数]
5 int(符号付き整数型) int データ項目名 [反復回数]
6 unsigned int(符号なし整数型) unsigned int データ項目名 [反復回数]
7 long(符号付き長整数型) long データ項目名 [反復回数]
8 unsigned long(符号なし長整数型) unsigned long データ項目名 [反復回数]
9 float(単精度浮動小数点型) float データ項目名 [反復回数]
10 double(倍精度浮動小数点型) double データ項目名 [反復回数]
11 long double(拡張精度浮動小数点型) long double データ項目名 [反復回数]
12 フリー定義 フリー定義 データ項目名

「取りうる値」が定義されている場合,表中の生成に続けて,次に示す形式でレコード生成されます。ただし,値が指定されていない場合,その値を含む「=値」は生成されません。
[図データ]

注※
けた数は,辞書で指定したけた数に文字列の末尾を示す1文字分を追加した値で生成されます。また,データ項目の分類が漢字項目の場合,けた数は2倍して生成されます。

使用例
(例1)言語種別がCOBOLのとき
[図データ]
[図データ]
(例2)言語種別がC言語のとき
[図データ]
[図データ]
(例3)取りうる値の例
  • 言語種別がCOBOL言語のとき

    [図データ]

  • 言語種別がC言語のとき

    [図データ]