Sorting COBOL排序事务文件

Sorting COBOL排序事务文件,sorting,cobol,Sorting,Cobol,如何对具有此类记录的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 = del

如何对具有此类记录的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;

您可以将文件读入表中,根据事务类型添加排序序列号。排序序列号将从表中查找。然后根据排序顺序和记录中的键对表进行排序。例如,您的代码可能包括(语法并不完美,但应该为您指明正确的方向):

*按删除添加更改排序

    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.

您可以将文件读入表中,根据事务类型添加排序序列号。排序序列号将从表中查找。然后根据排序顺序和记录中的键对表进行排序。例如,您的代码可能包括(语法并不完美,但应该为您指明正确的方向):

*按删除添加更改排序

    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.
When已正确命名为88s,移动的值是带有VALUE语句的数据名。说“3”“5”“7”或任何你想得到订单的东西

首先将输入记录放入记录中进行排序,然后放入outsort字段,然后对记录进行排序。可以在输入/输出过程中完成

When已正确命名为88s,移动的值是带有VALUE语句的数据名。说“3”“5”“7”或任何你想得到订单的东西


首先将输入记录放入记录中进行排序,然后放入outsort字段,然后对记录进行排序。可以在输入/输出过程中完成

看起来您必须处理的排序桶的数量是一个小的固定数字(6)。你可以使用这样的工具 作为SYNCSORT,将事务文件拆分为六个子文件 基于每个记录上的:DT、DP、AT、AP、CT、CP标记值。下一个
根据任何其他合适的标准对单个文件进行排序。接下来,按所需顺序连接六个已排序的子文件。

看起来您必须处理的排序桶的数量是一个小的固定数字(6)。你可以使用这样的工具 作为SYNCSORT,将事务文件拆分为六个子文件 基于每个记录上的:DT、DP、AT、AP、CT、CP标记值。下一个
根据任何其他合适的标准对单个文件进行排序。接下来,按所需顺序连接六个已排序的子文件。

您可能希望将排序与输入过程和输出过程子句一起使用

下面的示例仅用于提示,但应能得出可接受的解决方案。在这些过程中,您几乎可以完全控制何时以及如何将输入记录发布到排序文件,以及如何通过输出过程管理退货记录

为了好玩和打字,您可以将它们链接为过滤器,或者将少数类型转换为枚举,并将值填充到单个输入过程的主键中。您可以跳过输出过程IS phrase and mix in a GIVING,也可以玩得很好,使用输出过程将枚举转换回人类可读的标记

OCOBOL >>SOURCE FORMAT IS FIXED
      ******************************************************************
      * Date:      02-Sep-2008
      * Purpose:   An OpenCOBOL SORT verb example
      * Tectonics: cobc -x sorting.cob
      *     ./sorting <input >output
      *   or simply 
      *     ./sorting
      *   for keyboard and screen demos 
      ******************************************************************
       identification division.
       program-id. sorting.

       environment division.
       configuration section.
      * This sets up a sort order lower then upper except for A and a
       special-names.
           alphabet mixed is " AabBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTu
      -"UvVwWxXyYzZ0123456789".

       input-output section.
       file-control.
           select sort-in
               assign keyboard
               organization is line sequential.
           select sort-out
               assign display
               organization is line sequential.
           select sort-work
               assign "sortwork".

       data division.
       file section.
       fd sort-in.
          01 in-rec        pic x(255).
       fd sort-out.
          01 out-rec       pic x(255).
       sd sort-work.
          01 work-rec      pic x(255).

       working-storage section.
       01 loop-flag        pic x value low-value.

       procedure division.
       sort sort-work
           on descending key work-rec
           collating sequence is mixed
           input procedure is sort-transform
           output procedure is output-uppercase.

       display sort-return end-display.
       goback.

      ******************************************************************
       sort-transform.
       move low-value to loop-flag
       open input sort-in
       read sort-in
           at end move high-value to loop-flag
       end-read
       perform
           until loop-flag = high-value
               move FUNCTION LOWER-CASE(in-rec) to work-rec
               release work-rec
               read sort-in
                   at end move high-value to loop-flag
               end-read
       end-perform
       close sort-in
       .

      ******************************************************************
       output-uppercase.
       move low-value to loop-flag
       open output sort-out
       return sort-work
           at end move high-value to loop-flag
       end-return
       perform
           until loop-flag = high-value
               move FUNCTION UPPER-CASE(work-rec) to out-rec
               write out-rec end-write
               return sort-work
                   at end move high-value to loop-flag
               end-return
       end-perform
       close sort-out
       .

       exit program.
       end program sorting.
