画面・帳票サポートシステム XMAP3 プログラミングガイド


16.1.1 出力論理マップ

固定部の出力論理マップ生成規則とマッピング規則を次に示します。

〈この項の構成〉

(1) 出力論理マップ生成規則

(a) 再定義名を指定した場合

COBOL

論理マップ可変部の集団項目化を指定した場合

・Windowsリトルエンディアン用
01 マップ名O REDEFINES 出力再定義名.
 02 マップ名L PIC S9(4) COMP-5.
 02 マップ名Z PIC S9(4) COMP.
 02 マップ名G.
・Windowsビッグエンディアン用,UNIX用
01 マップ名O REDEFINES 出力再定義名.
 02 マップ名L PIC S9(4) COMP.
 02 マップ名Z PIC S9(4) COMP.
 02 マップ名G.

論理マップ可変部の集団項目化を指定していない場合

・Windowsリトルエンディアン用
01 マップ名O REDEFINES 出力再定義名.
 02 マップ名L PIC S9(4) COMP-5.
 02 マップ名Z PIC S9(4) COMP. 
・Windowsビッグエンディアン用,UNIX用
01 マップ名O REDEFINES 出力再定義名.
 02 マップ名L PIC S9(4) COMP.
 02 マップ名Z PIC S9(4) COMP.
C言語

C言語の場合,集団項目化の指定は無視されます。

・Windowsリトルエンディアン用,UNIX用
struct  マップ名O {
   short           マップ名L;
   unsigned char   マップ名Z[2];
     :
} 出力再定義名;
 注

shortの大きさは,2バイトとして展開されます。

・Windowsビッグエンディアン用
struct  マップ名O {
    unsigned char   マップ名L[2];
    unsigned char   マップ名Z[2];
     :
} 出力再定義名;

(b) 再定義名を指定しない場合

COBOL

論理マップ可変部の集団項目化を指定した場合

・Windowsリトルエンディアン用
01 マップ名O.
 02 マップ名L PIC S9(4) COMP-5〔VALUE+長さ〕.
 02 マップ名Z PIC S9(4) COMP 〔VALUE+0〕.
 02 マップ名G.
・Windowsビッグエンディアン用,UNIX用

論理マップ長が10,000バイト未満のとき

01 マップ名O.
 02 マップ名L PIC S9(4) COMP 〔VALUE+長さ〕.
 02 マップ名Z PIC S9(4) COMP 〔VALUE+0〕.
 02 マップ名G.

論理マップ長が10,000バイト以上のとき

01 マップ名O.
 02 マップ名Q PIC X(2) VALUE X'長さ'.
 02 マップ名L REDEFINES マップ名Q PIC S9(4) COMP.
 02 マップ名Z PIC S9(4) COMP VALUE +0.
 02 マップ名G.

論理マップ可変部の集団項目化を指定していない場合

・Windowsリトルエンディアン用
01 マップ名O.
 02 マップ名L PIC S9(4) COMP-5〔VALUE+長さ〕.
 02 マップ名Z PIC S9(4) COMP 〔VALUE+0〕.
・Windowsビッグエンディアン用,UNIX用

論理マップ長が10,000バイト未満のとき

01 マップ名O.
 02 マップ名L PIC S9(4) COMP 〔VALUE+長さ〕.
 02 マップ名Z PIC S9(4) COMP 〔VALUE+0〕.

論理マップ長が10,000バイト以上のとき

01 マップ名O.
 02 マップ名Q PIC X(2) VALUE X'長さ'.
 02 マップ名L REDEFINES マップ名Q PIC S9(4) COMP.
 02 マップ名Z PIC S9(4) COMP VALUE +0.
C言語

C言語の場合,集団項目化の指定は無視されます。

・Windowsリトルエンディアン用,UNIX用
struct {
   short    マップ名L;
   unsigned char マップ名Z[2];
     :
} マップ名O 〔={長さ,{0x00,0x00}}〕;
 注

shortの大きさは,2バイトとして展開されます。

・Windowsビッグエンディアン用
struct {
    unsigned char マップ名L[2];
    unsigned char マップ名Z[2];
     :
} マップ名O 〔={{0xnn,0xnn},{0x00,0x00}}〕;

(2) マッピング規則

(a) 再定義名を指定した場合

論理マップ長部(マップ名Lで生成される項目)に代入した内容とその結果

論理マップ長部に代入した内容

結果

展開した論理マップより小さい値

代入された論理マップ長が示す範囲のデータを使って画面・帳票出力のデータとして使用される。範囲外の部分にはデータ有無コードが代入されているものとして扱う。

展開した論理マップ長と等しい値

論理マップ内のデータを,画面・帳票出力のデータとして使用する。

展開した論理マップより大きい値

マップ生成機能が展開した論理マップの範囲までのデータを,画面・帳票出力のデータとして使用する。それ以外の部分は無視される。

(b) 再定義名を指定しない場合

論理マップ長部(マップ名Lで生成される項目)に代入した内容とその結果は,再定義名を指定した場合と同様になります。