COBOL谭浩强版学习笔记汇总.pdf

上传人:白大夫 文档编号:5424052 上传时间:2020-05-06 格式:PDF 页数:18 大小:177.19KB
返回 下载 相关 举报
COBOL谭浩强版学习笔记汇总.pdf_第1页
第1页 / 共18页
COBOL谭浩强版学习笔记汇总.pdf_第2页
第2页 / 共18页
COBOL谭浩强版学习笔记汇总.pdf_第3页
第3页 / 共18页
COBOL谭浩强版学习笔记汇总.pdf_第4页
第4页 / 共18页
COBOL谭浩强版学习笔记汇总.pdf_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《COBOL谭浩强版学习笔记汇总.pdf》由会员分享,可在线阅读,更多相关《COBOL谭浩强版学习笔记汇总.pdf(18页珍藏版)》请在三一文库上搜索。

1、COBOL 资料整理 COBOL 语言概述 一 COBOL 程序的结构 1部 IDENTIFICATION DIVISION 标识部 ENVIRONMENT DIVISION 环境部 DATA DIVISION 数据部 PROCEDURE DIVISION 过程部 2节( SECTION )和段( PARAGRAPH ) (1)部 -节-段 (2)标识部下面不设节,直接设段 (3)过程部可以设节,下面再设段,也可以直接设段 3句子、语句和子句 每一段由若干句子(Sentence)组成,一个句子以句号加上一个以上的空格来结束。 句子由语句( Statement)组成。 语句中又可以包含若干子句(

2、clause) ,每一个子句也有一个动词(但这个动词往往是可以省略的),它指定某一方面 的特定功能。 二 COBOL 源程序的书写格式 11-6 列:标号区 2第 7 列:续行标志区( “ -”为续行,“*”为注解) 38-11 列: A 区(部头,节头,段头,层号01、77,文件描述符FD 等) 412-72 列: B 区(正文) 573-80 列:注释区 三 COBOL 字符 数字 0-9,大写字母A-Z ,小写字母a-z, 专用字符15 个 + - * / = , . ; ( ) $ 空格 四常量 1数值常量 (1)小数点不能多于一个,而且不能出现在常数最右边。 (2)数值常量的长度不能

3、超过18 位数字。 (3)至少要有一个数字,不能有多于一个符号。 (4)数字间不能有空格,空格是分界符。 2非数值常量 (1)用 把字符串包起来 (2)假如要把 放到非数值常量中,用QUOTE 保留字, 如 MOVE QUOTE CHINA QUOTE TO A (3)长度不应超过120 个字符。 3表意常量 表意常量所表示的值 ZERO/ZEROS/ZEROES 表示一个或多个零字符 SPACE/SPACES 表示一个或多个空格字符 HIGH-V ALUE/HIGH-VALUES 表示一个或多个具有“最高值”的字符(每个字符 的二进制表示为11111111) LOW-V ALUE/LOW-V

4、ALUES 表示一个或多个具有“最小值”的字符(每个字符 的二进制表示为00000000) QUOTE/QUOTES 表示一个或多个引号字符 ALL 常量表示由一个或多个该常量组成的字符串 五 COBOL 的数据关系 文件 记录 1 记录 i 记录 n 组合项 1 组合项 i 组合项 n 初等项 组合项 p 组合项 q 初等项 初等项 初等项 初等项 过程部初步 一输入输出语句 1ACCEPT (接收语句):直接从中断键盘或系统指定的输入设备上输入少量的数据。 语法: ACCEPT 标识符FROM 助忆名 2READ (读语句):从外部文件上读入数据输到程序中的数据项中。 语法: READ 文

5、件名RECORD INTO 标识符 ;AT END 执行语句 3WRITE (写语句):将内存区中的数据输出到外部设备 语法: WRITE 记录名FROM 标识符 1BEFORE ADV ANCING 标识符 2/整数LINE/LINES AFTER 助忆名 /PAEG 4OPEN(打开语句) :程序若要读和写文件,先要把文件打开 语法: OPEN INPUT/OUPUT 文件名 1,文件名2 5CLOSE(关闭语句) :关闭文件。 语法: CLOSE 文件名 1,文件名2 二算术运算语句 1ADD (加法语句) 举例: ADD A TO B A+BB ADD 15 TO C 15+CC AD

