COBOL非常见知识点一

1. ’advancing‘是‘前进’的意思,这里有换行和换页的用法。下列是还数字是换2行,3行的写法。

MOVE  H01-AREA       TO    OUT3-DTL. 
WRITE OUT3-FILE-REC  FROM  OUT3-REC  AFTER  ADVANCING  PAGE. 
MOVE  H02-AREA       TO    OUT3-DTL.
WRITE OUT3-FILE-REC  FROM  OUT3-REC  AFTER  ADVANCING  3. 
MOVE  H03-AREA       TO    OUT3-DTL.  
WRITE OUT3-FILE-REC  FROM  OUT3-REC  AFTER  ADVANCING  2.

2.DISPLAY '*******'   '  ' with no advancing.的用法 (with no advancing表示不进行常规的display换行操作)

000000 IDENTIFICATION   DIVISION.
000000 PROGRAM-ID.      STUDY-1.
000000 ENVIRONMENT      DIVISION.
000000 DATA             DIVISION.
000000 WORKING-STORAGE  SECTION.
000000  77    I         PIC   99.
000000  77    J         PIC   99.
000000  77    DA3       PIC   99.
000000  77    DA4       PIC   Z9.
000000  77    DA5       PIC   Z9.
000000  77    DA6       PIC   Z9.
000000*
000000 PROCEDURE        DIVISION.
000000 A10.  
000000     PERFORM  A20 VARYING  I  FROM  1 BY 1 UNTIL I > 9
000000                  AFTER    J  FROM  1 BY 1 UNTIL J > I.
000000     STOP RUN.
000000*
000000 A20.
000000     COMPUTE DA3       =      I   *   J .
000000     MOVE    DA3       TO     DA4.
000000     MOVE    I         TO     DA5.
000000     MOVE    J         TO     DA6.
000000*  j * i : 1*1=1
000000*          1*2=1  2*2=1
000000*          1*3=1  3*2=1  3*3=1
000000*          ......
000000     IF      I         =    J  
000000         DISPLAY  DA6  '*'  DA5  '='  DA4 '  '
000000       ELSE 
000000         DISPLAY  DA6  '*'  DA5  '='  DA4 '  ' WITH NO ADVANCING
000000     END-IF.  

字符串连接语句(STRING语句)
 (1)STRING是字符连接语句,可以将多个发送项字符发送到一个接收项中。
          STRING  A, B, C  DELIMITED  BY  SIZE  INTO  D.
 (2)DELIMITED是界定短语,用来控制各个发送项的终止位置。
          DELIMITED BY SIZE      表示把每个发送项的内容全部送到接收项;   
          DELIMITED BY SPACE  表示发送项去空格送到接收项;
          DELIMITED BY 'H'          表示发送项去字符‘H’传送到接收项。
         案例1: STRING  A, B, C   DELIMITED   BY  SIZE  INTO   D.
         案例2: STRING  A   DELIMITED   BY  'H'  B   DELIMITED  BY  'Y'  C   DELIMITED  BY  'W'  INTO  D.
         说明:使用界定短语,当遇到界定字符,只会把界定字符之前的字符段送到接收字段;界定字符后的数据丢失。
 (3)POINTER是指针短语,控制接收项开始接收字符的位子。
          STRING A,B,C DELIMITED BY SIZE WHIT POINTER T INTO D.
          如果T=3,则表示接收项D从第三位开始接收数据;T不能小于1或者大于接收项长度,否则发生数据溢出。
 (4)OVERFLOW是溢出短语,用来判断是否发生溢出,以及发生溢出后所做的处理。
          STRING A,B,C DELIMITED BY SIZE INTO D ON OVERFLOW DISPALY 'OVERFLOW'.
          如果发生溢出就显示“OVERFLOW”信息。


 字符串分解语句(UNSTRING语句)
 (1)UNSTRING是字符串分解语句,是STRING的逆操作。
          UNSTRING  A  INTO  B, C, D.
          说明:将字符串A分解,如果B项接收长度满了则C开始接收,如果C项接收长度满了D开始接收。
 (2)使用DELIMITED进行字符串分解界定,是将字符串按照界定字符分成若干部分。
          UNSTRING A DELIMITED BY 'M' INTO B,C,D.            //以字符'M'界定。
          UNSTRING A DELIMITED BY ALL 'M' INTO B,C,D.     //以单个或者多个字符'M'界定。
          说明:将字符串以字符‘M’分成若干部分,第一部分给B,第二部分给C,第三部分给D;
                     如果发送项A中不存在字符'M',则字符只有一个部分,给B项,C和D不传值;如果发送项A被分成部分多于3份,则只取前三份。

 (3)COUNT短语,用于计算已经传到接收项的字符数量。
          UNSTRING A DELIMITED BY 'T' INTO B COUNT IN W.
 (4)DELIMITER是定界符存储短语,如果使用多个定界符,在传送接收项时,同事把界定符存储。
          UNSTRING A DELIMITED BY 'T' OR ALL ' ' OR 'R' INTO B DELIMITER INTO Q 
                                                                                                     C DELIMITER INTO Q
                                                                                                     D.
 (5)POINTER指针短语,指定从发送项的某位开始发送。
          UNSTRING A INTO C WITH POINTER U.
 (6)TALLYING接收项计数短语,用来记录实际接收项的项数。
           UNSTRING  A  DELIMITED  BY  'M'  INTO  B, C, D  TALLYING  IN  N.
 (7)溢出短语OVERFLOW。

 编程实例
  UNSTRING WS-ENG-LLONG-NAME DELIMITED BY ALL SPACE
               INTO WS-ENG-SSNAME(01),
                    WS-ENG-SSNAME(02),
                    WS-ENG-SSNAME(03),
                    WS-ENG-SSNAME(04),
                    WS-ENG-SSNAME(05)

  STRING   WS-ENG-SSNAME(01) DELIMITED BY SPACE
                         ' ' DELIMITED BY SIZE
           WS-ENG-SSNAME(02) DELIMITED BY SPACE
                         ' ' DELIMITED BY SIZE
           WS-ENG-SSNAME(03) DELIMITED BY SPACE
                         ' ' DELIMITED BY SIZE
           WS-ENG-SSNAME(04) DELIMITED BY SPACE
                         ' ' DELIMITED BY SIZE
           WS-ENG-SSNAME(05) DELIMITED BY SPACE
                         ' ' DELIMITED BY SIZE
           INTO WS-TMP-ENG-NAME

 

  • 0
    点赞
  • 3
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值