如何在COBOL中创建空格和破折号

如何在COBOL中创建空格和破折号,cobol,Cobol,我的COBOL作业有点麻烦。我必须做一个程序,写下人们的名字和他们的社会保险号码。基本上,我有一个像123456789这样的数字,显示像123-45-6789,还有一个像JSDOE这样的名字,显示像JSDOE。有人能帮我吗?你应该这样做 01 toyNumber pic 9(9). 01 yourNumber. 03 a pic x(3). 03 b pic x(2). 03 c pic x(4). 01 outNumber. 03 a1 pic x(3).

我的COBOL作业有点麻烦。我必须做一个程序,写下人们的名字和他们的社会保险号码。基本上,我有一个像123456789这样的数字,显示像123-45-6789,还有一个像JSDOE这样的名字,显示像JSDOE。有人能帮我吗?

你应该这样做

01 toyNumber pic 9(9).

01 yourNumber.
   03 a pic x(3).
   03 b pic x(2).
   03 c pic x(4).

01 outNumber.
   03 a1     pic x(3).
   03 filler pic x    value "-".
   03 b1     pic x(2).
   03 filler pic x    value "-".
   03 c1     pic x(4).      
在程序中:

   move 123456789 to toyNumber.
   ....
   move toyNumber to yourNumber.
   move a to a1.
   move b to b1.
   move c to c1.

   display outNumber.  
如果你的家庭作业允许,你也可以使用“移动对应”

希望这有帮助

注:名字的诀窍是一样的…

COBOL

我写这篇文章已经很久了。所以,要小心。类似的方法可能会奏效:


01 SSN.
    03 SSN-FIRST         PIC X(03) VALUE SPACES.
    03 SSN-FDASH         PIC X     VALUE "-".
    03 SSN-MIDDLE        PIC X(02)   VALUE SPACES.
    03 SSN-MDASH         PIC X       VALUE "-".
    03 SSN-LAST          PIC X(04)   VALUE SPACES.

01 NAME.
    03 FNAME         PIC X(10)   VALUE SPACES.
    03 FDASH         PIC X     VALUE SPACES.
    03 FMIDDLE      PIC X(10)   VALUE SPACES.
    03 MDASH         PIC X     VALUE SPACES.
    03 FLAST      PIC X(10)   VALUE SPACES.

更现代(不那么古老?)的方法:

STRING SSNUMBER(1:3) DELIMITED BY SIZE
       '-'           DELIMITED BY SIZE
       SSNUMBER(4:5) DELIMITED BY SIZE
       '-'           DELIMITED BY SIZE
       SSNUMBER(6:9) DELIMITED BY SIZE
 INTO PRINTFIELD.

请允许我欢迎您使用Stack Oveflow,并记住我们通常在这里做的三件事:1)当您收到帮助时,尝试给予帮助,回答您专业领域的问题2)阅读常见问题!!3) 当您看到好的问题和答案时,请向上投票,因为系统的可信度是基于用户通过分享知识而获得的声誉。如果有的话,也要记住接受能更好地解决问题的答案