COBOL字符串的操作

上传人:飞*** 文档编号:47516344 上传时间:2018-07-02 格式:PDF 页数:6 大小:34.87KB
返回 下载 相关 举报
COBOL字符串的操作_第1页
第1页 / 共6页
COBOL字符串的操作_第2页
第2页 / 共6页
COBOL字符串的操作_第3页
第3页 / 共6页
COBOL字符串的操作_第4页
第4页 / 共6页
COBOL字符串的操作_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《COBOL字符串的操作》由会员分享,可在线阅读,更多相关《COBOL字符串的操作(6页珍藏版)》请在金锄头文库上搜索。

1、COBOL字符串的操作()字符串的合并STRING 一、 STRING 语句的基本用法DATA DIVISION WORKING-STORAGE SECTION. 01 FIRST-NAME PIC X(10). 01 LAST-NAME PIC X(10). 01 FULL-NAME PIC X(20). PROCEDURE DIVISION. MOVE ADAM TO FIRST-NAME. MOVE SMITH TO LAST-NAME. STRING FIRST-NAME DELMITED BY SPACE DELIMITED BY SIZE LAST-NAME DELIMITED B

2、Y SPACE INTO FULL-NAME. DISPLAY FIRST NAME :,FIRST-NAME. DISPLAY LAST NAME :,LAST-NAME. DISPLAY FULL NAME :,FULL-NAME. STOP RUN. 输出结果:FIRST NAME :ADAM LAST NAME :SMITH FULL NAME :ADAM SMITH 以上为 STRING 语句的基本格式。 其中每项用于合并的字符串后面都要加上DELIMITED BY 语句。 DELIMITED BY 子句后面有两个选项,分别为SPACE 和 SIZE 。SPACE :找到前面用于合并

3、的字符串中第一个出现空格的地方。将该空格以前的部分进行合并,空格以后的内容包括该空格在内不参与合并操作。SIZE: 将前面对应的用于合并的字符串中的全部内容进行合并。另外 BY 后可以接一个变量名称,并且将该变量中保存的字符作为原字符串的截取符。截取符的用法同SPACE 选项类似。(三)字符串的替换INSPECT 语句INSPECT 语句主要用于对字符串中的指定部分进行替换。字符串的替换和转换是不同的。字符串替换是将原字符串中的部分字符替换成其他字符。转换时保持原字符串的字符不变,只对其格式进行转换。1.对全体字符进行替换该项功能是通过在INSPECT语句中加上“ALL”选项实现的。下面这段代

4、码将原字符中所有字符“ A”替为“ B”,并且将所有的0 替换为中划线。DATA DIVISION. WORKING-STORAGE SECTION. 01 TEST-STRING PIC X(10). * PROCEDURE DIVISION. MOVE ADCD0A0A8B TO TEST-STRING. DISPLAY BEFORE INSPECT :,TEST-STRING. INSPECT SOURCE-STRING REPLACING ALL A BY B. INSPECT SOURCE-STRING REPLACING ALL 0 BY -. DISPLAY AFTER INSP

5、ECT :,TEST-STRING. STOP RUN. 该段代码执行后,将有如下输出信息。BEFORE INSPECT : ADCD0A08B AFTER INSPECT : BDCD-B-8B 这种替换方式是对字符串中满足条件的全体字符进行的替换。并且替换后生成的新字符串覆盖了以前的符串。2.对前缀字符进行替换这种替换方式是对字符串前面连续出现的一段字符进行替换,即对前缀字符进行的替换。该项功能是通过在INSPECT 语句中加上 LEADING选项实现的。下面代码对一段表示数字的字符串进行了替换。替换方式为将原字符串中的前缀 0 替换成 前缀星号 * ,以进行适当的输出。DATA DIVI

6、SION. WORKING-STORAGE SECTION. 01 TEST-STRING PIC X(10). * PROCEDURE DIVISION. MOVE 0000567.90 TO TEST-STRING. DISPLAY BEFORE INSPECT :,TEST-STRING. INSPECT TEST-STRING REPLACING LEADING 0 BY *. DISPLAY AFTER INSPECT :,TEST-STRING. STOP RUN. 该代码执行后,将有如下输出信息。BEFORE INSPECT :0000567.90 AFTER INSPECT :

7、*567.90通过以上代码可以发现,使用LEADING 选项只是对前缀字符进行了替换。这里的前缀字 符是 从字符串开头处连续出现的一串字符。因此,即使原字符串中在最后还有一个字符0,也并不对其进行替换。另外INSPECT语句还可以统计并保存前缀字符出现的次数。该项功能是通过结合TALLYING. FOR LEADING. 实现的。其中前面一个省略号表示用以保存前缀字符出现次数的变量名。 后一个省略号表示该前缀字符。以下代码统计并输出了字符串中前缀字符出现的次数。. DATA DIVISION. WORKING-STORAGE SECTION. 01 TEST-STRING PIC X(10).

8、 01 COUNT PIC 9 VALUE ZERO. PROCEDURE DIVISION. MOVE 0000567.90 TO TEST-STRING. DISPLAY SOURCE STRING:, TEST-STRING. INSPECT TEST-STRING TALLYING COUNT FOR LEADING 0. DISPLAY HOW MANY LEADING 0:,COUNT. STOP RUN. 该代码执行后,将有如下输出信息。SOURCE STRING :0000567.90 HOW MANY LEADING 0:4 3.对首字符进行替换只对字符串中的第一个字符进行替