6、D A ,B TO C A+B+CC ADD 15 ,25 TO C 15+25+CC ADD A ,B GIVING C A+B-C ADD 15 ,25 GIVING T 15+25T ADD A ,B TO C ,D A+B+CC,A+B+DD 2SUBTRACT (减法语句) 举例: SUBTRACT B FROM A A-BA SUBTRACT B ,C FROM A A-B-CA SUBTRACT B ,C FROM A ,T A-B-CA,T-B-CT SUBTRACT B ,C FROM A GIVING X A-B-CX 3MULTIPL Y(乘法语句) 举例: MULTIP

7、L Y A BY B A*BB MULTIPLY 0.5 BY B 0.5*BB MULTIPLY A BY B GIVING C A*BC MULTIPLY 1.5 BY 3 GIVING C,A 1.5*3C,1.5*3A MULTIPLY A BY B,C A*BB,A*CC 4DIVIDE (除法语句) 举例: DIVIDE A INTO B B/AB DIVIDE A INTO B GIVING C B/AC DIVIDE A BY B GIVING C A/BC 5COMPUTE (计算语句) 语法: COMPUTE 标识符 1,标识符2 =算术表达式 举例: COMPUTE T

8、= (A + B ) * C / D 注意: (1)所以运算符两侧应留一空格 (2)括号外侧应留空格,内侧可不要留空格 三 MOVE (传送语句) 语法: MOVE 标识符 1/常量 1 TO 标识符 2,标识符3 四 GOTO (转移语句) 语法: (1)GO TO 过程名 (2)GO TO 过程名 1,过程名2过程名n, DEPENDING ON 标识符 五 IF(条件语句) 1关系运算符 COBOL 关系运算符意义 IS GREATER THAN IS THAN 大于 IS LESS THAN IS 不大于 NOT LESS THAN NOT 0 等价 (2)IF X IS NEGATI

9、VE 与IF X5 其作用是执行T1 到 T2 语句序列, X 是“循环变量” ,是整型数据项。A 为初值, B 为步长,它们都是整数或 整数数据项。 六执行语句的多重循环形式 格式: PERFORM 过程名 1 THROUGH/THRU 过程名 2 VARYING 参数 1 FROM 初值 1 BY 步长 1 UNTIL 条件 1 AFTER 参数 2 FROM 初值 2 BY 步长 2 UNTIL 条件 2 AFTER 参数 3 FROM 初值 3 BY 步长 3 UNTIL 条件 3 说明: 1。最后面的循环体先执行。 2COBOL 允许用到三重循环。 七出口语句(EXIT 语句) 作用

10、:提供一个段名,被PERFORM 调用的语句序列由此公共汇集点,返回到PERFORM 的下一个语句去。 举例: PERFORM A THRU B A. IF XY GO TO B MOVE X TO T. B. EXIT. 八修改语句(ALTER 语句) 格式: ALTER 过程名 1 TO PROCEED TO 过程名 2 ,过程名3 TO PROCEED TO 过程名 4 作用:用来改变GO TO 的转向点。该语句使以过程名1,过程名3,命名的各段中的GO TO 语句的转向点分 别被修改为过程名2,过程名4。注意,过程名1,过程名3各段只能由一条GO TO 语句单独组成。 数据部之二 -数

11、据部的较高技巧 一数据在计算机内的表示形式 1字符数据在内存中的存储形式 (1)ACSII (2)EBCDIC 2数值型数据在内存中的存储形式 (1)外部十进制(或称扩张十进制)形式 (2)外部浮点数形式 (3)内部十进制(又称缩合十进制)形式 (4)定点二进制形式 (5)内部浮点形式 二用法子句(USAGE 子句) 作用:可以使程序设计者自由选择数据在内存中的存放形式。 格式: USAGE IS DISPLAY/COMPUTATIONAL/COMP 说明: 1。DISPLAY 表示是“显示型的用法”,表示此数据项适于显示,打印。 2COMPUTATIONAL=COMP,表示是“计算型的用法”

