将日期字段值保存到物理文件中



我有一个日期字段,它接受AS400 中的系统日期

显示文件包含*date 的日期字段

我有一个带有日期列的物理文件。当我尝试将屏幕的其他字段保存到这个物理文件上时,我也想保存这个系统日期。

但是我无法将字段名添加到这个内置的Date函数中。

否则,我怎么能在显示屏上有一个日期字段,它会自动接受系统日期,并以DD/mm/yy格式输入,但在数据库内部,它必须将其保存为yy/mm/DD。

为了在我的日期格式数据库中进行这种内部转换,我初始化了一个名为"日期"的日期字段,长度为6,压缩小数,0位小数。

请指导如何将屏幕上的系统日期以这种格式保存到物理文件中。

重新审核:我有一个PF的成绩收到日期定义如下。(其DDS)

   0004.00      A            GRCVDT         6P 0  

我避免使用"L"数据类型的日期,因为我想执行日期转换,如上所述。

在显示文件中,*DATE仅输出。程序无法读取它。

听起来数据库表有一个名为DATE的十进制字段;而不是名为date的日期字段。使用日期数据类型将使日期操作变得更加容易——请参阅Dennis的回答以获得有关建议。如果不可能使用日期数据类型,并且必须使用十进制数据类型来保存日期值,请查看RPG TIME操作代码。这将允许您将当前系统日期提取到程序变量中。返回日期的确切格式取决于您的工作日期格式设置。(WRKJOB看到了)。如果需要,您可以使用数据结构和一系列EVAL语句来重新排列日期元素。

编辑代码示例以将EUR转换为YYYMMDD

 d eur             ds                  qualified
 d ddmmyy                         6s 0
 d  dd                            2s 0 overlay(ddmmyy: 1)
 d  mm                            2s 0 overlay(ddmmyy: 3)
 d  yy                            2s 0 overlay(ddmmyy: 5)
 d ymd             ds                  qualified
 d yymmdd                         6s 0
 d  yy                            2s 0 overlay(yymmdd: 1)
 d  mm                            2s 0 overlay(yymmdd: 3)
 d  dd                            2s 0 overlay(yymmdd: 5)
 c/free
   eur.ddmmyy = 020812;
   ymd.yy = eur.yy;
   ymd.mm = eur.mm;
   ymd.dd = eur.dd;
   dsply ymd.yymmdd;
   *inlr = *on;
  /end-free          

此文件是通过DDS还是SQL创建的?如果是DDS,请将您选择的字段添加到DDS规格中,并指定数据类型L:

     A            MYDATE          L

然后使用CHGPF,指定源文件和成员名称;系统将添加新列。

CHGPF FILE(MYLIB/MYFILE)           
      SRCFILE(MYSRCLIB/MYSOURCE)      
      SRCMBR(MY_MBR)               

即使您的文件是DDS描述的,您也可以使用SQL语句添加日期列,如:alter table mytable add column mydate date not null默认

(当然,如果你这样做,你就无法再从DDS中重新创建文件而不丢失新列)

然后在程序中,在写入数据之前,执行以下操作:mydate=%date

这里有很多假设:你正在使用ILE,你知道如何修改和重新编译程序,你正在使用自由形式,或者可以翻译上面的"variable=value"语法,…)

还有其他方法可以将系统日期放入文件中,而无需您的程序执行任何特殊操作;实际上,我们需要了解更多关于应用程序的信息,以便在这个高级建议之外提供更多帮助。

相关内容

  • 没有找到相关文章

最新更新