16.1.2 入力論理マップ
固定部の入力論理マップ生成規則とマッピング規則を次に示します。
- 〈この項の構成〉
(1) 入力論理マップ生成規則
(a) 再定義名を指定した場合
- COBOL
-
論理マップ可変部の集団項目化を指定した場合
- ・Windowsリトルエンディアン用
01 マップ名I REDEFINES入力再定義名. 02 マップ名S PIC S9(4) COMP-5. 02 マップ名0 PIC S9(4) COMP. 02 マップ名K.
- ・Windowsビッグエンディアン用,UNIX用
01 マップ名I REDEFINES入力再定義名. 02 マップ名S PIC S9(4) COMP. 02 マップ名0 PIC S9(4) COMP. 02 マップ名K.
論理マップ可変部の集団項目化を指定していない場合
- ・Windowsリトルエンディアン用
01 マップ名I REDEFINES入力再定義名. 02 マップ名S PIC S9(4) COMP-5. 02 マップ名0 PIC S9(4) COMP.
- ・Windowsビッグエンディアン用,UNIX用
01 マップ名I REDEFINES入力再定義名. 02 マップ名S PIC S9(4) COMP. 02 マップ名0 PIC S9(4) COMP.
- C言語
-
C言語の場合,集団項目化の指定は無視されます。
- ・Windowsリトルエンディアン用,UNIX用
struct マップ名I { short マップ名S; unsigned char マップ名0[2]; : } 入力再定義名;
- 注
-
shortの大きさは,2バイトとして展開されます。
- ・Windowsビッグエンディアン用
struct マップ名I { unsigned char マップ名S[2]; unsigned char マップ名0[2]; : } 入力再定義名;
(b) 再定義名を指定しない場合
- COBOL
-
論理マップ可変部の集団項目化を指定した場合
- ・Windowsリトルエンディアン用
01 マップ名I. 02 マップ名S PIC S9(4) COMP-5 [VALUE +長さ]. 02 マップ名0 PIC S9(4) COMP [VALUE +0]. 02 マップ名K.
- ・Windowsビッグエンディアン用,UNIX用
-
論理マップ長が10,000バイト未満のとき
01 マップ名I. 02 マップ名S PIC S9(4) COMP [VALUE +長さ]. 02 マップ名0 PIC S9(4) COMP [VALUE +0]. 02 マップ名K.
論理マップ長が10,000バイト以上のとき
01 マップ名I. 02 マップ名F PIC X(2) VALUE X'長さ'. 02 マップ名S REDEFINES マップ名Q PIC S9(4) COMP. 02 マップ名O PIC S9(4) COMP VALUE +0. 02 マップ名K.
論理マップ可変部の集団項目化を指定していない場合
- ・Windowsリトルエンディアン用
01 マップ名I. 02 マップ名S PIC S9(4) COMP-5〔VALUE+長さ〕. 02 マップ名0 PIC S9(4) COMP 〔VALUE+0〕.
- ・Windowsビッグエンディアン用,UNIX用
-
論理マップ長が10,000バイト未満のとき
01 マップ名I. 02 マップ名S PIC S9(4) COMP 〔VALUE+長さ〕. 02 マップ名0 PIC S9(4) COMP 〔VALUE+0〕.
論理マップ長が10,000バイト以上のとき
01 マップ名I. 02 マップ名F PIC X(2) VALUE X'長さ'. 02 マップ名S REDEFINES マップ名Q PIC S9(4) COMP. 02 マップ名O PIC S9(4) COMP VALUE +0.
- C言語
-
C言語の場合,集団項目化の指定は無視されます。
- ・Windowsリトルエンディアン用,UNIX用
struct { short マップ名S; unsigned char マップ名0[2]; : } マップ名I 〔={長さ,{0x00,0x00}}〕;
- 注
-
shortの大きさは,2バイトとして展開されます。
- ・Windowsビッグエンディアン用
struct { unsigned char マップ名S[2]; unsigned char マップ名0[2]; : } マップ名I 〔={{0xnn,0xnn},{0x00,0x00}}〕;
(2) マッピング規則
(a) 再定義名を指定した場合
- 論理マップ長部(マップ名Sで生成される項目)に代入した内容とその結果
-
論理マップ長部に代入した内容
結果
展開した論理マップより小さい値
入力マッピング時,論理マップ長部はチェックされない(マッピング制御機能が入力論理マップ長の値を代入する)ため,ほかの領域を壊すことがある。必ずマップ長分の領域を用意する必要がある。
展開した論理マップ長と等しい値
指定された論理マップの範囲に入力データが代入される。
展開した論理マップより大きい値
マップ生成機能が展開した入力論理マップの範囲に入力データを代入し,それ以外の部分は無視する(データは代入されない)。論理マップ長部には,マッピング制御機能が入力論理マップ長の値を代入する。
(b) 再定義名を指定しない場合
論理マップ長部(マップ名Sで生成される項目)に代入した内容とその結果は,再定義名を指定した場合と同様になります。