RPGのデータストラクチャーは、フィールドを重ねて定義できます。
H Y/ 1
H*---------------------------------------------------------------*
H* PROGRAM-ID : ISPEC5R *
H* REMARKS : UNION *
H* AUTHOR : Y.IDE *
H* DATE-WRITEN : 1999/9/12 *
H* VERSION : 01.00 ORIGINAL *
H*---------------------------------------------------------------*
I DS
I 1 4 D1
I 1 2 D2
C*
C MOVE 'ABCD' D1
C D1 DSPLY
C D2 DSPLY
C*
C SETON LR
C RETRN
C*
|
この例だと、D1フィールドに’ABCD’をセットすると、D2フィールドは’AB’になります。
C言語のデータストラクチャーは、フィールドを重ねた定義はできません。
フィールドを重ねて定義したい場合は、UNIONを使用します。
unionを使ったCプログラム
/*---------------------------------------------------------------*/
/* PROGRAM-ID : ISPEC5 */
/* REMARKS : I仕様書DS&union */
/* AUTHOR : Y.Ide */
/* DATE-WRITEN : 1999/9/12 */
/* VERSION : 01.00 ORIGINAL */
/*---------------------------------------------------------------*/
#include <stdio.h>
#include <unistd.h>
int main(void) {
union { char d1[4];
char d2[2];
} ds;
memcpy(ds.d1,"ABCD", 4);
printf("ds.d1 = %4.4s \n",ds.d1);
printf("ds.d2 = %2.2s \n",ds.d2);
}
|
この例でも、ds.d1フィールドに’ABCD’をセットすると、ds.d2フィールドは’AB’になります。
|