收藏 分享(赏)

COBOL字符串的操作.doc

上传人:精品资料 文档编号:10928190 上传时间:2020-01-21 格式:DOC 页数:6 大小:38.50KB
下载 相关 举报
COBOL字符串的操作.doc_第1页
第1页 / 共6页
COBOL字符串的操作.doc_第2页
第2页 / 共6页
COBOL字符串的操作.doc_第3页
第3页 / 共6页
COBOL字符串的操作.doc_第4页
第4页 / 共6页
COBOL字符串的操作.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、COBOL 字符串的操作()字符串的合并 STRING一、 STRING 语句的基本用法DATA DIVISIONWORKING-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.STRINGFIRST-NAME DELMITED BY SPACE DELIMITED BY SIZELAST-NAME DELIMITED BY SPACEIN

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

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

4、为“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-STRINGREPLACING ALL A BY B.INSPECT SOURCE-STRINGREPLACING ALL 0 BY -.DISPLAY AFTER INSPECT :,TEST-STRING.STOP RU

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

6、1 TEST-STRING PIC X(10).*PROCEDURE DIVISION.MOVE 0000567.90 TO TEST-STRING.DISPLAY BEFORE INSPECT :,TEST-STRING.INSPECT TEST-STRINGREPLACING LEADING 0 BY *.DISPLAY AFTER INSPECT :,TEST-STRING.STOP RUN.该代码执行后,将有如下输出信息。BEFORE INSPECT :0000567.90AFTER INSPECT :*567.90通过以上代码可以发现,使用 LEADING 选项只是对前缀字符进行了替

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

8、VE 0000567.90 TO TEST-STRING.DISPLAY SOURCE STRING:, TEST-STRING.INSPECT TEST-STRINGTALLYING COUNT FOR LEADING 0.DISPLAY HOW MANY LEADING 0:,COUNT.STOP RUN.该代码执行后,将有如下输出信息。SOURCE STRING :0000567.90HOW MANY LEADING 0:43.对首字符进行替换只对字符串中的第一个字符进行替换。该项功能是通过在 INSPECT 语句中加上FIRST选项实现的。下面代码将前缀为星号的字符串首字符替换为美元符

9、号$。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-STRINGREPLACING LEADING 0 BY *.DISPLAY CONVERTED DATA-1:,TEST-STRING.INSPECT TEST-STRINGREPLACING FIRST * TO $.DISPLAY CONVERTED DATA-2:

10、,TEST-STRING.STOP RUN.该段代码执行后,将有如下输出信息。SOURCE DATA: 0000567.90CONVERTED DATA-1:*567.90CONVERTED 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 DIVISION.MOVE AB-CDE TO SOURCE-ATR.DISPLAY SOURCE-STR.DISPLAY FUNCTION LOWER-CASE(SOURCE-ST

12、R).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-CDEab-cdeAb-Cdeab-cdeAb-CdeLOWER-CASE 只将字符串中的大写字母转换为对应的小写形式。对于字符串中原本为小写的字母字符,以及其他字符不做处理LOWER-CASE 只是临时对其进行转换 ,转换

13、后的结果只在该条语句有效。即 LOWER-CASE并 不将转换结果保存到原字符串中 。若要保存转换后的字符串,通常使用 MOVE 语句将其保存到一个新的字符串变量中。与 LOWER-CASE 对应,UPPER-CASE 是将字符串中的字母转换为对应的大写形式。2.将字符串转换为具体数值将字符串转换为具体数值将是字符串转换中用处很大的一种转换方式。转换成具体数值后,该数值同其他普通字符一样,可以参与算术运算了。同时,当需要从键盘输入相应数值时,也更加方面一些。此处是通过在 FUNCTION 语句后面加上 NUMVAL 或者 NUMVAL-C 实现的。下面使用 NUMVAL 的用法。DATA DI

14、VISION.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 SOURCE-STR-2.COMPUTE RESULT =FUNCTION NUMVAL(SOURCE-STR-1)+ FUNCTION NUMVAL(SOURCE-STR-2).MOVE RESULT TO RESULT

15、-DPL.DISPLAY RESULT :,RESULT-DPL.STOP RUN.输出结果是:RESULT :$2.30FUNCTION NUMVAL 语句将以上两个变量中的字符串转换成具体数值。并将这两个具体数值相加后将结果存入 RESULT 变量中。RESULT 变量被定义为一个 Signed Numbers 符号类型数据,保存的是具体数值。程序最后将 RESULT 变量中的具体数值 MOVE 到 RESULT-DPL 变量中以用于输出。RESULT-DPL 变量被定义为一个 Numeric Edited Fields 格式输出类型。因此,这里相当于又将具体数值转换回成了字符串。NUMV

16、AL-C 相当于是 NUMVAL 的扩展。当原始字符串出现以下情况时,必须使用NUMVAL-C 选项。原始字符串中有货币流通符号$。原始字符串中有分隔符逗号。另外,无论 NUMVAL 还是 NUMVAL-C 都允许原字符串中出现正负号。并且,转换后的实际是指遵循原字符串中所指定的正负性。当需要从键盘输入具体数值时,用 FUNCTION 的输入方式会更加方便。假设输入数值所被保存的变量为 INPUT-DATA,该变量定义如下。01 INPUT-DATA PIC S999V99.如令该变量中的数值通过键盘输入的语句如下。ACCEPT INPUT-DATA FROM CONSOLE此时用户需要在 键盘上输入 的数据必须严格按照 INPUT-DATA 定义的格式来进行。例如,当用户需要输入 2.50 和-100.00 这两个数值时,输入方式必须为:+002.50-100.00当使用将字符串转换为具体数值的方式时,代码可以做如下更改。01 INPUT-STR PIC X(10).01 INPUT-DATA PIC S999V99.ACCEPT INPUT-STR FROM CONSOLE.COMPUTE INPUT-DATA=FUNCTION NUMVAL(INPUT-STR).只要如下输入方式即可:2.50-100

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报