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)
您显示定义的两个移动操作可以像这样转换:
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-1940对12-31-2039.请注意,在数值BCEXDT和BCSTDT是*ISO格式,并且这些值限制是这些字段不同.专门0001-01-01来9999-12-31.因此,在尝试将*ISO日期分配给*MDY日期字段时可能会出错.
我没有为你转换的两个动作将通过以下方式之一完成.
pexpdatt = MDYDate; pstrdat = MDYDate;
pexpdatt = %dec(MDYDate); pstrdat = %dec(MDYDate);
pexpdatt = %char(MDYDate); pstrdat = %char(MDYDate);
%dec()并且%char()将以*MDY格式分配日期字段,因为它未在分配中明确指定,并且日期字段具有DATFMT(*MDY).