OCOBOL>>源格式是固定的
******************************************************************
*日期:2008年9月2日
*目的:一个OpenCOBOL排序动词示例
*构造:cobc-x sorting.cob
*排序输出
*或者干脆
*/分类
*用于键盘和屏幕演示
******************************************************************
身份查验司。
程序id。排序。
环境司。
配置部分。
*这将设置排序顺序,除a和a外,排序顺序先低后高
特殊名称。
混合字母是“aabbccddeffgghhiijjkkllmmnnooppqqrrssttu”
-“UVVWXXYYZZ0123456789”。
输入输出部分。
文件控制。
选择“排序”
分配键盘
组织是按行顺序的。
选择分拣
分配显示
组织是按行顺序的。
选择排序工作
分配“sortwork”。
数据司。
文件部分。
fd排序。
图x(255)中的01。
整理一下。
01输出rec pic x(255)。
分类工作。
01工作记录图x(255)。
工作储存区。
01回路标志pic x值低值。
程序司。
分类工作
论降键工作记录
排序顺序是混合的
输入过程是排序变换
输出过程为输出大写。
显示排序返回结束显示。
戈巴克。
******************************************************************
排序转换。
将低值移动到循环标志
在中打开输入排序
读入排序
在结束时,将高值移动到循环标志
结束阅读
表演
直到循环标志=高值
将功能小写(rec中)移动到工作rec
发布工作记录
读入排序
在结束时,将高值移动到循环标志
结束阅读
结束表演
接近排序
.
******************************************************************
输出大写字母。
将低值移动到循环标志
开放式输出排序
退货分拣工作
在结束时,将高值移动到循环标志
末端返回
表演
直到循环标志=高值
将功能大写(工作记录)移动到输出记录
写入记录结束写入
退货分拣工作
在结束时,将高值移动到循环标志
末端返回
结束表演
近距离分拣
.
退出程序。
结束程序排序。
有关更多详细信息,请参阅。

您可能需要
OCOBOL >>SOURCE FORMAT IS FIXED
      ******************************************************************
      * Date:      02-Sep-2008
      * Purpose:   An OpenCOBOL SORT verb example
      * Tectonics: cobc -x sorting.cob
      *     ./sorting <input >output
      *   or simply 
      *     ./sorting
      *   for keyboard and screen demos 
      ******************************************************************
       identification division.
       program-id. sorting.

       environment division.
       configuration section.
      * This sets up a sort order lower then upper except for A and a
       special-names.
           alphabet mixed is " AabBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTu
      -"UvVwWxXyYzZ0123456789".

       input-output section.
       file-control.
           select sort-in
               assign keyboard
               organization is line sequential.
           select sort-out
               assign display
               organization is line sequential.
           select sort-work
               assign "sortwork".

       data division.
       file section.
       fd sort-in.
          01 in-rec        pic x(255).
       fd sort-out.
          01 out-rec       pic x(255).
       sd sort-work.
          01 work-rec      pic x(255).

       working-storage section.
       01 loop-flag        pic x value low-value.

       procedure division.
       sort sort-work
           on descending key work-rec
           collating sequence is mixed
           input procedure is sort-transform
           output procedure is output-uppercase.

       display sort-return end-display.
       goback.

      ******************************************************************
       sort-transform.
       move low-value to loop-flag
       open input sort-in
       read sort-in
           at end move high-value to loop-flag
       end-read
       perform
           until loop-flag = high-value
               move FUNCTION LOWER-CASE(in-rec) to work-rec
               release work-rec
               read sort-in
                   at end move high-value to loop-flag
               end-read
       end-perform
       close sort-in
       .

      ******************************************************************
       output-uppercase.
       move low-value to loop-flag
       open output sort-out
       return sort-work
           at end move high-value to loop-flag
       end-return
       perform
           until loop-flag = high-value
               move FUNCTION UPPER-CASE(work-rec) to out-rec
               write out-rec end-write
               return sort-work
                   at end move high-value to loop-flag
               end-return
       end-perform
       close sort-out
       .

       exit program.
       end program sorting.