9、换。该项功能是通过在INSPECT 语句中加上 FIRST 选项实现的。下面代码将前缀为星号的字符串首字符替换为美元符号$。. DATA DIVISION. WORKING-STORAGE SECTION. 01 TEST-STRING PIC X(10). * PROCEDURE DIVISION. MOVE 0000567.90 TO TEST-STRING. DISPLAY SOURCE DATA :,TEST-STRING. INSPECT TEST-STRING REPLACING LEADING 0 BY *. DISPLAY CONVERTED DATA-1:,TEST-STRI

10、NG. INSPECT TEST-STRING REPLACING FIRST * TO $. DISPLAY CONVERTED DATA-2:,TEST-STRING. STOP RUN. 该段代码执行后,将有如下输出信息。SOURCE DATA: 0000567.90 CONVERTED DATA-1:*567.90 CONVERTED DATA-2:$*567.90 以上程序首先将前缀字符进行转换,之后再此基础上再对首字符进行转换。通过两次转换,最终将原始数据0000567.90 转换成了标准输出格式$*567.90 (四) - 字符串的转换FUNCTION语句字符串的转换是以原字符串

11、的字符为基础进行的格式上的转换,并不对原字符进行替换。主要有两种转换方式:一种是对于由字母 组成的字符串中字母大小写的转换方式;另一种是将由数字 组成的字符串转换为具体数值。1.FUNCTION 语句实现字符串中字母大小写的转换。其关键之处是在该语句后加上LOWER-CASE ,或者 UPPER-CASE 选项。下面的代码使用LOWER-CASE 选项,将字符串中的字母全部转换为小写格式。DATA DIVISION. WORKING-STORAGE SECTION. 01 SOURCE-STR PIC X(5). 01 NEW-STR PIC X(5). * PROCEDURE DIVISIO

12、N. MOVE AB-CDE TO SOURCE-ATR. DISPLAY SOURCE-STR. DISPLAY FUNCTION LOWER-CASE(SOURCE-STR). MOVE Ab-Cde TO SOURCE-STR. DISPLAY SOURCE-STR. DISPLAY FUNCTION LOWER-CASE(SOURCE-STR). MOVE FUNCTION LOWER-CASE(SOURCE-STR) TO NEW-STR. DISPLAY NEW-STR. DISPLAY SOURCE-STR. STOP RUN. 执行后为:AB-CDE ab-cde Ab-Cde

13、 ab-cde Ab-Cde LOWER-CASE 只将字符串中的大写字母转换为对应的小写形式。对于字符串中原本为小写的字母字符,以及其他字符不做处理LOWER-CASE 只是 临时对其进行转换,转换后的 结果只在该条语句有效。即 LOWER-CASE 并不将转换结果保存到原字符串中。若要保存转换后的字符串,通常使用MOVE 语句将其保存到一个新的字符串变量中。与 LOWER-CASE 对应, UPPER-CASE 是将字符串中的字母转换为对应的大写形式。2.将字符串转换为具体数值将字符串转换为具体数值将是字符串转换中用处很大的一种转换方式。转换成具体数值 后,该数值同其他普通字符一样,可以参

14、与算术运算了。同时,当需要从键盘输入相应数值时,也更加方面一些。此处是通过在FUNCTION语句后面加上NUMVAL或者 NUMVAL-C实现的。下面使用 NUMVAL 的用法。. DATA DIVISION. WORKING-STORAGE SECTION. 01 SOURCE-STR-1 PIC X(10). 01 SOURCE-STR-2 PIC X(10). 01 RESULT PIC S99V99. 01 RESULT-DPL PIC $.99. * PROCEDURE DIVISION. MOVE -10.50 TO SOURCE-STR-1. MOVE 12.80 TO SOUR

15、CE-STR-2. COMPUTE RESULT = FUNCTION NUMVAL(SOURCE-STR-1) + FUNCTION NUMVAL(SOURCE-STR-2). MOVE RESULT TO RESULT-DPL. DISPLAY RESULT :,RESULT-DPL. STOP RUN. 输出结果是:RESULT :$2.30 FUNCTION NUMVAL 语句将以上两个变量中的字符串转换成具体数值。并将这两个具体数值相加后将结果存入RESULT 变量中。RESULT 变量被定义为一个Signed Numbers 符号类型数据,保存的是具体数值。程序最后将RESULT

16、变量中的具体数值MOVE到 RESULT-DPL 变量中以用于输出。 RESULT-DPL 变量被定义为一个Numeric Edited Fields 格式输出类型。因此,这里相当于又将具体数值转换回成了字符串。NUMVAL-C相当于是 NUMVAL的扩展。当原始字符串出现以下情况时,必须使用 NUMVAL-C选项。原始字符串中有货币流通符号$。原始字符串中有分隔符逗号。另外,无论NUMVAL 还是 NUMVAL-C都允许原字符串中出现正负号。并且,转换后的实际是指遵循原字符串中所指定的正负性。当需要从键盘输入具体数值时,用FUNCTION 的输入方式会更加方便。假设输入数值所被保存的变量为INPUT-DATA ,该变量定义如下。01 INPUT-DATA PIC S999V99. 如令该变量中的数值通过键盘输入的语句如下。ACCEPT INPUT-DATA

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号