已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
COBOL字符串的操作()字符串的合并STRING一、STRING 语句的基本用法DATA DIVISIONWORKING-STORAGE SECTION.01FIRST-NAMEPICX(10).01LAST-NAMEPICX(10).01FULL-NAMEPICX(20).PROCEDURE DIVISION.MOVEADAM TO FIRST-NAME.MOVESMITH TO LAST-NAME.STRINGFIRST-NAMEDELMITEDBY SPACE DELIMITED BY SIZELAST-NAME DELIMITED BY SPACEINTO 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:找到前面用于合并的字符串中第一个出现空格的地方。将该空格以前的部分进行合并,空格以后的内容包括该空格在内不参与合并操作。SIZE:将前面对应的用于合并的字符串中的全部内容进行合并。另外BY 后可以接一个变量名称,并且将该变量中保存的字符作为原字符串的截取符。截取符的用法同SPACE选项类似。(3) 字符串的替换INSPECT语句INSPECT语句主要用于对字符串中的指定部分进行替换。字符串的替换和转换是不同的。字符串替换是将原字符串中的部分字符替换成其他字符。转换时保持原字符串的字符不变,只对其格式进行转换。 1.对全体字符进行替换 该项功能是通过在INSPECT语句中加上“ALL”选项实现的。下面这段代码将原字符中所有字符“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 INSPECT :,TEST-STRING. STOP RUN. 该段代码执行后,将有如下输出信息。BEFORE INSPECT : ADCD0A08BAFTER INSPECT : BDCD-B-8B 这种替换方式是对字符串中满足条件的全体字符进行的替换。并且替换后生成的新字符串覆盖了以前的符串。 2.对前缀字符进行替换 这种替换方式是对字符串前面连续出现的一段字符进行替换,即对前缀字符进行的替换。 该项功能是通过在INSPECT 语句中加上LEADING选项实现的。 下面代码对一段表示数字的字符串进行了替换。替换方式为将原字符串中的前缀0替换成前缀星号*,以进 行适当的输出。 DATA DIVISION. 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 :*567.90 通过以上代码可以发现,使用LEADING选项只是对前缀字符进行了替换。这里的前缀字符是从字符串开头处连续出现的一串字符。因此,即使原字符串中在最后还有一个字符0,也并不对其进行替换。 另外INSPECT语句还可以统计并保存前缀字符出现的次数。该项功能是通过结合TALLYING. FOR LEADING.实现的。其中前面一个省略号表示用以保存前缀字符出现次数的变量名。后一个省略号表示该前缀字符。以下代码统计并输出了字符串中前缀字符出现的次数。.DATA DIVISION.WORKING-STORAGE SECTION.01 TEST-STRING PIC X(10).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.90HOW MANY LEADING 0:43.对首字符进行替换只对字符串中的第一个字符进行替换。该项功能是通过在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-STRING.INSPECT TEST-STRING REPLACING FIRST * TO $.DISPLAY CONVERTED DATA-2:,TEST-STRING.STOP RUN.该段代码执行后,将有如下输出信息。SOURCE DATA: 0000567.90CONVERTED DATA-1:*567.90CONVERTED DATA-2:$*567.90以上程序首先将前缀字符进行转换,之后再此基础上再对首字符进行转换。通过两次转换,最终将原始数据0000567.90转换成了标准输出格式$*567.90 (四)-字符串的转换FUNCTION语句 字符串的转换是以原字符串的字符为基础进行的格式上的转换,并不对原字符进行替换。主要有两种转换方式: 一种是对于由字母组成的字符串中字母大小写的转换方式; 另一种是将由数字组成的字符串转换为具体数值。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-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-CDEab-cdeAb-Cdeab-cdeAb-CdeLOWER-CASE 只将字符串中的大写字母转换为对应的小写形式。对于字符串中原本为小写的字母字符,以及其他字符不做处理LOWER-CASE 只是临时对其进行转换,转换后的结果只在该条语句有效。即LOWER-CASE并不将转换结果保存到原字符串中。若要保存转换后的字符串,通常使用MOVE 语句将其保存到一个新的字符串变量中。与LOWER-CASE对应,UPPER-CASE是将字符串中的字母转换为对应的大写形式。2.将字符串转换为具体数值 将字符串转换为具体数值将是字符串转换中用处很大的一种转换方式。转换成具体数值后,该数值同其他普通字符一样,可以参与算术运算了。同时,当需要从键盘输入相应数值时,也更加方面一些。此处是通过在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 SOURCE-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变量中的具体数值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 FROM CONSOLE此时用户需要在键盘上输入的数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学毕业生就业协议书签订流程解析
- 2024年兼职协议样本
- 2024销售合作协议示例
- 个人租房合同书范本
- 房屋室内装修合同书样式
- 合作契约:展会活动合作契约-合同样本
- 广东省餐饮行业劳动合同
- 2024年技术开发合作协议参考
- 高速公路盾构隧道建筑信息模型分类与编码标准
- 2023年高考地理重点难点考点通练-整体性差异性(解析版)
- 仓储物流中心物业安全管理
- 医疗器械注册专员培训
- 期末复习重要考点03 《一元一次方程》十大考点题型(热点题型+限时测评)(原卷版)
- 生物丨金太阳(25-69C)广东省2025届高三10月大联考生物试卷及答案
- 车队车辆挂靠合同模板
- 期中 (试题) -2024-2025学年人教PEP版英语四年级上册
- 动物疫病防治员(高级)理论考试题及答案
- 跨境电商行业研究框架专题报告
- 提升初中生英语写作
- 2024年深圳市优才人力资源有限公司招考聘用综合网格员(派遣至吉华街道)高频500题难、易错点模拟试题附带答案详解
- 高中政治必修四哲学与文化知识点总结
评论
0/150
提交评论