12、,适于计算。 3如省略 USAGE 子句,则隐含表示为用DISPLAY 形式。 三符号子句(SIGN 子句) 作用:用来指定数值型数据描述体中运算符号的状态和位置。 格式: SIGN IS LEADING/TRAILING SEPARATE CHARACTER 说明: 1。没有 SIGN 子句时,数值的符号是存放在数据项最后一个字节中的。 2用 SIGN 子句可以指定符号在数值的前部还是后部(LEADING/TRAILING) 。 3指定符号单独占一个字节,用“SEPARATE”可选项,内存中增加一个字节。 4SIGN 子句只能用于PIC 字符串中含有“S”的数值型数据描述体中。 5使用 SI

13、GN 子句的数据项的用法应该是USAGE DISPLAY (显式的或隐含的) 。 举例: 02 A PIC S9(3) USAGE DISPLAY SIGN IS LEADING. 四重定义子句(REDEFINES子句) 作用:不同的数据项可以共用内存中的同一段空间。例如已给数据项A 分配了一段内存空间,在经过某一段的过程后, A 已经不再使用了,但它仍占着内存这部分空间,为了节约内存,可以将另一数据项B 也分配在 A 所占的这段内存空间。 格式:层号数据名 1 REDEFINES 数据名 2 举例: 02 A PIC X(5). 02 B REDEFINES A PIC 9(5). 说明:

14、1。数据名 2 与数据名1 的层号必须相同。 2用REDEFINES子句的描述体应该紧跟在被重新定义的数据项的描述之后,中间不能插入其它项的描述说 明。 3可以多次重定义,但必须紧跟出现,而且要求使用最初定义的数据名。 4REDEFINES 子句不能用于文件节的01 层中。 5用 REDEFINES 子句可以改变数据结构,但数据名1、2 的长度应该相等。 6REDEFINES 子句应在其它子句之前。 7重定义子句所在的数据描述体中不能使用初值子句赋初值。. 五重命名子句(RENAMES子句) 作用:在不改变数据项的长度的前提下,重新定义数据区的名称和数据结构的形式(包括初等项的类型和长度)。可

15、 以把原来已经定义的某些数据项重新组合成一个新项,并以一个新名字来代表它。但用重命名子句不能改变原来各初等项 的类型、长度等属性。 格式: 66 数据名 1 RENAMES 数据名 2 THRU 数据名 3 说明:只能用于工作单元节中,不能用于文件节中 六遇零置空子句(BLANK 子句) 作用:当数据项的值为零时,使它的内容改变为空白(空格)。这个子句只能用于数值型或编辑型的初等项。 举例: 03 A PIC 9999 BLANK WHEN ZERO. 七对齐子句(JUSTIFIED子句) 作用:字符或字母型数据传送的时候是按标准的对齐方式,即“左对齐”,若想改为“右对齐” ,可以用 JUST

16、IFIED 子 句。 格式: JUSTIFIED/JUST RIGHT 举例: 77 B PIC X( 5)JUSTIFIED RIGHT 八同步安置子句(SYNCHRONIZED子句) 作用:一个机器字一般定为4 个字节,从内存中取数据的时候是以机器字为单位的,而数据存放则是按字节连续存放 的,这里面就存在一个边界对齐的矛盾,会影响目标程序运行时间。用同步安置子句可以指定数据项在内存中如何按自然 边界来安置。 格式: SYNCHRONIZED/SYNC LEFT/RIGHT 说明: 1。用 SYNC LEFT 时,左对齐,右边补零或空格。 2用 SYNC RIGHT 时,右对齐,左边补零或空

17、格。 举例: 01 A. 02 A1 PIC 9(3) SYNC LEFT VALUE 82. 03 A2 PIC X(3) SYNC RIGHT VALUE ABC 九复写语句(COPY 语句) 作用:把“源程序库”中的某些记录描述和数据描述插入到自己的源程序中。 格式: COPY 库名REPLACING 标识符 1/常量 1/字 1 BY 标识符 2/常量 2/字 2 子程序 一概述 举例:编一个打印一行“*”符号的子程序 1主程序(只写与调用子程序有关的部分) IDENTIFICATION DIVISION. (标识部) PROGRAM-ID. A. (程序名为A) ENVIRONMEN

