【问题标题】:How to replace some letters in a copybook如何替换字帖中的一些字母
【发布时间】:2022-01-06 11:31:33
【问题描述】:

希望将此字帖的开头字母从“O-”替换为“IT-”。有谁知道如何做到这一点。

FD INPUT-TRANSACTION-FILE                 
      RECORDING MODE IS F.                 
 01 ITRANS-RECORD.                         
 05  O-ACCOUNT-ID        PIC X(6).        
 05  O-FIRST-NAME        PIC X(15).       
 05  O-SURNAME           PIC X(20).       
 05  O-SALARY            PIC 9(6)V99.     
 05  O-TEMP REDEFINES O-SALARY PIC X(7). 

当我在程序中调用字帖时,我想将“O”替换为“IT”。我相信你可以使用 REPLACING 但我似乎无法让它工作

【问题讨论】:

  • 这个问题还没有被接受的答案,请检查那些并将其中一个标记为“对我有用”,或者如果有不清楚/缺失的东西,请在上面添加 cmets。

标签: cobol


【解决方案1】:

这取决于正在使用的编译器(您没有指定),但“在 COBOL 中”您有一个用于 REPLACING 子句的 LEADING 短语:

COPY FDITF REPLACING LEADING ==O-== BY ==IT-==.

【讨论】:

    【解决方案2】:

    您似乎正在程序中构建副本。 在这种情况下,您可以随意称呼它们,因此只需手动将它们从“O”更改为“IT”。

    如果副本(比如我们称之为“ITRANS”)在程序之外, 您需要在要更改的字母前后添加一个冒号(:):

    FD INPUT-TRANSACTION-FILE                 
       RECORDING MODE IS F.                 
    01 ITRANS-RECORD. 
       COPY 'ITRANS' REPLACING ==:O:== BY ==IT==.
                        
    

    文件副本“ITRANS”在副本库中的位置。

    05  :O:-ACCOUNT-ID        PIC X(6).        
    05  :O:-FIRST-NAME        PIC X(15).       
    05  :O:-SURNAME           PIC X(20).       
    05  :O:-SALARY            PIC 9(6)V99.     
    05  :O:-TEMP REDEFINES :O:-SALARY PIC X(7).
    

    IBM DOC - COPY statement

    【讨论】:

    • 补充一点:这种技术很常用,它的好处是它适用于我见过的所有编译器(那些不支持或不正确支持LEADING的编译器) )。它唯一的缺点:您必须调整字帖以使用:O: 或'O' 之一,并且始终必须使用REPLACING 短语。总的来说,这是一个很好的补充,也是解决问题的另一种方法。
    猜你喜欢
    • 2013-02-10
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 2021-11-22
    相关资源
    最近更新 更多