RPGLE固定格式位置式数据结构转自由格式语法求助
RPGLE固定格式数据结构转自由格式写法
以下是你提供的固定格式数据结构对应的自由格式实现,完全保留原字段的位置、长度和数据类型:
DCL-DS P1PARM LEN(256); P1ADFR CHAR(15) POSITION(1); // 对应原1-15位 P1ADTO CHAR(15) POSITION(16); // 对应原16-30位 P1MSNR ZONED(7:0) POSITION(31); // 对应原31-37位,zoned decimal类型 P1NSNR ZONED(7:0) POSITION(38); // 对应原38-44位,zoned decimal类型 P1YEAR ZONED(4:0) POSITION(45); // 对应原45-48位,zoned decimal类型 // 原49-58位为预留空间,自由格式无需显式声明,会自动填充 P1COMP CHAR(4) POSITION(59); // 对应原59-62位 P1FAC CHAR(5) POSITION(63); // 对应原63-67位 P1PPSR ZONED(7:0) POSITION(68); // 对应原68-74位,zoned decimal类型 P1PTNS CHAR(5) POSITION(75); // 对应原75-79位 // 剩余79-256位为预留空间,自动填充 END-DS;
关键对应说明:
- 用
DCL-DS替代固定格式的D ... DS,通过LEN(256)指定数据结构总长度 - 每个字段通过
POSITION(n)指定起始位置,对应原固定格式的起始位 - 数据类型对应:
- 原无类型标识的字符段用
CHAR(len),长度为原结束位-起始位+1 - 原末尾带
0的字段为zoned decimal类型,用ZONED(len:0),len为字段长度
- 原无类型标识的字符段用
- 原固定格式中未定义的中间预留位(如49-58位),自由格式无需显式声明,数据结构会自动填充这些位置的空白
内容的提问来源于stack exchange,提问作者Kunal Roy
相关产品推荐
相关产品推荐

