首页 COBOL

COBOL

举报
开通vip

COBOL培训课程名称 COBOL语言 培训课程名称 COBOL语言 Version 1.0 *​ 通过讲座与练习,使培训者熟练掌握COBOL语法,规范、以及COBOL语言的一些高级应用 *​ 熟悉开发环境,能够完成一般难度的编程需求。培养受训者解决问题的能力,以及解决问题的方法 *​ 本课程以面授和上机实践为主,中间穿插进行讨论。其中理论授课时间占50%,上机时间占50% *​ 考核采用百分制记录方式。考核内容为:理论闭卷考试+平时练习 开发环境说明 服务器: *​ Windows XP Professional 日文版 ...

COBOL
培训课程名称 COBOL语言 培训课程名称 COBOL语言 Version 1.0 *​ 通过讲座与练习,使培训者熟练掌握COBOL语法,规范、以及COBOL语言的一些高级应用 *​ 熟悉开发环境,能够完成一般难度的编程需求。培养受训者解决问题的能力,以及解决问题的方法 *​ 本课程以面授和上机实践为主,中间穿插进行讨论。其中理论授课时间占50%,上机时间占50% *​ 考核采用百分制记录方式。考核内容为:理论闭卷考试+平时练习 开发环境 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 服务器: *​ Windows XP Professional 日文版 *​ Oracle 9i 服务器端 客户端: *​ 操作系统:Windows XP Professional日本版 *​ COBOL开发环境:NetCOBOL *​ 编辑工具:EditPlus *​ 翻译工具:ChineseWriter *​ 数据库:Oralce9i客户端 *​ 数据库开发工具:PL/SQL *​ 文件比较工具:Beycond Compare 第1章​ COBOL语言概述 COBOL语言概述 COBOL是Common Business Oriented Language(通用商业语言,或称管理语言)的缩写 *​  最适用于数据处理 *​  比较接近于自然语言(英语) *​  COBOL的结构严谨,层次分明 *​  COBOL的缺点是比较烦琐 第一个程序例子 IDENTIFICATION DIVISION. PROGRAM-ID. EXAM. ENVIRONMENT DIVISION. DATA DIVISION. PROCEDURE DIVISION. S. DISPLAY “THE FIRST PROGRAM”. STOP RUN. 每个程序包括四个部 *​  IDENTIFICATION DIVISION (标识部)   主要用来指定源程序名字,也可以写入其他用作备忘的某些信息(如日期、作者等)。 *​  ENVIROMENT DIVISION(环境部) 主要用于指出程序中用到的数据文件名与计算机系统的设备的对 应关系,即把某一文件名与一个外部设备联系起来。 *​  DATA DIVISION(数据部〕   程序中所用到的全部数据(包括输入输出的数据和中间数据)都应在数据部中说明它们的类型和所占内存情况。 *​  PROCEDURE DIVISION(过程部〕   用来给出程序要执行的指令,使计算机产生相应的操作,例如进行数学运算。 COBOL程序结构 COBOL程序结构 COBOL程序的书写 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 标号区 续行区 A区 B区 注释 1~6 7 8~11 12~72 73~80 1-6列 标号区 7列 续行区(-)及注释行(*) 8~11列 A区 部头,节头,段头,层号01,层号77以及文件描述符FD应从A 区开写。 12-72列 B区 正文过程部的句子只能从B区开始写,而不能写到A区去。 73-80列 注释区 编译时被舍弃 写程序时注意的问题 *​ ⑴COBOL 编译系统允许使用大写或小写字母。认为字母大小写相等,但引号内的字符串中字母大小写有区别。写程序时习惯上多用大写。 *​ ⑵相邻的两个COBOL 字之间必须留一个以上空格。 *​ ⑶运算符和等号左右两边必须各留一个空格(需要的话,可以留一个以上空格)。左括号的左侧和右括号的右侧要留一个空格(需要的话,可以留一个以上空格),而内侧不必留空格。如:A + (B + C) / D. *​ ⑷逗号、句号、分号的左边不能留空格。 *​ ⑸一个空格和多个空格作用相同。 *​ ⑹一个语句或句子可以任意写在一行或几行上。一行可以写多个语句或句子。 COBOL字符 *​ 数字:0~9 *​ 大写字母:A~Z *​ 小写字母:a~z *​ 专用字符共15 个: + - * / = ,. ;’ ( ) < > 空格 $ *​ “#”、”!”、”?”、“%“等字符属于系统字符集,只能在COBOL 程序中的字符串(用引号括起来)中出现 COBOL常量 *​ 数值常量 *​ 非数值常量 *​ 表意常量 *不象其他的语言,COBOL不支持自己定义的常量 数值常量与非数值常量 非数值常量数值常量与非数值常量 数值常量是由正负号,小数点,数字组成 *​ 小数点不能多于一个,而且不能出现在常数最右边,因为句号加空格 代表一个句子的结束。(123.和123.45.6) *​ 长度不能超过18 位。 *​ 至少要有一个数字,不能多于一个符号。(+123.6-) *​ 数字之间不能有空格。(12 34 代表两个常量12 和34) 非数值常量 *​ 指用引号括起来的字符串(“CHINA”,’JAPAN’)。 *​ 如果想把引号也包括在非数值常量中,可以使用QUOTE 保留字。但是QUOTE 不能代替引号,只有在引号外再使用QUOTE 保留字,它才能起到字符串的定界作用。 *​ 例子:DISPLAY QUOTE ’ABCD ’ QUOTE 正确。 表 表意常量 *​ ZERO,ZEROS,ZEROES 表示一个或多个零字符(16进制‘F0’) *​ SPACE,SPACES 表示一个或多个空格字符(16进制‘40’) *​ HIGH-VALUE,HIGH-VALUES 表示一个或多个字符具有最高值(16进制‘FF’, 2进制‘11’) *​ LOW-VALUE,LOW-VALUES 表示一个或多个字符具有最小值(16进制‘00’,2进制‘00’) *​ QUTE,QUTES 表示一个或多个引号字符(16进制‘7F’) *​ ALL 常量表示一个或多个该常量组成的字符串 COBOL变量 数据名相当于其它语言中的变量名。代表内存中某段存储单元。通过数据名从内存取出数据或者将数据存放到内存中。数据名的命名规则 *​ 数据名的长度为1~30 个字符之间。 *​ 能由字母、数字和连字符组成,而且其中至少应有一个字母。第一个和 *​ 最后一个字符不能用连字符。COBOL 并不一定要求数据名是有意义的英文字,但由于COBOL 具有成文自明的特点,习惯上把数据名定义成有意义的COBOL 字(用户定义字)。 *​ 数据名中不能出现空格,空格表示一个COBOL 字的结束。 *​ 保留字不能作为用户定义的数据名。 第二章 标识部与环境部 标识部 标识部的作用是标识一个COBOL源程序,即为程序加上标志以便识别。 标识部必写部分: *​ IDENTIFICATION DIVISION.(部头) *​ PROGRAM-ID. 程序名.(程序标识段) 标识部任选部分: *​ AUTHOR. 作者姓名 *​ INSTALLATION. 计算机设置的场所. *​ DATE-WRITTEN. 源程序编写日期. *​ DATE-COMPILED. 源程序编译日期. *​ SECURITY. 保密程度. 环境部 *​ 环境部的作用是说明程序运行的环境,即程序是在什么软硬件环境下运行的。要说明程序用到哪些设备,哪些文件,将程序中用到的内部文件与外部文件(或外部设备)之间建立联系,这种联系是通过SELECT 子句实现的。 *​ 语法 ENVIRONMENT DIVISION. (环境部) CONFIGURATION SECTION. (配置节) SOURCE-COMPUTER. 源计算机名. OBJECT-COMPUTER. 目标计算机名. [SPECIAL-NAMES. 专用名描述项] [INPUT-OUTPUT SECTION. (输入输出节) FILE-CONTROL. 文件控制描述体 [I-O-CONTROL. 输入输出控制描述体]] 配置节 *​ 源计算机指的是编译源程序时使用的计算机。 *​ 目标计算机指的是编译后的目标程序运行时使用的计算机。 *​ 专用名段把系统中原规定的一些设备名或功能名或符号改为用户自己指定的名字或符号。专用名段的一般格式: SPECIAL-NAMES. [DECIMAL-POINT IS COMMA.] [CURRENCY SIGN IS 非数值常量.] [专用名 IS 助忆名.] CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-AS400. OBJECT-COMPUTER. IBM-AS400. 输入输出节 *​ 输入输出节包括两个段:文件控制段和输入输出控制段(I-O-CONTROL,几个文件共用一段内存,不常用)。 *​ 文件控制段的主要功能是给程序中使用的文件命名。指出存放该文件的外部设备及其其它有关文件控制的信息。文件控制段的一般格式: INPUT-OUTPUT SECTION. FILE-CONTROL.(段名写在A 区) SELECT 文件名 ASSIGN TO 外部文件名.(正文写在B 区) 文件的组织形式 文件的组织形式是指记录在文件中的排列的方式。 *​ 顺序文件(sequential file) 。在建立文件时,先送入文件的记录排在前面,后送入的记录排在后面。顺序文件的记录从头至尾按顺序列出。现有记录之间不能删除记录和插入新记录,只能在末尾增加新记录。记录在文件中的排列顺序,读出的顺序和建立时的顺序三者是一致的(先入先出)。 *​ 相对文件(relative file) 。在建立文件时,除了送入记录本身之外,还要对记录的顺序编号,相对文件记录按逻辑记录号引用,记录可以通过指定相对关键字按任意顺序处理。 *​ 索引文件(indexed file) 。在建立文件时,在存储设备上除了开辟一个区域存放记录外,还建立一个” 目录 工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录 ”以便查找,这个目录表称为索引。 *​ 直接文件(direct file) 。又叫随机文件,在建立文件时,记录不必顺序存放,由程序指定某一地址直接存放。读取记录时,先计算地址再读取记录。 文件的存取方式 文件组织 存取方式 顺序文件 顺序存取 索引文件 顺序存取、随机存取、动态存取 直接文件 随机存取 相对文件 顺序存取、随机存取、动态存取 文件组织的从句 文件类型 语法 顺序文件 SELECT file-name ASSIGN TO implementor-name ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS data-name. 相对文件 SELECT file-name ASSIGN TO implementor-name ORGANIZATION IS RELATIVE ACCESS MODE IS [SEQUENTIAL RANDOM DYNAMIC] RELATIVE KEY IS data-name-1 FILE STATUS IS data-name. 索引文件 SELECT file-name ASSIGN TO implementor-name ORGANIZATION IS INDEXED ACCESS MODE IS [SEQUENTIAL RANDOM DYNAMIC] RECORD KEY IS data-name-1 ALTERNATE RECORD KEY IS data-name-2 WITH DUPLICATES 第三章 数据部 数据部的作用 数据部是整个COBOL 源程序中唯一描述数据的部分,数据部的作用 是定义数据项属性,描述数据结构。过程部中出现的所有数据项(输入 数据,输出数据,中间数据)都应当在数据部中对它们的属性进行说明。 包括: *​ 每一个数据项的类型(是数值型或字符型...),它们在内存中的存储形式, 它们的长度。 *​ 数据项间的相互关系(用层号表示)。 *​ 描述记录与文件的关系,即内存中的数据输入输出记录区是与哪一个文件有关的。 *​ 文件的属性(FD 描述体:由多少个记录组成一个物理块,一个记录包含多少个字节,文件有无标号记录等)。 数据的特点---层次的概念 数 数据有两种,一种是孤立数据项,一种是组合数据 层次的规定: 结构:记录组合项初等项 层次下:从01开始,到49, 外层的层号小,里层的层号大。 66层用于重命名 77层一般用于定义无层次的变量 88层用于定义条件名 例子: 01 GZTJ. 05 ZGXM PIC X(20). 05 SR. 10 JBSR PIC 9(07). 10 BTSR PIC 9(07). 05 KC. 10 BX PIC 9(07). 10 SDS PIC 9(07). 05 SFGZ PIC 9(08). 数据部的结构 数据部的结构 *​ 文件节(FILE SECTION)用来描述程序中用到的输入文件和输出文件及其记录中各数据项的属性。 *​ 工作单元节(WORKING-STORAGE SECTION) 用来描述程序中用到的非输入输出数据项(中间数据项)。 *​ 联接节(LINKAGE SECTION) 用来描述与调用程序间发生数据传递的数据项。在子程序中设定该节。 *​ 报表节(REPORT SECTION), 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 报表栏的打印形式和方法。 *​ 通信节(COMMUNICATION SECTION),用于前后台数据之间的通信。 文件节(FILE SECTION) 文件描述体的通常格式:(花括号的作用是表示在花括号中的各项中选择其一) FD 文件名 LABEL {RECORD IS } {STANDARD} {RECORDS ARE } {STANDARD} [ BLOCK CONTAINS [整数-1 TO ] 整数-2 { RECORDS } { CHARACTERS }] [ RECORD CONTAINS [整数-3 TO ] 整数-4 CHARACTERS ] [ VALUE OF LABEL IS [字符常量-1 ] ] [ DATA {RECORD IS } 数据名-1 [,数据名-2 ] ...] 例子:FD S0-FILE RECORD CONTAINS 36 CHARACTERS. 01 S0-REC. 03 S0-KEY-VAN. 05 S0-TCD PIC 9(02). 05 S0-NM-VAN PIC X(30). 03 S0-KEY-SYS. 05 S0-SCD PIC 9(04). 字型子句(PIC子句) *​ 数据项是什么类型的,如果数据项是数值型的,还要描述数据的符号和小数位数。 *​ 数据项占据多大内存。 *​ 是否需要按照打印的要求准备有关字符。(输出数据的编辑形式) PICTURE IS 描述字符串 PIC 数值型数据---“9”描述符 表示可以放入一个0~9之间的数字 02 X PIC 9999. 2​ Y PIC 9(5). 描述         数值       在内存中表示    02 X PIC 9999 1234     1234    02 Y PIC 9(5) 467      00467    02 Z PIC 99 86     86    02 T PIC 9(6)   11011    011011 若 MOVE 1.25 TO Z, Z中的内容为 01,小数点后的舍弃 若 MOVE -1.25 TO Z, Z中的内容为 01,小数点后的舍弃,负号也舍弃 数值型数据 - “V” 描述符 指出在数值数据结构中隐含的小数点的位置 02 M PIC 999V99.   说明: 1. V隐含小数点的位置,占5个字节,传送时按小数点对齐,向两边延伸 MOVE 215.63 TO M -> M=213.63 MOVE 1215.637 TO M -> M= 215.63(以小数点对齐刑两边截取) 2. 只能出现一个V 3. 按隐含的小数点位置对准进行运算 A PIC 9(3)V9. A=010.0 B PIC 9(2)V9(2). B=02.00 C PIC 9(2)V9(2). COMPUTE C=A+B => C=12.00 4. 显示时,不显示小数点(用编辑型显示小数点)       描述          数值         在内存中表示    02 A PIC 99V99       87.5            8750    02 T PIC 999V99      498.5           49850    02 W PIC 9(3)V9(2)     781            78100    03 N PIC 9(4)       1245.6           1245    03 H PIC V999       1.234           234 数值型数据 - “P” 描述符 *​ 为了节省内存,对低位上有若干个零的数和小数点后若干位后才有非零数字的数,可以用P 描述符。如:表示10000000 和0.000023 1. 01 A PIC 9PPPPPPPPPP. 用9999999999来描述,占10个字节。为了节省内存,低位上有若干个0的数,可以用“P”来描述。A在内存中只占1个字节,表示1x109,也可以写成:01 A PIC 9P(9). 2. 01 A PIC PPPP99. 表示0.000099 3. 描述              内存中数字    等价的算术量    03 AMOUNT PIC 9(4)PPPP     1802      18020000    03 WAT PIC 9(3)P(3)        015       15000    03 WAT PIC P(3)9(2)        11       0.00011    03 WAN PIC VPP99        87       0.0087  4. P 描述符在COBOL中不常用   数值型数据 - “S” 描述符 在数据项中放入一个带符号的数,可以用S 描述符。 02 D PIC S99. (S不计数据项长度,表示负号,只能在99最前面)    描述        数值         内存中的表示  02 B PIC S9(4)V9(2)   126.89         012689     02 C PIC S9(4)V9(2)   -1112.34        111234     02 D PIC S9(4)V99    -0.25          000025    02 E PIC S9(4)V99    -727.18         072718 字母型数据 - “A” 描述符 字母型数据用A 描述符,只能存放字母和空格。 02 A2 PIC AAAA. 02   A2 PIC A(4).   MOVE “ABCD” TO T T内存中的表示 ABCD 不只能存放字母和空格以外的字符,也可以用X描述 字符型数据 - “X” 描述符 由任意的COBOL 字符组成的数据称字符型数据,字符型数据用X 描述符 01   A PIC X(2). 描述 送入的数据 内存中的情况 02 R1 PIC X(4) BOOK BOOK 02 R2 PIC X(8) SIN(X)          SIN(X)_ _ 02 R3 PIC X(7) COBOL-74         COBOL-7 02 R4 PIC X(12)  DATA-NAME      DATA-NAME _ _ _ 编辑型数据 编辑型数据项仅仅是为了输出的需要,不能用来运算 *​ 插入小数点 “.”,用“.”描述符 例:PIC 99.99. *​ 插入小数点 “,”, 用“,”描述符 例:PIC 999,99.99. *​ 插入“0”,用“0”描述符 例:PIC 9990000. *​ 插入空格用”B”描述符 例:PIC B999B. *​ 插入正负号,用”+”或”-”描述符 例:PIC +99. *​ 插入”$” 例:PIC $99.*显示的是$12,也可是其他数字,但是数字前必须有$. *​ 浮动插入正负号和$ 例:PIC $$$.99. *​ 取消高位0,用“Z”和“*”描述符 例:PIC Z999. *​ 插入:”DB”和”CR”字符 赋初值子句(VALUE 子句) COBOL 中允许直接对工作单元节中数据赋以初值。 *​ 只能对工作单元节中的数据项赋初值。不能对文件节中输入输出文件中的数据项赋初值。 *​ 如果在组合项的描述体中使用VALUE 子句,初值只能是表意常量或非数值型常量。如: 01 A VALUE ‘1234’. 03 A1 PIC 99. 03 A2 PIC 99. **A1=12,a2=34** *​ 当用一个带符号的数值作初值时,相应的PIC 子句中应该有S 描述符。 *​ 赋初值时应注意类型的一致性。 *​ VALUE 子句给出的值应适合PIC 子句描述的范围,否则会出现截断或产生错误。 USAGE子句-1 USAGE子句用于指定子句是用来指定数据项在内存中的存储形式,一般格式为: [USAGE IS] {DISPLAY, COMPUTATIONAL, COMP} USAGE IS DISPLAY 是“显示型用法”,适用于显示、打印 COMPUTATIONAL(COMP)是“计算型的用法”,适用与计算 DISPLAY 标准数据形式,一个字节放一个字符   COMPUTATIONAL 定点二进制形式 COMP  COMPUTATIONAL-1 内部短浮点形式  COMP-1  COMPUTATIONAL-2 内部长浮点形式  COMP-2    COMPUTATIONAL-3 内部十进制形式  COMP-3 USAGE子句-2 例如:02 A PIC 9(4) USAGE IS COMP. 或:02 A PIC 9(4) COMP. 用DISPLAY显示的结果仍同原样。00000   例如:02 B PIC 9(6) USAGE IS DISPLAY. 02 B PIC 9(6) DISPLAY. 02 B PIC 9(6). 如不写DISPLAY,则表示隐含。     例如:01 T. 02 T1 USAGE COMP. 03 X PIC S9(3). 03 Y PIC S9(3). 组合项的全部初等项为COMP. 数据在计算机内的表示形式 *​ 字符数据在内存中的存取形式: 字符型、字母型和数值编辑型、字符编辑型数据项中的数据,每一个字符都在内存中占一个字节。这种形式称为标准数据形式。 *​ 数值型数据在内存中的存取形式 1.外部十进制形式 按数值在机器外部的表现形式,一个数字在内存中占一个字节。 2.内部十进制(缩合十进制)形式 为节省内存,可以只用四位二进制数字来代表一个十进制数。在一个字节 中放两个十进制数字。符号也占半个字节。这种存放形式称为内部十进制。在 COBOL 中用COMP-3 表示。例如: 03 R2A-DEN PIC 9(06) COMP-3. 03 R2A-GYO PIC 9(02) COMP-3. 内部十进制占用内存的计算方法:ROUND((N+1)/2)个字节。 3.定点二进制形式(COMP) 先把十进制数化成定点二进制数形式,然后放在内存中。COBOL 规定在内存中根据数据 项的长度分别用二字节,四字节或八字节来存放一个以定点二进制形式存放的数。 4.外部浮点数形式 例如:01 A PIC +9.99999E+99. 01 B PIC +9V99999E-99. A 在内存占12 个字节,B 在内存占11 个字节。 5.内部浮点形式 它以内部的指数形式来表示一个数,以固定长度的内存单元来存放一个数,以四个字 节表示一个数,称为短浮点形式(COMP-1) 。以八个字节表示一个数,称为长浮点形式 (COMP-2)。 第四章 过程部之基本语句 过程部概述 *​ 以部头PROCEDURE DIVISION 开头。部头从A 区开始书写。过程部的层次结构是:节、段、句子、语句。 *​ 过程部的语句都以一个动词开始,它表示计算机应执行的操作。 *​ 语句中的动词后面一般要跟以一个操作的对象。操作对象可以是数据名或文件名。 *​ 过程部的语句一律从B 区开始书写。一个语句可以任意写在一行或几行上。续行也应从B 区开始。 语句列表 *​ 4.1 输入输出语句 *​ 4.1.1 接收语句(ACCEPT 语句) *​ 4.1.2 显示语句(DISPLAY 语句) *​ 4.1.3 复写语句(COPY 语句) *​ 4.1.4 读语句(READ 语句) *​ 4.1.5 写语句(WRITE 语句) *​ 4.1.6 打开语句(OPEN 语句) *​ 4.1.7 关闭语句(CLOSE 语句) *​ 4.2 算术运算语句 *​ 4.2.1 加法语句(ADD 语句) *​ 4.2.2 减法语句(SUBTRACT 语句) *​ 4.2.3 乘法语句(MULTIPLY 语句) *​ 4.2.4 除法语句(DIVIDE 语句) *​ 4.2.5 计算语句(COMPUTE 语句) 4.3 传送语句(MOVE 语句) 4.4 转移语句(GO TO 语句) 4.5 条件语句(IF 语句) 4.6 停止语句(STOP 语句) 4.7 执行语句(PERFORM 语句) (复杂) 接收语句(ACCEPT语句) *​ 使用ACCEPT 语句直接从终端键盘或系统指定的输入设备上输入少量的数据。 *​ ACCEPT 语句的一般格式: ACCEPT 标识符 [FROM 助忆名(助忆名与环境部专用名段有关)] *​ 说明: *​ 标识符指的是能唯一地标识一个数据项的数据名。 *​ 助忆名是一个用来代表一个外部设备的名字。需要在环境部中的专用名段事先说明助忆名和哪种外部设备想联系。如果不写FROM 部分,则表示从系统隐含指定的设备上读入一个数据。每种计算机系统都分别规定隐含的输入设备。一般指定为控制台。 *​ ACCEPT 后面只能跟一个标识符,不能在一个ACCEPT 语句中写两个以上标识符。但是,如果两个标识符(W-NUM, W-CHAR) 属于同一组合项(W-NUMCHAR),则可以通过ACCEPT W-NUMCHAR 使W-NUM, W-CHAR 接收到数据。W-NUMCHAR 被认为是字符型变量,如果输入数据长度大于变量所占内存,遵循左对齐原则。 *​ ACCEPT 对于调试程序比较方便,但是由于人工干预,会影响计算机效率。 *​ 例子: *​ ACCEPT A *​ ACCEPT A FROM DATE 显示语句(DISPLAY 语句) *​ 将少量数据从计算机内存中输出到某一指定的外设上,可用DISPLAY 语句。 *​ DISPLAY 语句的一般格式 DISPLAY 标识符1(或者常量) [标识符2(或者常量) ] [UPON 助忆名] *​ 如果没有UPON 可选项,在计算机系统隐含指定的输出设备上显示数据。每执行一个DISPLAY 语句,总是从一个新行开始显示的。多用于调试程序时使用。 复写语句(COPY 语句) *​ 利用COPY 语句可以可以使某些记录描述和数据描述为不同的程序共用。为此 要建立一个源程序库,将上述这些共同使用的源程序中的某一部分事先存入库 中。编码人员用COPY 语句就可以将这些源程序体插入到自己的源程序中。 *​  COPY 语句一般格式: COPY 库名 REPLACING 标识符1 BY 标识符2 *​ 标识符的含义为不超过30 个字符组成的字符序列。 例如: COPY IN-FILE REPLACING ==IN== BY ==A==.(用A 替换IN) COPY 语句不仅可用于数据部,而且也可用于其它部分。使用COPY 语句可以减少写程序的工作量,便于程序的保存和修改。 读语句(READ 语句) *​ 用于从外部数据文件上读入数据输入到程序的数据项。存取操作以文件为对象,以记录为单位。文件是按名字存取的。 *​ READ 语句最简单的格式为: READ 内部文件名(不直接使用外部文件名,是为了便于移植) *​ 每执行一次READ 语句,就从内部文件名对应的外部文件中读入一个记录,而不是整个文件。并将读入的记录放入到内存(程序为存储记录在内存区专门开辟一片存储单元)。 *​ READ 语句一般格式: (INTO ident 是指将读入的记录写入到标识符中。而statements 是指所触发的事情) *​ 1.顺序访问 *​ READ 内部文件名 RECORD [INTO ident] [AT END statements] [NOT AT END statements] *​ [END-READ] *​ 2.随机访问 *​ READ 内部文件名 RECORD [INTO ident] [INVALID KEY statements] [NOT INVALID KEY statements] [END-READ] *​ 3.动态访问 *​ READ 内部文件名 NEXT RECORD [INTO ident] [AT END statements] [NOT AT END statements] [END-READ] *​ READ 内部文件名 RECORD [INTO ident] [INVALID KEY statements] [NOT INVALID KEY statements] [END-READ] 写语句(WRITE 语句) *​ WRITE 语句将内存区中的数据输出到外部设备或写入文件中。 *​ 1.顺序文件的格式 WRITE 记录名 [FROM ident] [BEFORE ADVANCING id-lit LINE AFTER PAGE] *​ AFTER 是先移后打,即先移行再打印,打印完后不再移行。BEFORE 是先打后移, 打印之前不移行,打印完后再移行。当不出现AFTER 或BEFORE 时,按AFTER 1 处 理。 *​ 在许多计算机系统的COBOL 中,在用WRITE 语句在打印机上打印记录时,输出记 录区的第一个字符被系统作为“纵向走纸控制“之用。也就是说,输出的每一记录的第 一个字符将不输出而作为控制走纸字符之用。 *​ 如果将不同内容通过相同结构输出到某一文件中,每次记录写入前赋值,该记录被输出之后系统将不再保存该记录的值。即下一次赋值时,旧的内容会被新的内容新所覆盖。”记录名”必须是紧跟在该输出文件FD 描述体之后定义的记录名。 打开语句(OPEN 语句) *​ OPEN 语句一般格式: OPEN INPUT OUTPUT 内部文件名 I-O EXPEND *​ INPUT 方式:文件只能读取。如果要打开的输入文件不存在,则会触发出错误处理。 *​ OUTPUT 方式:生成程序写入记录的新文件。如果要打开的输出文件已经存在,则所有记录被删除,否则生成新文件 *​ I-O 方式:文件即可读取也可写入。如果文件不存在,则打开操作不成功,会产生错误条件。 *​ EXTEND 方式:与OUTPUT 方式相似,只能写入文件。程序将新记录写入文件末尾。如果文件不存在,则打开操作不成功。 关闭语句(CLOSE 语句) *​ CLOSE 语句一般格式: CLOSE 文件名1 *​ 说明: *​ OPEN 与CLOSE 用法不同,CLOSE 不必指出文件类型。 *​ 一个程序中OPEN 与CLOSE 成对出现。 *​ 对外部文件进行读写操作之前要先将该文件打开, 读写操作结束后,关闭文件。关闭后,不能再对该文件进行读写操作,如需再用,可以再打开。 加法语句(ADD 语句) *​ 1.加法语句的一般格式。(标识符1 ,标识符2 是数据名或是常量) ADD 标识符1 , 标识符2… TO 标识符3 , 标识符4 ADD 标识符1 , 标识符2… GIVING 标识符3 , 标识符4 *​ 2.加法语句的几种不同的形式。 *​ ⑴ADD A TO B.表示数据项A 的值和数据项B 的值相加,结果置于B 中。 *​ ⑵ADD A,B GIVING C.表示将A 和B 相加,结果放在C 中。 *​ ⑶ADD A,B TO C,D.表示C=A+B+C,D=A+B+D *​ 3.注意事项: *​ 在TO 和GIVING 后面只能是数据名,而不能是常量。TO 前后的数据名的次序 *​ 不要随意更换(ADD A TO B 不等于ADDB TOA) 。GIVING 后面可以跟几个数据名。 减法语句(SUBTRACT 语句) *​ 1.减法语句的一般格式。(标识符1 ,标识符2 是数据名或是常量) SUBTRAC 标识符1 , 标识符2… FROM 标识符3 , 标识符4 SUBTRAC 标识符1 , 标识符2… FROM 标识符3 GIVING 标识符3 , 标识符4 *​ 2.减法语句的几种不同的形式。GIVING 后面可以跟几个数据名。 ⑴SUBTRACT B,C FROM A,D.表示A=A-B-C,D=D-B-C。 ⑵SUBTRACT B,C FROM A GIVING X.表示X=A-B-C。 如果不带GIVING,FROM 后面不能是常量。 1.乘法语句的一般格式。(标识符1 ,标识符2 是数据名或是常量) MULTIPLY 标识符1 BY 标识符2 , 标识符3… MULTIPLY 标识符1 BY 标识符2 GIVING 标识符3 … *​ 2.乘法语句的几种不同的形式。 ⑴MULTIPLY A BY B,C.表示B=A*B,C=A*C。 ⑵MULTIPLY A BY B GIVING X.表示X=A*B。 如果不带GIVING,BY 后面不能是常量。带GIVING 时,BY 后面可以是常量,GIVING 后面不能是常量。总之存放值的项,只能是数据名,不能是常量。 除法语句(DIVIDE 语句) *​ 除法语句的几种不同的形式。 DIVIDE A INTO B,C.表示B=B/A,C=C/A。 DIVIDE A INTO B GIVING C.表示C=B/A。 DIVIDE A BY B GIVING C. 表示C=A/B。 *​ 如果不带GIVING,INTO 后面不能是常量。带GIVING 时,INTO 后面可以是常量,GIVING 后面不能是常量。总之存放值的项,只能是数据名,不能是常量。如果除不尽,则多余的位截去。 计算语句(COMPUTE 语句) *​ COBOL 还提供了一种计算语句,可以进行比较复杂的四则运算。一般格式: COMPUTE 标识符1 = 算术表达式 *​ 例如:COMPUTE Z = (B – A) * 2 + C * X – E / D. 说明: *​ 所有运算符两侧均应留一空格。 *​ 括号的外侧应留空格,内侧可不要留空格。 *​ COMPUTE 语句运算速度较单一的加减乘除慢。 传送语句(MOVE 语句) *​ MOVE 语句用来实现数据的传送,将一个数据从一个内存域送到另一个内存域中。相当于其它高级语言中的赋值语句。传送规则(各种类型数据的特点通过MOVE 语句体现): MOVE A TO B. ( A 称为发送项,B 称为接收项。) 说明: *​ 如果接收项和发送项在数据部中描述的类型和长度相同,则按字节一一对应地传送。 *​ 如果接收项与发送项长度不相同,而两者都是数值数据项,则按小数点对齐原则处理。如果是整数,则认为小数点在最后一位数字之后。接收项长度大于发送项,则多余位补零,接收项长度小于发送项,则产生截断。 *​ 对字母或字符数据的传送,按左对齐原则处理。如接收项长度大于发送项的长度,则多余位置补空格,如接收项长度小于发送项的长度,则从右端截断。 *​ MOVE 语句可以将一初等项内容传送给另一初等项,也可以将一组合项内容传送给一初等项,也可以将一初等项内容传送给一组合项。 *​ 发送项是数值型数据,而接收项是编辑数值型数据,则先将发送项中数据 按接收项的描述要求进行编辑,然后再传送。 *​ MOVE A(2:6) TO B。(将变量A 从第二位开始取出6 位传送给变量B) 转移语句(GO TO 语句) *​ GO TO 语句是一个无条件转移语句,程序执行到此语句时,无条件地转到指定的节或段去。但是,程序中尽量少使用,以避免无限循环(死循环) *​ 一般格式: GO TO 过程名 条件语句(IF 语句) *​ 关系运算符意义 IS GREATER THAN (>) 大于 IS LESS THAN (<) 小于 IS EQUAL TO (=) 等于 NOT GREATER THAN (NOT >) 不大于 NOT LESS THAN (NOT <) 不小于 NOT EQUAL TO (NOT =) 不等于 *​ IF 语句的两种形式 IF 条件语句组 IF 条件语句组1 ELSE 语句组2 执行语句(PERFORM 语句) *​ 在一个COBOL 程序中,往往有一部分语句是需要多次执行的。我们希望重复的部分只出现一次,即把重复的部分单独写成一段或一节。每次需要执行这部分语句时转去该段,执行完后转回来。这时需要用到执行语句(PERFORM 语句)。另外,当程序很长时,也可以分成若干个节,这些节的调用也是通过这时执行语句(PERFORM 语句)。 *​ PERFORM 语句的一般形式: *​ PERFORM 过程名1 [THRU 过程名2] 停止语句(STOP 语句) *​ 当实现了程序预期的要求后,应使程序停止执行。 *​ 格式为:STOP RUN 第五章 过程部之高级语句 语句列表 *​ 初始化语句(INITIALIZE 语句) *​ 对应传送(带CORRESPONDING 子句的MOVE 语句) *​ 四舍五入处理(ROUNDED 子句) *​ 余数字句(REMAINDER 子句) *​ IF 语句 *​ EVALUATE 语句 *​ CONTINUE 语句 *​ 字符串连接语句(STRING 语句) *​ 字符串分解语句(UNSTRING 语句) *​ 检测语句(INSPECT 语句) *​ 执行语句(PERFORM 语句) *​ 出口语句(EXIT 语句) 初始化语句(INITIALIZE 语句) INITIALIZE 语句将数据项的值设置为初始值。如果不指定要设置的数 据项数值,则数字和数字编辑型数据初始化为0,其它所有数据项初始 化为空格。 INITIALIZE 语句的一般形式: INITIALIZE 数据名 [REPLACING ALPHABETIC ALPHANUMERIC NUMERIC DATA BY id-lit] ALPHANUMERIC-EDITED NUMERIC-EDITED MOVE语句的高级技巧 同类型数据间的传送规则 数值型数据之间的传送,按小数点位置对齐,如发送项长于接收项,则多余位截去,如短于接收项,接收项的空位补零 字母或字符型数据间的传送,按左端对齐,如发送项长于接收项,右端多余位截去,如短于接收项,右端补空格 编辑传送。发送项是数值型数据,而接收项是编辑数值型数据,则先将发送项中数据按接收项的描述要求进行编辑,然后再传送。不能由编辑型数据传送给数值型数据 MOVE语句的高级技巧 (1).同类型数据间的传送规则: 数值型数据之间的传送,按小数点位置对齐,如发送项长于接收项,则多余位截 去,如短于接收项,接收项的空位字母或字符型数据之间的传送,按左端对齐,如发送项 长于接收项,右端多余位截去,如短于接收项,右端补空格。 (2).编辑传送 发送项是数值型数据,而接收项是编辑数据型数据,则先将发送项中数据按接收项描述要求进行编辑,然后再传送。 传送的方向是:由数值形数据传送给编辑型数据,而不能由编辑型数据传送给数值型数据。 77 A PIC 9(4)V99 77 B PIC $(6). 99 MOVE A TO B 是正确的 MOVE B TO A 是错误的 MOVE语句的高级技巧 不同类型数据间的传送 非法的传送 *​ 数值编辑项、字符编辑项、SPACE、字母数据项不能传送给数值数据项或数值编辑项 *​ 数值常量、ZERO、数值数据项、数值编辑项都不能传送给字母数据项 *​ 非整数的数值数据项或数值常量不能传送给字符数据项或字符编辑数据项 *​ 合法的传送 合法的传送 *​ 接收项为字符数据项或字符编辑项,而发送项的长度大于接收项的时候,按“对齐”原则,超出部分截断。如长度小于接收项,多余位置补空格。当发送项的描述是带符号的数值时,符号不予传送。 *​ 接收项是数值项或数值编辑项(初等项),可以接收数值项的数据以及内容为全数字的字符型数据项。 *​ 接收项是字母型,按左对齐原则接收字母致富,多余位置补空格。但它不应该接收非字母的字符。 MOVE语句的高级技巧 组合项的传送 组合项的传送是将发送项的内容不加转换地一个字节一个字节地顺序传送到接收项。 *​ 若发送项与接收项都是组合项,而且其结构和描述都相同,则可看作将各初等项一一对应传送。 *​ 如果发送项和接收项长度相同,但结构形式不同,则将发送项的内容原样不变地自左向右传送到接收项 *​ 如果传送时,发送项与接收项长度不同,按:左对齐,右补空格,多余位截去 MOVE语句的高级技巧 *​ 对应传送(带CORRESPONDING 子句的MOVE 语句) *​ 我们尽量不在同一个COBOL 源程序中使用相同的数据名。但是,在比较复杂的COBOL 程序中往往使用同一个数据名来代表不同的数据项。如同名现象。这时应使用限定词OF 把数据名变成唯一,只用一次限定词OF 达不到把数据名变成唯一时可多次使用限定词OF。 *​ 对应传送或同名传送的一般格式: *​ MOVE CORR(CORRESPONDING) 标识符1 TO 标识符2 *​ 说明: *​ ⑴如果两个组合项中包括的项不同,则只传送同名的项。 *​ ⑵传送的两者间必须有成对的同名数据项,而且这一对中必须至少有一个项是初等项。 *​ 例如: 01 A. 01 A1. 02 B PIC X(2). 03 B PIC X(2). 02 C. 03 C. 03 C1 PIC X(4). 05 C3 PIC X(6). 03 C2 PIC X(5). 05 C4 PIC X(3). *​ ⑶所谓同名指的是它们有相同的全程受限。 *​ ⑷带有RENAME子句或REDEFINES子句或OCCURS子句的数据项不予以传送。 四舍五入处理(ROUNDED 子句) *​ ROUNDED 子句的作用是按照数据项的描述要求对多余位截断,然后对截断的后一位数进行四舍五入处理。如果计算结果有多个,则应分别说明哪一个接收项要进行舍入处理,ROUNDED 应写在有关接收项的数据名的后面。如: *​  ADD A B C TO D E F ROUNDED G ROUNDED H. 余数字句(REMAINDER 子句) *​ 除法语句只能求商,不能求余数。可用REMAINDER 子句求出余数。 如: DIVIDE 1.5 INTO 7 GIVING C REMAINDER D. *​ 说明: *​ 商和余数的值不仅取决于被除数和除数,还取决于数据部中对商和余数的描述。 *​ 如果ROUNDED 子句,它只对商起作用。 IF 语句高级应用 *​ 符号条件 用来检查某数据项的值的代数符号。 符号条件的一般形式: 数据名 IS [NOT] POSITIVE(正:还可表示为”IF … > ZERO”) 算术表达式 NEGATIVE(负:还可表示为”IF … < ZERO”) ZERO(还可表示为”IF … = ZERO”) *​ 类型条件 检查数据项的类型是否符合指定的要求。 类型条件的一般形式: 标识符 IS [NOT] NUMERIC ALPHABETIC IF 语句高级应用 *​ 复合条件 由若干个简单的条件可以组成复合的条件。COBOL 用到的逻辑运算符有:AND、OR、NOT。如果在同一个IF 语句中用到AND,OR,NOT,运算顺序按NOT,AND,OR 的次序。 *​ IF 语句的嵌套(通常最多允许四层IF 语句的嵌套) IF 条件1 语句组1 ( IF 条件11 语句组11 ELSE 语句组12 END-IF ) ELSE 语句组2 ( IF 条件22 语句组21 ELSE 语句组22 END-IF ) END-IF EVALUATE 语句 *​ EVALUATE 语句根据一系列表达式的值,从一大组语句中选择一组要执行的语句。一般格式:(EVALUATE 语句可以嵌套) ①EVALUATE 变量 WHEN 值A WHEN 值1 THRU 值2 WHEN OTHER END-EVALUATE. ②EVALUATE 变量1,变量2,变量3 WHEN 值1,ANY,值2 WHEN ANY,ANY,值2 WHEN OTHER END-EVALUATE. ③EVALUATE TRUE WHEN 表达式1 WHEN 表达式2 WHEN OTHER END-EVALUATE. CONTINUE 语句 *​ CONTINUE 语句什么也不干,只是一个语句占位符。通常与EVALUATE 语句的“WHEN OTHER”一起使用,达到跳出EVALUATE 语句的目的。 *​ 字符串连接语句(STRING 语句) *​ 1.STRING 语句用来将多个非数值型的数据项的值连接起来送到一个接收数据项中。可以在传送时插入所需字符。一般格式: STRING {标识符1} [,标识符2]… DELIMITED BY {标识符3} [{标识符 4} [, 标识符5]… DELIMITED BY {标识符6}] INTO 标识符7 [WITH POINTER 标识符8] [ON OVERFLOW 强制语句] *​ 2.DELIMITED 短语用来控制各个发送项的终止位置。如果是DELIMITED BY SIZE 表示将整个发送项的字符全部送到接收项。也可以使用其它字符串作定界符。 *​ 3.如果不想从接收项的最左端开始接收字符而从中间某一字符位开始向右接收字字符,可以用POINTER 短语。 *​ 说明: *​ 接收字符串的数据项必须是初等项,且不能有JUST RIGHT 字句和编辑字符。 *​ 指针项必须是一个整形的初等项。 *​ 接收项中未被送入的字符位置上保持原有内容,而不会自动设置空格。 *​ 强制语句是无条件的执行语句,IF 语句是有条件的执行语句 字符串分解语句(UNSTRING 语句) *​ 1.将一个发送项的数据分别传送到多个接收项中。一般格式: UNSTRING {标识符1} [DELIMITED BY [ALL] { 标识符2} [OR [ALL] { 标 识符3}]…] INTO 标识符4 [,DELIMITER IN 标识符5] [,COUNT IN 标 识符6] [标识符7 [,DELIMITER IN 标识符8] [,COUNT IN 标识符9]…] [WITH POINTER 标识符10] [TALLING IN 11 ] [ON OVERFLOW 强制语句] *​ 2. 可以用DELIMITED 短语来作分解时的定界符。如果在DELIMITED BY 后面加一 个ALL 表示定界符是长度不定的一个常量。 *​ 3. 可以用COUNTER 短语将以发送的字符个数计入用户定义的计数数据中。 *​ 4. 定界符存储短语DELIMITER。当DELIMITER 短语和COUNTER 短语一起使用时, DELIMITER 短语应在前面。 *​ 5. 如果希望从发送项某一指定的位置开始传送可以使用POINTER 短语。 *​ 6. 接收项计数短语TALLYING。用来记录实际接收传送的接收项项数。 说明: ⑴本语句短语较多,应注意各短语的前后次序。 ⑵发送项可以是组合项,也可以是字符型初等项或字符编辑型数据。 ⑶接收项可以是字母型、字符型、数值型的,但不能是编辑型数据项。 ⑷如果发送项和接收项长度不等,按MOVE 语句的规定对发送项截断或对接 收项补空格或零。 检测语句(INSPECT 语句) 检测语句的的作用 *​ 用一个指定的字符去代替
本文档为【COBOL】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_730687
暂无简介~
格式:doc
大小:313KB
软件:Word
页数:24
分类:互联网
上传时间:2010-12-13
浏览量:49