Ibm midrange 逻辑文件不适用于子文件/SETLL?
我使用三个不同记录格式的逻辑文件 在第一个子文件中,我使用的是LF1和LF2 在第一个子文件中,我不能使用*LOVAL SETLL,它将给我运行时错误。 不知道为什么Ibm midrange 逻辑文件不适用于子文件/SETLL?,ibm-midrange,rpgle,rpg,Ibm Midrange,Rpgle,Rpg,我使用三个不同记录格式的逻辑文件 在第一个子文件中,我使用的是LF1和LF2 在第一个子文件中,我不能使用*LOVAL SETLL,它将给我运行时错误。 不知道为什么 C TMISR1 BEGSR C READ USRLGX
C TMISR1 BEGSR
C READ USRLGX
C MOVE USRTI MINTI
C ENDSR
C REDSR1 BEGSR
C READ USRLG
C MOVE USRTO MAXTO
C ENDSR 6
然后程序将引导我到第二个子文件
我用的是LF3
看起来不错
C TMISR1 BEGSR
C READ USRLGX
C MOVE USRTI MINTI
C ENDSR
C REDSR1 BEGSR
C READ USRLG
C MOVE USRTO MAXTO
C ENDSR 6
但是如果我回到第一个子文件,子文件变成空白。????
为什么?
C TMISR1 BEGSR
C READ USRLGX
C MOVE USRTI MINTI
C ENDSR
C REDSR1 BEGSR
C READ USRLG
C MOVE USRTO MAXTO
C ENDSR 6
这是我用于构建子文件的子程序:
C CLRSR BEGSR
C EVAL *IN55='0'
C WRITE USQLSCTL
C EVAL *IN55='1'
C ENDSR
C*
C*BUILDING SUBFILE
C BLDSR BEGSR
C *LOVAL SETLL USRLGX
C EVAL RECNO=0
C EXSR TMISR1
C EXSR REDSR1
C DOW NOT %EOF
C IF USRID<>IDD
C EXSR MVESR
C EXSR DIMSR
C MOVE USRID IDD
C EVAL RECNO=RECNO+1
C WRITE USQLS
C ENDIF
C EXSR TMISR1
C EXSR REDSR1
C ENDDO
C ENDSR
C TMISR1 BEGSR
C READ USRLGX
C MOVE USRTI MINTI
C ENDSR
C REDSR1 BEGSR
C READ USRLG
C MOVE USRTO MAXTO
C ENDSR 6
n我使用的LF是USRLG和USRLGX。
其中两个LF引用相同的记录格式。但是每个LF有不同的排序顺序。
*记录格式已在F-Spec上重命名
C TMISR1 BEGSR
C READ USRLGX
C MOVE USRTI MINTI
C ENDSR
C REDSR1 BEGSR
C READ USRLG
C MOVE USRTO MAXTO
C ENDSR 6
- 我有两个问题,就是:
- 我只能使用*LOVAL setll逻辑文件一次
- n上面的编码结果有时会给出UserTime的结果,有时等于空白。(000000)
DOW上等待的文件不是%EOF
(如果可能,请始终限定预期文件)-有两种可能性(我们知道)。您还没有提供3个子例程的定义,它们重要吗?您从哪里得到运行时错误(它是什么)?也许最重要的是。。。你为什么坚持以专栏形式工作?你使用的是什么版本的操作系统?@X-Zero我想我记得他是个学生;语法的选择(以及“无SQL”)不是他的职责。@user1516536子文件是RPG和DDS之间的紧密耦合。如果您发布相关的DDS,将更容易看到发生了什么。RPG计划中的F-规格也是一个好主意。
C TMISR1 BEGSR
C READ USRLGX
C MOVE USRTI MINTI
C ENDSR
C REDSR1 BEGSR
C READ USRLG
C MOVE USRTO MAXTO
C ENDSR 6