0

我想做一个小型 RPG 程序,但很生疏。它类似于最近的SQL。

我想读取一个逻辑文件,并且只选择今天日期的那些记录。该字段定义为 NUMeric 8 0。 YYYYMMDD 这是执行此操作的方法吗?我只想阅读那些记录 = 今天的日期。(工作日期还可以)。

F Filename etc.

 D   Data structure for date     *** not sure how to code this,
   DS Datein
   D  year4in
       D Cent2
       D YR2
   D  month2in
   D day2in
****

D DS Dateout
D  month2out
D day2out
D  yr2out

C   Read loop 

     Read Filename until EOF.


              Move Ordhdt to Datemanip

              If Ordhdt not equal udate 

                  Leave

                       else

                            Write record to work file
                       iter
              End read loop.
4

2 回答 2

2
fmylf   if    e              k disk

d             ds
d  now                  1   20  0
d  date                 1    8  0
d  time                 9   14  0
d  zzzzzz              15   20  0

c/free
    now = %dec(%timestamp());
    setll date mylf;
    reade date mylf;
    dow not %eof(mylf);
       // Do your processing here.
       reade date mylf;
    enddo;
    *inlr = *on;
c/end-free

这是您可能更喜欢的版本:

FMYLF     IF   E              K DISK

DYYYYMMDD        S               8  0
D                DS
D TIME                      1    6  0
D DATE                      7   12  0
D MM                        7    8  0
D DD                        9   10  0
D YYYY                     11   14  0
D TIMEDATE                  1   14  0

C                   TIME      TIMEDATE
C                   EVAL      YYYYMMDD = (YYYY*10000) + (MM*100) + DD
C      YYYYMMDD     SETLL     MYLF
C      YYYYMMDD     READE     MYLF                                 99
C                   DOW       *IN99 = *OFF
C* Do your processing here
C      YYYYMMDD     READE     MYLF                                 99
C                   ENDDO
C                   EVAL      *INLR = *ON
于 2013-05-21T18:19:26.313 回答
2

您可以使用 HLL (SQLRPGLE) 或使用 SQL 执行相同的逻辑RUNSQLSTM

CREATE TABLE WORKFILE AS (
    SELECT *
    FROM Filename
    WHERE ORDHDT = YEAR(NOW()) * 10000 + MONTH(NOW()) * 100 + DAY(NOW())
) WITH DATA
于 2013-05-21T18:44:59.567 回答