18、T DIVISION. (环境部) DATA DIVISION. (数据部) PROCEDURE DIVISION. (过程部) CALL B. (调用子程序B) 2子程序 IDENTIFICATION DIVISION. PROGRAM-ID. B. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 77 X PIC X(80). PROCEDURE DIVISION. MOVE ALL *TO X. DISPLAY X. EXIT PROGRAM. 可以看到程序A 和程序 B 分别是两个程序,各有自己的程序名,都有四

19、大部分。 二调用程序与被调用程序间的数据联系 格式:调用语句 CALL 子程序名USING 数据名 1 ,数据名2 被调用程序中过程部部头的一般格式为 PROCEDURE DIVISION USING 数据名 1,数据名2 说明: 1。两部分相对应的参数个数、长度必须相等。 2参数是在内存中建立关联,类似于C+中的传递引用参数。 三子程序的结构 1标识部 说明子程序的名字,以供调用。 2环境部 3数据部 (1)文件节( FILE SECTION ) (2)工作单元节(WORKING-STORAGE SECTION ) (3)联接节( LINKAGE SECTION ) :如果子程序过程部部头的

20、USING 子句中有数据名,则此数据名应在此节中加 以说明。 4过程部 过程部的部头:PROCEDURE DIVISION USING 数据名 1,数据名2, 过程部中应该包括一个程序出口语句:EXIT PROGRAM. 表的建立与查找 一表的概念 COBOL 语言中的表(TABLE )类似于其他高级语言中的数组(ARRAY ) 。 表中,序号称为下标,相对地址称为位标,下标和位标称为“出现号”。 二表的建立(OCCURS 子句) 格式: OCCURS 整数TIMES 举例: 01 PRODUCT-RECORD. 03 RODUCT OCCURS 20 TIMES. 04 QUANTITY-O

21、F-PRODUCTION PIC 9(6). 04 QANTITY-OF-SALES PIC 9(6). 04 QANTITY-OF-HAND PIC 9(6). 说明: 1。OCCURS 子句不能出现在77 层,因为77 层是独立的数据项。 2OCCURS 子句不能用于01 层。 3只有当 OCCURS 所说明的数据是初等项时,才能在该数据项的描述中使用PIC 子句。 4不能用 VALUE 子句对表赋初值,不能同时用OCCURS 子句和 VALUE 子句来描述同一数据项。 三可变长表 格式: OCCURS 整数 1 TO 整数 2 TIMES DEPENDING ON 数据名 1 说明:根据

22、数据名1 的值来确定数据项重复的次数。 四表元素的引用 格式:表名(下标) 说明: 1。如果 B 是一个表,不直接引用表名B 而不加下标。 2如果表元素是组合项,则引用它下属的项(可以是初等项或组合项),也必须用下标指明它是属于哪一个表 元素的。 3如果表元素是组合项,可以用它对下属的数据项进行限定。 4下标只能是整常数或具有整型值的数据名。 5下标不能是带下标的数据名,即不能是表元素。 五给表元素赋初值 1对包括所有表元素的整个表赋给一个初值,这时可以对表的描述体上面一层的数据项赋一个初值即可。 例 1:01 TABLE VALUE IS ZERO. 03 OCCURS 20 PIC 9(3

23、). 例 2:01 T VALUE ABCDEFHIJ . 02 Q OCCURS 3 PIC X(3). 这样, Q(1) ,Q(2) ,Q(3)的内容分别是ABC ,DEF,HIJ。 2联合使用OCCURS 子句和 REDEFINES 子句来给各个表元素赋值。 步骤: ( 1)先在工作单元节中定义一个组合项,它占的内存的大小和需赋值的表一样,在该组合项中定义若干个数 据项,数据项的描述和表的元素相同。 (2)然后对这些数据项分别用VALUE 子句赋以初值,由于在这些数据项的描述中没有出现OCCURS 子句, 因此用 VALUE 赋初值是合法的 (VALUE 子句和 OCCURS 子句不能同

24、时用来描述一个数据项)。这些值就是要赋给表元素 的初值。 (3)把这个组合项重定义为一个表。 六用位标法引用表元素 1位标的概念:位标的值表示表元素在该表中的相对位置(以字节数表示)。 2位标名的指定方法:在数据部中定义一个表时所用的OCCURS 子句中要加上“INDEXED BY 位标名”短语来指定。 说明: (1)由于位标是专门用于引用表元素的特殊数据项,它不能用来进行算术运算。 (2)一维表或多维表的每一维按需要可以指定若干个位标名,引用时这些位标名只能在该维内使用。 (3)有时需要把位标的值转存到另一个数据项中,但由于位标是特殊类型的数据项,因此,需要另外定义一 种特殊的数据项叫位标数

