将固定格式的Rpg代码转换为自由格式

1 rpgle

嗨我需要根据我的公司编码标准说明将固定格式代码转换为自由格式.我甚至不明白以下是什么意思,除了一些日期的移动和转换正在发生..

C     *ISO          MOVE      BCEXDT        MDYDATE
C                   MOVE      MDYDATE       PEXPDATT
C     *ISO          MOVE      BCSTDT        MDYDATE  
C                   MOVE      MDYDATE       PSTRDAT  
Run Code Online (Sandbox Code Playgroud)

字段定义如下:

BCEXDT         8S 0  
BCSTDT         8S 0
D  MDYDATE        S               D   DATFMT(*MDY)
Run Code Online (Sandbox Code Playgroud)

jma*_*phy 5

您显示定义的两个移动操作可以像这样转换:

C     *ISO          MOVE      BCEXDT        MDYDATE
C     *ISO          MOVE      BCSTDT        MDYDATE  
Run Code Online (Sandbox Code Playgroud)

MDYDate = %date(bcexdt: *ISO);
MDYDate = %date(bcstdt: *ISO);
Run Code Online (Sandbox Code Playgroud)

请注意,MDYDate是一个日期字段,并且具有与每个其他日期字段相同的内部格式.DATFMT(*MDY)关键字仅定义在加载到(或来自)字符或数字字段时默认情况下外部表示字段的方式.它还设置了允许值的限制.在*MDY的情况下,这些限制都01-01-194012-31-2039.请注意,在数值BCEXDTBCSTDT*ISO格式,并且这些值限制是这些字段不同.专门0001-01-019999-12-31.因此,在尝试将*ISO日期分配给*MDY日期字段时可能会出错.

我没有为你转换的两个动作将通过以下方式之一完成.

  1. 如果目标是日期字段:
pexpdatt = MDYDate;
pstrdat = MDYDate;
  1. 如果目标是数字字段:
pexpdatt = %dec(MDYDate);
pstrdat = %dec(MDYDate);
  1. 如果目标是字符字段:
pexpdatt = %char(MDYDate);
pstrdat = %char(MDYDate);

%dec()并且%char()将以*MDY格式分配日期字段,因为它未在分配中明确指定,并且日期字段具有DATFMT(*MDY).