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