cobol学习04——字符串及其操作
1.概念:由一组连续字符形成的数据。
COBOL中不需要对字符串添加任何结束标志。
2、使用STRING语句合并字符串
STRING
FIRST-NAME DELIMITED BY SAPCE
' ' DELIMITED BY SIZE
LAST-NAME DELIMITED BY SPACE
INTO FULL-NAME.
其中:DELIMITED BY的SPACE选项用于截掉字符串前后的空格。
SIZE用于将合并的字符串全部内容合并
' ' DELIMITED BY SIZE:是在FULLname中添加一个空格
3、相应的UNSTRING语句拆分字符串
UNSTRING FULL-NAME
DELIMITED BY ' '
INTO FIRST-NAME
LAST-NAME.
DISPLAY 'FULL NAME:',FULL-NAME.
DISPLAY 'FIRST NAME:',FIRST-NAME.
DISPLAY 'LAST NAME:'LAST-NAME.
4.用INSPECT语句替换字符串
主要对字符串中的指定部分进行替换。
例:
DATA DIVISION.
WORKING-STORAGE SECTION
01 DATE1 PIC X(10).
01 YEAR PIC X(4).
01 MONTH PIC X(2).
01 DAY1 PIC X(2).
01 TEST-STRING PIC X(10).
01 SOURCE-STRING PIC X(10).
PROCEDURE DIVISION
MOVE '2008/01/15' TO DATE1.
UNSTRING DATE1
DELIMITED BY '/'
INTO YEAR
MONTH
DAY1.
DISPLAY 'DATE:',DATE1.
DISPLAY 'YEAR:',YEAR.
DISPLAY 'MONTH:',MONTH.
DISPLAY 'DAY:',DAY1.
MOVE 'ABCD0A0B8B' TO TEST-STRING.
DISPLAY 'BEFORE INSPECT:',TEST-STRING.
MOVE TEST-STRING TO SOURCE-STRING.
INSPECT SOURCE-STRING
REPLACING ALL 'A' BY 'B'.
INSPECT SOURCE-STRING
REPLACING ALL '0' BY '_'.
INSPECT SOURCE-STRING
REPLACING LEADING 'B' BY '*'.
INSPECT SOURCE-STRING
REPLACING FIRST '*' BY '$'.
DISPLAY 'AFTER INSPECT:'SOURCE-STRING.
STOP RUN.
对全体数据进行替换:INSPECT SOURCE-STRING REPLACING ALL 'A' BY 'B'.
对开始数据进行替换:INSPECT SOURCE-STRING REPLACING LEADING 'A' BY 'B'.
对首个字符进行替换:INSPECT SOURCE-STRING REPLACING FIRST 'A' BY 'B'.
5.字符串替换
以原字符串的字符为基础进行格式转换。
a、大小写转换
例: FUNCTION LOWER-CASE(TEST-STRING) TO NEW-STRING.
FUNCTION UPPER-CASE(TEST-STRING) TO NEW-STRING.
b、将字符串转换为具体数值
COMPUTE NUM-O1 =
FUNCTION NUMVAL(NUM-STR-01).
DISPLAY 'CONVERT AFTRE:',NUM-O1.
6.子字符串
相当于原字符串的一个子集。
例:MOVE '2008/09/23' TO DATE.
MOVE DATE(1:4) TO YEAR.
MOVE DATE(6:2) TO MONTH.
MOVE DATE(9: ) TO DAY. //表示从第9位到字符结束
7.通过MAX和MIN得到最大和最小字符串
MOVE FUNCTION MAX(STR-1 STR-2 STR-3) TO MAX-STR.
MOVE FUNCTION MIN(STR-1 STR-2 STR-3) TO MIN-STR.
MOVE FUNCTION MAX(NUM-1 NUM-2 NUM-3) TO MAX-STR.
MOVE FUNCTION MIN(NUM-1 NUM-2 NUM-3) TO MIN-STR.
8.求取字符串的长度
使用FUNCTION LENGTH或者LENTH OF 得到字符串的长度。
例:
MOVE FUNCTION LOWER-CASE(TEST-STRING) TO NEW-STRING.
DISPLAY 'NEW-STRING:',NEW-STRING.