如何使用Java Regex在单词中分割一行并删除字符串和数字单词。这里输入是我收到的,输出是我想要的:
Input:
05 ECPRF-057 PIC S9(4) VALUE +0057 COMP-3.
Output:
ECPRF-057
PIC
S
VALUE
COMP-3
Input:
88 ACCT-LVL-CHG VALUE 'WT ' 'WTO', "AA ",
Output:
ACCT-LVL-CHG
VALUE
Run Code Online (Sandbox Code Playgroud)
在此先感谢Kishore
不,你没有。
05 ECPRF-057 PIC S9(4) VALUE +0057 COMP-3.
05 ECPRF-057 COMP-3 PIC S9(4) VALUE +0057.
05 ECPRF-057 VALUE +0057 PIC S9(4) USAGE COMP-3.
05 ECPRF-057 VALUE +0057 PIC S9(4) USAGE IS COMP-3.
05 ECPRF-057 VALUE +0057 PICTURE IS S9(4) USAGE IS COMP-3.
05 ECPRF-057 VALUE +0057 PICTURE S9(4) USAGE IS COMP-3.
05 ECPRF-057 VALUE +0057 PIC S9(4) COMP-3.
05 ECPRF-057 VALUE +0057 COMP-3 PIC S9(4).
05 ECPRF-057 VALUE +0057 PACKED-DECIMAL PIC S9(4).
05 ECPRF-057 VALUE +0057 PIC S9(4).
Run Code Online (Sandbox Code Playgroud)
此外,COMP-3可以写为COMPUTATIONAL-3或PACKED-DECIMAL。这些都不是必须排在同一条线上,而且通常不会。
这些都是一样的。并进行许多很多组合。我确定,关于那最后一个?是的,因为在此之前的某处(立即或之前的任意行)为:
02 ECPRF-057-GROUP COMP-3. (which may also have the combinations relating to COMP-3)
Run Code Online (Sandbox Code Playgroud)
在第二个示例中,这还没有达到88级。
没有:
05 PIC X(20) VALUE SPACE.
Run Code Online (Sandbox Code Playgroud)
这没有重复的数据名称,当使用更高级别的数据名称“限定”时,这些数据名称才有效,需要使用IN或OF。
那是没有定义的。
没有COMP / COMP-4 / COMP-5 / BINARY,其中可以保留的最大值之类的内容取决于编译器选项。
除非已经对所有正在处理的数据进行了严格的标准化,否则请不要尝试执行此操作。
另外,VALUE一词对您没有用,它是与您想要的VALUE子句相关的实际内容,单数形式,当存在时,VALUE在级别01-49上是可选的,或者可以是数量不限的多个项目a Level88。另外,您将忽略数字或字节的数量(它取决于PICture,甚至是偶数,奇数还是由于编译选项而有所不同)。
以前,您被问到您正在以编程方式查看COBOL程序时在做什么,而没有提及。
如果要让程序理解大型机上的COBOL,则该程序已经存在,它是Enterprise COBOL编译器。
如果您确实想通过尝试“理解” COBOL程序来做某事,请至少使您的任务数量级更容易,并使用编译器生成的编译列表。您仍将需要计算出小数位数和OCCURS的次数,但是这些都是次要的事情,可以在有限的上下文中具体查找,这些内容可以由编译列表中的数据提供。
并且,如果您确实需要忽略与VALUE相关的值,则可以使用比喻常量(空格,低值,高值,零(S / ES),报价(S))来处理好吧,加上NULL,您可能会在USAGE POINTER项目上找到VALUE。您还需要注意,这些可以在给定数据项所属的组中指定。
现在时间允许一些扩展,因此请查看以下内容:
01 A-GROUP VALUE ZERO.
05 PIC 9.
05 A-NAME-1 PIC S9(4).
05 A-NAME-2 PIC S9999.
05 A-NAME-3 REDEFINES A-NAME-2 PIC 9999.
01 B-GROUP BINARY.
05 PIC 9.
05 B-NAME-1 PIC S9(4).
05 B-NAME-2 PIC S9999.
05 B-NAME-3 REDEFINES B-NAME-2 PIC 9999.
01 C-GROUP COMPUTATIONAL-3.
05 PIC 9.
05 C-NAME-1 PIC S9(4).
05 C-NAME-2 PIC S9999.
05 C-NAME-3 REDEFINES C-NAME-2 PIC 9999.
01 D-GROUP SIGN LEADING SEPARATE.
05 PIC 9.
05 D-NAME-1 PIC S9(4).
05 D-NAME-2 PIC S9999.
05 FILLER REDEFINES D-NAME-2.
10 FILLER PIC X.
10 D-NAME-3 PIC 9999.
Run Code Online (Sandbox Code Playgroud)
如果您查看05级别的定义,则所有这些字段在组之间看起来都是相同的。它们没有什么不同,它们都因01级别的附加条款而有所不同。
我什至没有刮擦表面。COBOL的数据定义范围非常广泛,可以轻松应用于生成复杂的数据结构。
COBOL是一门古老的语言。许多COBOL程序是旧程序,已经由许多人使用不同的编码样式和不同的COBOL知识水平进行了更改。您会在所有程序中找到上述定义吗?不,您会在某些地方找到它们吗?也许。处理数据时不能包含Maybes。
您提取的数据对我来说没有意义。级别数很重要,值的内容很重要。字段中的位数和字段大小(以字节为单位)都很重要。也许您不需要这些,但是我对此表示怀疑。
放弃这条路线。
如果您真的需要“理解” IBM Mainframe上的COBOL程序,请使用所有清单选项对其进行编译,然后使用清单。或查看《企业COBOL编程指南》中的SYSADATA附录,并使用编译器选项生成该数据(这将花费更长的时间进行编译,但是如果您需要完成多个不同的任务,则将使您的工作量减少(您有两个已经))。
如果您尝试做其他任何事情,那么您正在寻找大量工作。如果您不熟悉COBOL,并且没有可用于设计的丰富知识资源,那么您的结果充其量将是“修补”的。
如果您对以前与此相关的问题得到了更完整的回答,那么您还可以保存以上所有内容。
以下是一些SO问题的链接,如果您希望继续使用其他解决方案,这些链接可能会对您有所帮助:
| 归档时间: |
|
| 查看次数: |
387 次 |
| 最近记录: |