您好我需要根据我的公司编码标准说明将固定格式代码转换为自由格式。我甚至不明白以下是什么意思,除了一些日期的移动和转换正在发生..
C *ISO MOVE BCEXDT MDYDATE
C MOVE MDYDATE PEXPDATT
C *ISO MOVE BCSTDT MDYDATE
C MOVE MDYDATE PSTRDAT
以下字段定义:
BCEXDT 8S 0
BCSTDT 8S 0
D MDYDATE S D DATFMT(*MDY)
答案 0 :(得分:5)
您显示定义的两个移动操作可以像这样转换:
C *ISO MOVE BCEXDT MDYDATE
C *ISO MOVE BCSTDT MDYDATE
到
MDYDate = %date(bcexdt: *ISO);
MDYDate = %date(bcstdt: *ISO);
请注意,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)
。
答案 1 :(得分:0)
没有其他人可以告诉你发生了什么事;没有源和目标字段的定义。
这就是为什么IBM从自由格式中贬低MOVE
操作码的原因。