我有一个OBTAIN FIRST,接着是一个循环。在循环中,我有一个ERASE语句和一个OBTAIN NEXT。
PERFORM LEES-LC4DP-LC4DP-DAT-GE-E
PERFORM UNTIL LR-STATUS NOT = 'LC4DP-AANW' OR
LC4DP-KALDAG > H-AL0726-IN-DATTOT
IF LC4DP-KALDAG >= H-AL0726-IN-DATVAN AND
LC4DP-KALDAG <= H-AL0726-IN-DATTOT AND
LC4DP-KUMDAG-KOD = H-AL0726-IN-KUMDAG-KOD
THEN
PERFORM ERASE-LC4DP
END-IF
PERFORM LEES-LC4DP-LC4DP-DAT-GE-V
在某个时刻,我删除了SET 中的最后一条记录。之后,我的OBTAIN NEXT语句返回一个&#39; LR-NOT-FOUND&#39;虽然我期待0326。
为什么它会返回LR-NOT-FOUND?
LRF:
SELECT FOR KEYWORD LC4DP-DAT-GE
OBTAIN FIRST LC4JRDR-02
WHERE CALCKEY EQ LC4JR02-KEYJR OF LR
ON 0000 NEXT
ON 0326 RETURN LC4JR-NIET-AANW
COMPUTE LC4DP-KUMDAG-KOD OF LR = '.'
ON 0000 NEXT
OBTAIN FIRST LC4DPDR-01 WITHIN LC4JR02-LC4DP01
WHERE SORTKEY EQ LC4DP-KEYDP OF LR
ON 0000 RETURN LC4DP-AANW
ON 0326 NEXT
OBTAIN EACH PRIOR LC4DPDR-01 WITHIN LC4JR02-LC4DP01
WHERE LC4DP-KALDAG GE LC4DP-KALDAG OF LR
ON 0000 RETURN LC4DP-AANW
ON 0307 RETURN LC4DP-NIET-AANW
首先获得
OBTAIN FIRST LC4JR03-LR WHERE LC4DP-DAT-GE
EVALUATE LR-STATUS
WHEN 'LC4DP-AANW'
ACCEPT H-DBKEY-LC4DP FROM LC4DPDR-01 CURRENCY
PERFORM CONVERSIE-DB-LC4DP
WHEN 'LC4DP-NIET-AANW'
WHEN 'LC4JR-NIET-AANW'
CONTINUE
WHEN OTHER
DISPLAY 'LR-STATUS=' LR-STATUS
MOVE '22' TO AL0726W1-OUT-FOUT-KOD
GOBACK
END-EVALUATE
获取下一个
OBTAIN NEXT LC4JR03-LR WHERE LC4DP-DAT-GE
EVALUATE LR-STATUS
WHEN 'LC4DP-AANW'
ACCEPT H-DBKEY-LC4DP FROM LC4DPDR-01 CURRENCY
PERFORM CONVERSIE-DB-LC4DP
WHEN 'LC4DP-NIET-AANW'
WHEN 'LC4JR-NIET-AANW'
CONTINUE
WHEN OTHER
DISPLAY 'LR-STATUS=' LR-STATUS
MOVE '23' TO AL0726W1-OUT-FOUT-KOD
GOBACK
END-EVALUATE