COBOL语言数据类型转换方法
- 格式:doc
- 大小:229.00 KB
- 文档页数:18
cobol 语法COBOL语法COBOL(Common Business-Oriented Language)是一种面向商业应用的编程语言,特别适用于处理大型数据和事务处理。
本文将介绍COBOL语法的一些关键要点,并展示其在实际应用中的一些特性。
一、程序结构在COBOL中,程序由多个部分组成,包括IDENTIFICATION DIVISION、ENVIRONMENT DIVISION、DATA DIVISION、PROCEDURE DIVISION等。
IDENTIFICATION DIVISION用于声明程序的名称和作者信息,ENVIRONMENT DIVISION用于定义程序的运行环境,DATA DIVISION用于定义数据,PROCEDURE DIVISION用于编写程序逻辑。
二、数据类型COBOL提供了多种数据类型,包括数字、字符、日期等。
数字类型可以是整数或浮点数,字符类型可以是单个字符或字符串。
日期类型可以表示年、月、日或日期和时间。
在使用数据类型时,需要声明变量的名称和类型,并为其分配初始值。
三、变量和常量在COBOL中,变量和常量都需要使用特定的关键字进行声明。
变量用于存储和处理数据,而常量是固定的数值或字符串。
变量和常量的名称必须符合特定的命名规则,并且需要在使用之前进行定义和初始化。
四、条件语句COBOL提供了多种条件语句,用于根据条件执行不同的程序逻辑。
其中最常用的是IF语句,可以根据条件判断是否执行某个程序块。
在条件语句中,可以使用比较运算符(如等于、大于、小于)和逻辑运算符(如AND、OR)进行条件的组合和判断。
五、循环语句COBOL提供了多种循环语句,用于重复执行某个程序块。
最常用的是PERFORM UNTIL和PERFORM VARYING语句。
PERFORM UNTIL语句会在满足条件之前一直执行程序块,而PERFORM VARYING语句会在指定的范围内重复执行程序块,并可以根据循环变量的值进行控制。
cobol教程COBOL教程COBOL(Common Business-Oriented Language)是一种面向商业应用的编程语言,它主要用于处理大型企业的数据处理和事务处理。
本教程旨在帮助初学者了解和学习COBOL的基本概念和语法规则,从而能够编写简单的COBOL程序。
1. 基本语法COBOL程序由一系列的“句子”组成,每个句子以句点(.)结束。
句子由一系列的“词”组成,每个词由一个或多个字符组成。
COBOL对大小写敏感,因此要注意单词的大小写。
2. 数据定义在COBOL中,需要先定义要处理的数据。
可以使用“DATA DIVISION”来定义数据项及其属性。
数据项可以是数字、字符或日期等类型。
例如,可以定义一个名为“EMPLOYEE-ID”的变量来存储员工的唯一标识。
3. 过程部分过程部分是COBOL程序的核心,用于执行实际的业务逻辑。
可以使用各种控制结构(如IF语句和PERFORM循环)来实现条件判断和循环操作。
通过使用一系列的“句子”来描述要执行的操作。
4. 文件处理COBOL可以处理各种类型的文件,如顺序文件和索引文件。
可以使用“FILE SECTION”来定义文件及其属性,然后使用相关的文件处理语句来读取和写入文件。
5. 运行和调试COBOL程序可以通过COBOL编译器进行编译,并通过COBOL运行时系统来执行。
可以在运行过程中进行调试,以便找出程序中的错误并进行修复。
总结本教程提供了COBOL的基本概念和语法规则的介绍,以及一些常用的编程技巧和注意事项。
希望通过学习本教程,您能够对COBOL有一个初步的了解,并能够编写简单的COBOL程序。
第一章COBOL 概述一、COBOL 的语言特点:COBOL:Common Business Oriented Language通用商业语言它是专门为数据管理而设计的计算机高级语言。
COBOL语言的主要特点:1、适用于数据处理,(科学计算、数据处理、过程控制、计算机辅助设计、人工智能等)数据处理的特点:算术计算量多而逻辑处理少,输入输出量大;数据项之间有清晰的层次关系;大量的分类排序;对打印报表的高要求及多样化等等2、通用性强使用是要注意它的特殊性,COBOL有较高的标准化程序硬件集中管理不同厂家生产的计算机系统所提供的COBOL是COBOL 的标准的全集或子集,设备的逻辑名可能不一样。
3、机构严谨、层次分明、比较接近于自然语言,便于初学者模仿。
二、COBOL的发展概况1959年12月在美国提出了世界上第一个COBOL语言文本并于1960年4月由美国政府印刷局正式发表称之为COBOL—60→COBOL61→COBOL65ANSI标准(美国国家标准化协会)ANSI COBOL68->(修订扩充)-〉ANSI COBOL-74-〉ANSI COBOL-85ISO 标准(国际标准化组织)ISO COBOL-72->ISO COBOL-78三、COBOL源程序结构及书写格式源程序示例:例(P8)将A和B的值相加其和放在B中源程序的结构部(DIVISION):标识部、环境部、数据部、过程部以部头开始以“.”和空格结束节(SECTION):每个节以节头作标识,以“.”和空格结束如WORKING_STORAGE SECTION (工作单元节)段(PARAGRAPH):每个短都有一个段名,以“”和空格结束如PROGRAM__ID EXAM2 句子(SENTENCE):用空格分开的多条语句称为句子最后以“.”和空格结束的一个语句序列语句(STA TEMENT):一条完整的指令用于完成一定的操作子句(CLAUSE):用于完成某一方面的特定功能如环境部中的SELECT子句。
浅谈cobol的几种数据类型COBOL中使用PICTURE子句来定义数据类型. 主要的数据类型有以下几类, 我将分几篇文章分别讲述他们的使用和注意的地方.类型示例说明字母形 A(2) 只能使用26个字符和空格.字符形 X(2) 可以使用字符集定义的字符和数字数字形 S9V99 数字形有三个类型, binary, packed decimal, zoned decimal.数字编辑 -zz9.99 用于格式化数值输出其他如DBCS类型, 浮点形在COBOL使用很少.对于字符,字母形都比较好理解, 所占字符数, 就是其定义的个数. 对于数字编辑形,仅仅用于格式化数值, 不能进行数值运算和布尔比较. 计算字符数需要如下计算:eg: -zz99.99 所占字符数就是计算所有定义字符数, 1(-)+2(zz)+2(99)+1(.)+2(99)=8. 其中-号表示负数显示-号, 正数不显示+号. zz表示前导0, 就是不显示前面的0.eg:PICTURE Value of Data Edited Result-ZZ99.99 +123.45 123.45-ZZ99.99 -123.456 - 123.45至于详细的各类符合和数值编辑的使用, 将会专门写一章来讲述.我们详细说一下数值形,按照带不带符合,可以区分符合形, 非符合形. 安装存储类型分为binary, packed decimal, zoned decimal.以下举例详细说明,zone decimal 一般称9型. eg 9(4)V99或者s9(4)V99, 每个9占一位,符号和V不占位. 示例就分别是6. 如果这个值是1234.56,在内存存储分别是'F1F2F3F4F5F6','F1F2F3F4F5C6'. 对于无符号,就是123456的EBCDIC码,对于带符号,对于正数,最后的F为C表示正,负数为D表示负.示例就是'C6'.packed decmial 也是COMP-3型. 9(4)V99 COMP-3或者s9(4)v99 comp-3型.存储长度计算为[x/2]+1,[x/2]+1表示9的总个数+1/2的取整, 原因是做了压缩存储,这个示范就是4. 如果这个值是123456, 在内存存储分别是'0123456F'和'0123456C', 对于无符号,最后补个F表示无符合,对于带符合,如果是正数就是C,负数就是D.所有总长度就是[x/2]+1.使用的时候, 数值型之间都可以直接进行各类操作. 但需要注意的是, 如果对于未赋值的COMP-3型, 在赋值前做任何计算操作, 将会导致数据例外, 但对于zoned decimal就会才有缺省值,不会有数据例外.还有, 若是作为db2的hv, 就必须类型与DB2的类型匹配, 如果一个9型的来接受,也会造成错误.COMP型的变量常用于表示半个字或者整个字(主机一个字是4个字节), 比如半个字也就是16BIT, 对于有符合的数来说就是-32767~+32767, 所以可以用S9(5) COMP来表示, 当然也可以用S9(4) COMP来表示(因为S9(4)表示的范围是-9999到+9999, 一个字节存不下, 也需要2个自己存储), 对于一个字就是S9(8)或者S9(9).详细可以自己计算.。
cobol copy replacing 用法摘要:I.简介A.COBOL 简介B.复制和替换在COBOL 中的重要性II.COBOL 复制语句A.基本复制语句1.简单复制2.条件复制3.序列复制B.高级复制语句1.字符串复制2.数据块复制III.COBOL 替换语句A.基本替换语句1.简单替换2.条件替换3.序列替换B.高级替换语句1.字符串替换2.数据块替换IV.COBOL 复制和替换的实例A.实例11.背景2.解决方案3.结果B.实例21.背景2.解决方案3.结果V.结论A.总结COBOL 复制和替换的用法B.展望COBOL 在未来编程中的地位正文:I.简介COBOL(Common Business-Oriented Language,通用商业定向语言)是一种高级编程语言,广泛应用于商业和金融领域。
在编写程序时,复制和替换数据是常见的操作。
本篇文章将详细介绍COBOL 中复制和替换的用法。
II.COBOL 复制语句A.基本复制语句1.简单复制:使用COPY 语句将一个数据项复制到另一个数据项。
例如:```COPY A TO B```2.条件复制:使用COPY 语句根据条件来复制数据。
例如:```COPY A TO BWHEN A > 100```3.序列复制:使用COPY 语句对一组数据进行复制。
例如:```COPY FROM A TO BENSURE (B > A)```B.高级复制语句1.字符串复制:使用COPY 语句复制字符串。
例如:```COPY STRING-A TO STRING-B```2.数据块复制:使用COPY 语句复制数据块。
例如:```COPY DB-A TO DB-B```III.COBOL 替换语句A.基本替换语句1.简单替换:使用REPLACE 语句将一个数据项替换为另一个数据项。
例如:```REPLACE A WITH B```2.条件替换:使用REPLACE 语句根据条件来替换数据。
COBOL语言知识点1.DATA ITEM NAMING RULES:长度为30个字节;字符包括A-Z,a-z,0-9和‘-’;横线不能出现在第一个或最后一个;COBOL 关键字用;至少包含一个字符。
2.DATA STRUCTER LEVEL NUMBER77定义一个独立的变量66重命名88定义条件名3.DATA TYPEAlphabetic, Alphanumeric, Alphanumeric-edited, Numeric, Numeric-edited/doc/b911681650.html,P-1,COMP-2,COMP-3,COMP,COMP-5COMP-1:指定内部浮点项目(双精度),8个字节长COMP-2:指定内部浮点项目(单精度),4个字节长COMP-3:压缩十进制(1个字节有两位)COMP-4(COMP):二进制存储COMP-3是IBM Mainframe特有,特意将一下:COMP-3 数据类型同样以二进制的形式保存在文件中,其占位数计算方法如下:占位数 =[ 定义长度 /2+1] [] 表示整COMP-3 数据在文件中存储形式如下例:例如:定义形式 -- 9(4) COMP-3, 占位数 =[ 定义长度 /2+1]=3 赋值: 1521 存储结果: 01 52 1F(F表示正数)赋值: 0 存储结果: 00 00 0F COMP-3 带有符号位时,赋值为正时,最后半个字节为 16 进制 C ;赋值为负时,最后半个字节为 16 进制D例如:定义形式 -- S9(4) COMP-3, 占位数 =[ 定义长度 /2+1]=3 赋值: -1521 存储结果: 01 52 1D (D 表示负数 )赋值: 1521 存储结果: 01 52 1C注意:当 COMP-3 的数据定义无 S ,赋予负值时,最后半个字节仍为 F ,即无法显示负数5.COBOL中常量ZERO(ZEROS,ZEROES):数字令或者字符“0”SPACE(SPACES):空格HIG-VALUE(HIGH-VALUES):将对应的二进制码全部置为1LOW-VALUE(LOW-VALUES):将对应的二进制码全部署为0QUOTO(QUOTOS):引号ALL:相应字符连接而成的字符串6.Arithmetic FunctionFUNCTION SUM(17,21,4.5,-6):计算总和FUNCTION SQRT(11):开平方FUNCTION INTEGER(4.5):取整FUNCTION INTEGER-PART(4.5):四舍五入7.Alphabetic FunctionFUNCTION CHAR(65):ACISS码转换FUNCTION LENGTH('KKKKK'):判断字符长度FUNCTION NUMVAL('+109'):字符转换成数字FUNCTION REVERSE('ABCD'):逆序排列FUNCTION ORD('A'):ACISS码转换8.Range FunctionsFUNCTION MAX(-21,15,2.4):选取最大值FUNCTION MIN(-21,15,2.4):选最小值FUNCTION ORD-MAX:最大值的位置FUNCTION ORD-MIN:最小值的位置FUNCTION RANGE1、COBOL简介COBOL是Common Business-Oriented Language(公用面向商业的语言)的缩写。
COBOL语言的发展概述• COBOL是Common Business Oriented Language(商业通用语言)的缩写。
• COBOL不仅是商业数据处理的理想语言,而且广泛应用于数据管理领域,因此COBOL也被称为“用于管理的语言”。
• 在计算机的应用领域中,数据处理(data processing)是应用最为广泛的一个领域。
数据处理的日益广泛应用要求人们设计出能满足实际数据处理工作中各种要求的一种计算机语言。
COBOL就是在这种形势下应运而生的。
COBOL语言的特点• 最适于数据处理领域。
• COBOL比较接近于自然语言(英语)。
• 通用性强。
• COBOL的结构严谨,层次分明。
• COBOL的缺点是比较繁琐。
COBOL程序的结构• COBOL源程序的结构• 标识部 环境部 数据部 过程部段 段 段 节 节 节 节 节 节 节 节 节 段 …… 描述体 …… 段 ……句子 …… 句子 …… 语句 ……动词 ……COBOL的四部标识部(IDENTIFICATION DIVISION)主要用来指定源程序名字,也可以写入其它用作备忘的某些信息(如日期、作者等)。
环境部 (ENVIRONMENT DIVISION)指出程序中用到的数据文件名与计算机系统的设备的对应关系,即把某一文件名与某一外部设备联系起来。
数据部(DATA DIVISION)程序中所用到的全部变量都应在数据部中说明它们的类型和所占的内存。
过程部(PROCEDURE DIVISION)编写相应的程序语句来实现源程序需要实现的相应功能。
COBOL源程序的书写格式• ANSI书写格式标号区续行区 A 区 B 区(正文区)注释1 6 7 8 11 12 72 73 80• 终端格式• COBOL字符和COBOL字• COBOL字符 COBOL字• 系统字符集保留字• COBOL字符集例如:DIVISION,SECTION • 包括以下字符:用户字(非保留字)・数字:0〜9・大写字母:A〜Z・小写字母:a〜z・ 专用字符: + ,-,*,/等数据名的命名规则• 每个数据名的长度为1〜30个字符之间。
MOD:参数1 根据参数2 整除REM:取余RANGE: 取参数差SUM: 取参数和NUMVAL,NUMVAL-C:从编辑型数字取数REVERSE: 字符传反向UPPER-CASE, LOWER-CASE: 大小写转换CURRENT-DATE, DATE-OF-INTEGER, DATE-TO-YYYYMMDD, DATEVAL, DAY-OF-INTEGER, DAY-TO-YYYYDDD, DISPLAY-OF,INTEGER-OF-DATE, INTEGER-OF-DAY, NATIONAL-OF,YEAR-TO-YYYY, YEARWINDOW:: 日期相关函数MEAN,MEDIAN, MIDRANGE:取中间值LENGTH:参数长度VARIANCE:参数差异度SIN, COS,TAN, ACOS, ASIN, ATAN,: 三角与反三角函数SQRT: 平方根STANDARD-DEVIATION: 标准差LOG, LOG10:对数ANNUITY: 算年金PRESENT-VALUE:现值FACTORIAL:阶乘INTEGER :下界整数INTEGER-PART:取整CHAR 转换成字符(ORD,ORD-MAX,ORD-MIN:字符转数字)MAX,MIN:返回参数中最大/小的WHEN-COMPILED:程序编译日期部分详细解释:/s/blog_78d05bb10100pffv.html1.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 只将字符串中的大写字母转换为对应的小写形式。
コボル基本語法一、COBOL基本語法compla項目使用的Cobol是Micro Focus 公司生产的Cobol,采用在HP-UNIX上运行。
一、cobol的书写格式(每行)1、前6列为序号区(一般不编辑)2、第7列为标示列,仅可以写如下几个标示符。
a. “*”注释符(注释当前行的代码)b “/“注释符(注释当前行的代码,程序编译时,强制程序清单另起一页,不建议使用)c “-“字符串连接符d “D”DEBUG行标示符(程序为DEBUG模式时,标有该标示符的语句行代码执行,否则和注释行效果一样)3、第8列---11列为A区,包括以下内容。
a 部、节名。
b 层号014、第12列---72列为B区,过程部的程序必须写在B区中。
5、第72以后部分不能编辑。
二、cobol的语法结构(几大部分)1、标示部(IDENTIFICATION DIVISION):提供程序的一般性文档说明,本项目只保留程序名(PROGRAM-ID)一项。
2、环境部(ENVIRONMENT DIVISION): 提供程序外部有关的项目。
a.配置节(CONFIGURATION SECTION)①.指定源计算机(SOURCE-COMPUTE).②.目标计算机(OBJECT-COMPUTE).③.设置debug模式(SOURCE-COMPUTE H9000V WITH DEBUGGING MODE)④. 指定读环境变量设置.SPECIAL-NAMES.ENVIRONMENT-VALUE IS CNS-ENV-PARMENVIRONMENT-NAME IS CNS-ENV-NAME.b. 输入输出节(INPUT-OUTPUT SECTION).文件的物理路径的定义。
方法一:(写死文件路径)SELECT FILE-LOG ASSIGN"/usr3/WSI/commonlog/WSI1101.log"ORGANIZATION IS LINE SEQUENTIAL.方法二:(过程部中动态指定文件)SELECT FILE-LOG ASSIGN TO SELECT-FILEORGANIZATION IS LINE SEQUENTIAL.在数据部定义字符串变量SELECT-FILE,在文件FILE-LOG打开前动态指定文件路径。
COBOL语言数据类型转换方法COBOL语言是一种用于商业应用程序开发的编程语言,广泛应用于金融和银行领域。
在COBOL编程中,数据类型转换是一项常见的任务,用于将一个数据类型转换为另一个数据类型。
本文将详细介绍COBOL语言中常见的数据类型转换方法。
1. 字符串转换为数字类型在COBOL中,可以使用函数NUMVAL将字符串转换为数字类型。
该函数将字符串中的数字字符转换为相应的数字值,并返回一个数字类型的结果。
例如,假设有一个字符串变量WS-STRING,其值为"12345",我们可以使用以下代码将其转换为数字类型:01 WS-NUMBER PIC 9(5)....MOVE FUNCTION NUMVAL(WS-STRING) TO WS-NUMBER.在上述代码中,NUMVAL函数将字符串WS-STRING中的数字字符转换为数字类型,并将结果存储在WS-NUMBER变量中。
2. 数字类型转换为字符串COBOL中可以使用函数STRING将数字类型转换为字符串。
该函数将数字类型的数据转换为相应的字符串,并返回一个字符串类型的结果。
例如,假设有一个数字变量WS-NUMBER,其值为12345,我们可以使用以下代码将其转换为字符串类型:01 WS-STRING PIC X(5)....MOVE FUNCTION STRING(WS-NUMBER) TO WS-STRING.在上述代码中,STRING函数将数字变量WS-NUMBER转换为字符串类型,并将结果存储在WS-STRING变量中。
3. 日期转换在COBOL中,日期类型通常使用特定的格式进行存储,如YYYYMMDD。
如果需要将日期转换为不同的格式,可以使用函数EDIT或FUNCTION。
例如,假设有一个日期变量WS-DATE,其值为20211231,我们可以使用以下代码将其转换为另一种格式的日期:01 WS-NEW-DATE PIC X(10)....MOVE FUNCTION EDIT(WS-DATE, 'MM/DD/YYYY') TO WS-NEW-DATE.在上述代码中,EDIT函数将日期变量WS-DATE转换为格式为MM/DD/YYYY的字符串,并将结果存储在WS-NEW-DATE变量中。
等。
目前,这些工作大多数是在IBM ES9000主机的SAFE应用系统平台上进行,该系统联机程序和联机计息程序是用IBM 370汇编语言实现的。
为方便汇编语言读写,在VSAM文件存储的数据中,数据存放格式进行了特殊的定义。
如日期存放采用X(3)型,01年03月15日,存入EBCD码为X‘010315’。
在进行年度计息时,为了实现各种复杂的运算工作,一般采用COBOL语言来实现各种运算。
而采用COBOL语言读取X(3)型数据时,读出的是字符型数据,不能直接进行运算,必须转换为COBOL数据类型的数据后才能进行相应处理。
如刚才的X‘010315’,需要转换为内部十进制数据X‘0010315C’。
本文介绍一种用COBOL语言实现字符型X(3)与内部十进制数据相互转换的方法。
由X(3)型转换为内部十进制由于日期数据总是大于零,在COBOL语言的工作单元节定义变量DATE-FIRST 后,再追加定义COBOL语言的最小数据单元X‘000C’,即十进制12。
由于重定义DATE-CASE为DATE-CHANGE后,DATE-CHANGE是原日期数据的1000倍,于是要在过程部将DATE-CHANGE除以1000。
首先,在COBOL程序WORKING-STORAGE SECTION. 中定义如下内容:WORKING-STORAGE SECTION.01 DATE-CASE.02 DATE-FIRST PIC X(3).02 DATE-SIGN PIC 9(4) COMP VALUE 12.;定点二进制数01 DATE-CHANGE REDEFINES DATE-CASE PIC 9(9) COMP-3. ;内部十进制数据01 DATE-HEX PIC X(3). ;转换前数据01 DATE-DEC PIC S9(7)COMP-3 . ;转换后数据然后,在过程部PROCEDURE DEVISION.中加入如下语句:PROCEDURE DEVISION.MOVE DATE-HEX TO DATE-FIRST .COMPUTE DATE-CHANGE = DATE-CHANGE / 1000.MOVE DATE-CHANGE TO DATE-DEC.由内部十进制转换为X(3)型在进行相反的转换时,要消除因COBOL语言数据类型标志“C”引起的原日期数据前多加的一个0,所以需要将转换数据乘以10,再取出前6位数据即可。
首先,在COBOL程序WORKING-STORAGE SECTION. 中定义如下内容:WORKING-STORAGE SECTION.01 WORK-DATE PIC S9(7) COMP-3.01 AA REDEFINES WORK-DATE.02 A1 PIC X(3).02 A2 PIC X(1).01 DATE-HEX PIC X(3). ;转换后数据01 DATE-DEC PIC S9(7) COMP-3.;转换前数据然后,在过程部PROCEDURE DEVISION.中加入如下语句即可:PROCEDURE DIVISION.MOVE DATE-DEC TO WORK-DATE。
COMPUTE WORK-DATE=WORK-DATE*10.MOVE A1 TO DATE-HEX .===================================================================用法子句(USAGE子句) 使用用法(USAGE)子句可以使程序设计者自由选挥数据杯内存中的存放形式。
譬如,数据项A和B是需要多次进行运算,如果用外部十进制形式则来回转换会大大降低运算速度,这时,可以选择A和B为定点二进制形式或内部浮点形式.如果数据项C和D轻加运算次数少,而且需要多次打印出C和D的结果,这时用外部十进制比较适合,因为它最适合打印的要求,不必再进行转换。
USAGE IS DISPLAY/COMP DISPLAY (标准数据形式。
一个字节放一字符) COMP 定点二近制形式 COMP-1:内部短浮点形式 COMP-2:内部长浮点形式COMP-3:内部十进制形式如果对组合项描述为某一种存放形式,则表示这个组合项的下属各初等项都是这种形式。
USAGE子句指定的数据存放形式不应与PIC 子句指定的数据类型矛盾.长、短浮点形式己确定了内存的长度,不应再用PIC 子句.用WRITE语句输出时,是直接按内存中存放数据形式输出(不加转换的).这是和用DISPLAY语句时不同的.字符处理一.STRING 语句77 A PIC X(3)VALUE ‘ABC’。
77 B PIC X(5)VALUE ALL“*”。
PROCEDURE DIVISON.…STRING A DELIMITED BY SIZE INTO B.…STRING语句执行后,B中内容为ABC**1.STRING语句经常把多个发送字符串连接成一个较成的字符串。
STRING A B C DELIMITED BY SIZE INTO D.2.发送不仅可以是变量,也可以是常量(不得为象征常量ALL)STRING PROVINCE SPACE CITY ““ STREET DELIMITED BY SIZE INTI ADDRESS.SPACE,一个空格,同时在城市与街道间插入3个空格DELIMITED 短语DELIMITED BY (定界)短语,除了使用保留字SIZE,表示整个发送项参加连接操作外,还可以在BY的后面使用字符值常量或字符型数据项。
BY后面的字值常量或数据项内容称作定界符。
在执行STRING语句时,发送项的内容以定界符为界,定界符左边的内容参加合并操作,定界符本身及其右方的内容舍去不用。
如果发送项中没有与定界符相匹配的内容,整个发送项全参加合并操作。
定界符可以是单字符,也可以是多字符的字符串。
77 A PIC X(5)VALUE “ABCDE”。
77 B PIC X(5)VALUE “EFGHI”。
77 C PIC X(10)VALUE ALL“*”。
STRING A DELIMITED BY “C”,B DELIMITED BY “F“INTO C。
则执行后,以的内容为ABE*******。
POINTER短语POINTER(指针)短语是针对接收项的,因为每个STRING语句只能有一个接收项,所以每个STRING语句只能有一个POINTER短语。
POINTER短语,用于规定接收项开始接收字符的起始位置。
这个位置用接收项字符位置的相对号来表示,接收项左起第1字节的相对号是1,第2字节的相对号是2,。
77 P PIC 99.MOVE 2 TO P.STRING A B DELIMITED BY “C”INTO C WITH POINTER P.执行后,C的内容为*ABEFGHI**P的值变为9(2+7)。
OVERFLOW 短语产生溢出的情况1.接收项已满,尚有未发送的字符。
2.接收项已满,尚有未经处理的发送项3.指针短语中的指针变量值不合理,小于1或大于接收项长度。
STRING A B BY SIZE INTO C WITH POINTER P ON OVERFLOW GOTO ERR-OVER。
二.UNSTRING语句UNSTRING语句与STRING语句作用相反,将字符串拆成若干字符串规则:如果发送项长度小于各接收项长度之和。
1.某接收项未装满2.某接收项刚好装满,其右方各接收项没有接收内容。
对于1,系统将未接收项中尚未接收内容的字符位置填充空格,该接收项以右各接收项内容不变。
对于2,凡未已旧换新内容的项均维持原内容不变UNSTRING A INTO B C。
DELIMITED 语句定界符可以是单字符,也可以是多字符,但不可角STRING语句那样,采用保留字SIZE,必须是字符字值常量或字符型数据项。
如果发送项有多个字符或字符串与定界符匹配,则第一个匹配定界符以左的全部内容,作为一个发送字符串,发送给第一接收项,第二个匹配定界符以左,第一匹配定界符以右的内容,作为又一发送字符串,发送给第二接收项。
若2个匹配定界符连在一起,相应接收项则接空格或0。
一个定界短语可有多个定界符,各定界符之间用OR连接,OR表示各定界符只要一个与发送项匹配成功,就确定发送。
UNSTRING A DELIMITED BY “,“OR ”。
“INTO B C。
有时要以连续出现的同样字符作为定界符,在这种情况下,可在字符字值前冠以保留字ALL。
COUNT 短语COUNT 短语是把发送字符串的长度记录在一个用户定义的数据项中如A内容:ABCD//E5B:PIC XXXC:PIC XXXD:PIC XXX执行UNSTRING A DELIMTED BY ‘/’INTO B COUNT IN COUNT-BCD.则B:ABCC: (3个空格)D:E5 (后有一个空格)COUNT-B值为4。
DELIMITER短语DELIMITER(定位符存贮)短语UNSTRING A DELIMITER BY “,” or “;” or ALL “/”INTO B DELIMITER IN DELIM-BC DELIMITER IN DELIM-C.当没有匹配发生时,该接收项对应的定界符存贮区被清成空格POINTER短语用来指示发送项的字符位置此短语通常在单接收项的情况下与DELIMITER短语联合使用。
77 DELIM PIC X.77 PNTR PIC 99.77 ACCEPT-AREA PIC X(80).01 DATA-RECORD03 DATA-ITEM PIC 9(6)OCCURES 10 TIMESINDEXED BY INDEX.PROCEDURE DIVISION.DISPLAY “PLEASE ENTER YOUR DATA.”ACCEPT ACCEPT-AREA.MOVE 1 TO PNTR.MOVE LOW-VALUE TO DELIM.PERFORM UNSTR-PROCESSVARYING INDEX FROM 1 BY 1UNTIL DELIM=”*”UNSTR-PROCESS.UNSTRING ACCEPT-AREA DELIMITED BY ALL SPACES or “*”INTO DATA-ITEM(INDEX)DELIMITER IN DELIMWITH PROINTER PNTR.TALLYING 短语计算实际接收到了多少数据MOVE ZERO TO TLY.UNSTRIGN A DELIMITED BY ALL SPACE or “*”INTO B C D E FTRLLYING IN TLY.假如A只发送了三个字符串,则TLY=3本短语应在POINTER语句之后,而这2个短语又必须在DELIMITER和COUNT之后OVERFLOW短语溢出情况1.指针数值项值不合理,小于1或大于发送项长度。