25、据项,用来专门存储位标的值。位标数据项在数据部中定义。描述位标数据项用USAGE 子句。 例如: 77 K USAGE IS INDEX. 七 SET(设置)语句 1作用:将一表元素的相对地址放到指定的位标去。 如:SET I TO 10. 表示将位标I 置位到第10 个元素的第一个字节的相对地址上去。 2格式一 SET 标识符 1,标识符 2TO 标识符 3/位标 3/整数 位标 1,位标 2 规则列表(设SET A TO B) 横 - 发 送整数数值初等位标名位标数据 项 B 竖 - 接 收 项 A 项项 数值初等 项 不合法不合法将位标代表的序号传送不合法 位标名将整数(序号) 化 成相

26、对地址传送 同左( 1)如果两个位标名指向同一 个表,则转换成另一表的相对地 址再传送, 即将发送项代表的表 元素顺序号减1,乘以接收项相 关表元素的长度,再传送 简单传送 位标数据 项 不合法不合法简单传送简单传送 3格式二 SET 位标 1 ,位标 2UP/DOWN BY 标识符 /整数 作用:给位标增减一个量。 八表的检索 1用于顺序检索的SEARCH 语句 格式: SEARCH 表名 VARYING 位标名 1/标识符 2AT END 强制语句1 WHEN 条件 1 强制语句 2/NEXT SENTENCE WHEN 条件 2 强制语句3/NEXT SENTENCE 举例: SET N

27、 TO 1. SEARCH WORKER-TABLE AT END DISPLAY CANNOT FIND NAME WHEN NAME (N)=ZHANG SHENG DISPLAY NAME ( N) ,PAY(N). SEARCH 语句是这样执行的:从指定的表元素开始,检查是否满足WHEN 后面指定的条件。如不满足,就使N 增 值,自动执行一个SET N UP BY 1。使 N 指向下一个元素的地址,如果查到某一个元素满足指定的条件时,查表工 作立即停止,执行WHEN 字句中条件后面的语句。 2用于有序表的SEARCH 语句(折半法检索) (1)说明升(降)序的一般格式为: ASCEND

28、ING/DESCENDING KEY IS 数据名 1,数据名 2 ASCENDING/DESCENDING KEY IS 数据名 3,数据名 4 举例: 02 BOOK-TABLE OCCURS 100 ASCENDING KEY IS NAME DESCENDING KEY IS COD INDEX BY N. (2)SEARCH 语句的一般格式(之二) SEARCH ALL 表名 ;AT END 强制语句1 WHEN 条件强制语句2/NEXT SENTENCE 举例: SEARCH ALL BOOK-TABLE AT END DISPLAY CANNOT FIND NAME WHEN N

29、AME(N) = COMPUTER DESIGN DISPLAY NAME (N),NUM (N). 九用 PERFORM 语句对表进行检索 最多可以处理三重循环 格式: PERFORM 过程名 1THRU 过程名 2 VARYING 位标名 1/下标名 1 FROM 位标名 2/常量 1/标识符 1 BY 常量 2/标识符 2 UNTIL 条件 1 AFTER 位标名 3/下标名 2 FROM 位标名 4/常量 3/标识符 3 BY 常量 4/标识符 4 UNTIL 条件 2 AFTER 位标名 5/下标名 4 FROM 位标名 6/常量 5/标识符 5 BY 常量 6/标识符 6 UNTIL 条件 3

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1