如何对具有此类记录的 tran 文件进行排序..
AT key taname username
AP key prname prshortname
DT key taname username
CT key taname username
CP key prname prshortname
DP key prname prshortname
我需要做的是在删除、添加、更改顺序中对这个 tran 文件进行排序.. 有什么办法吗?提前致谢..
AT = add task;
AP = add proj;
DT = delete task;
DP = delete proj;
CT = change task;
CP = change proj;
最佳答案
您可以将文件读入表中,并根据事务类型添加排序序列号。可以从表中查找排序序列号。然后根据排序顺序和记录中的键对表进行排序。例如,您的代码可以包括(语法并不完美,但应该为您指明正确的方向):
01 TRANSACTION-TYPES.
* 排序为删除添加更改
05 FILLER PIC X(4) VALUE 'DT01'.
05 FILLER PIC X(4) VALUE 'DP02'.
05 FILLER PIC X(4) VALUE 'AT03'.
05 FILLER PIC X(4) VALUE 'AP04'.
05 FILLER PIC X(4) VALUE 'CT05'.
05 FILLER PIC X(4) VALUE 'CP06'.
01 TRANS-TYPE-TABLE REDEFINES TRANSACTION-TYPES.
05 TRANS-TYPE OCCURS 6 TIMES INDEXED BY TRANS-INDEX.
10 TRANS-CODE PIC XX.
10 TRANS-SORT PIC 99.
01 TRANSACTION-TABLE.
05 TRANS-RECORD OCCURS 1 to 1000 TIMES DEPENDING ON TRANS-COUNT
INDEXED BY TABLE-INDEX.
10 TRANS-TABLE-SORT PIC 99.
10 TRANS-TABLE-DETAIL PIC X(132).
...
ADD-RECORD-TO-TABLE.
MOVE IN-RECORD TO TRANS-TABLE-DETAIL (TABLE-INDEX)
SET TRANS-INDEX TO 1
SEARCH TRANS-TYPE
AT END MOVE HIGH-VALUE TO TRANS-TABLE-SORT (TABLE-INDEX)
WHEN IN-RECORD-TRANS-CODE = TRANS-CODE (TRANS-INDEX)
MOVE TRANS-SORT (TRANS-INDEX) TO TRANS-TABLE-SORT (TABLE-INDEX)
.
...
SORT TRANS-RECORD
ON ASCENDING KEY TRANS-TABLE-SORT
ON ASCENDING KEY TRANS-TABLE-DETAIL.
关于sorting - COBOL 排序事务文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18626296/