大家好,欢迎来到IT知识分享网。
COBOL作为大型机上最主要的程序设计语言,迄今50多年历史。
大型机也叫主机、大机或MainFrame等,属于一种商用高端服务器。主要由IBM公司生产。
1960年4月正式发表COBOL61,目前最新版COBOL2002。
80列中的列与列之间不同的范围及其意义如下:
第1-6列:序号区
第7列:指示符区:
A. “ ”空,后接正常的COBOL语句。
B. “*” 注释符,注释当前行。
C. “/” 注释符,注释当前行,程序编译时,强制程序清单另起一页。
D. “-” 字符串连接符。
E. “D” Debug行标识符,Debug模式时,该行代码执行。
F. “B” 标明BATCH程序。
G. “C” 标明CICS程序。
第8-11列:A区:包括COBOL中的部/节/语句段的标识符,以及01层数据层号等
第12-72列:B区:包含过程部中的各条语句
第72-80列:说明区:用于对程序进行注释,代码修改的日期和修正记号一般写在此区。
PROGRAM-ID:指明程序名,是必须具备的字段。其他字段都是可选的。
AUTHOR:开发程序的程序员名
INSTALLATION:通常指设计该程序的公司或部门
DATE-WRITTEN:指明程序编写或修改的日期
DATE-COMPILED:指明程序编译的日期
SECURITY:通常用于列出具有访问该程序权限的用户
由”ENVIRONMENT DIVISION”标识。紧跟标志部之后,没有可省略不写的。
配置节:由”CONFIGURATION SECTION”标识:作用:指定程序同外部环境之间的一些配置信息。可省略不写
SOURCE-COMPUTER:指示编译程序的计算机
OBJECT-COMPUTER:描述运行程序的计算机
输入/输出节:由”INPUT-OUTPUT SECTION”标识:作用:指定程序中所用到文件同外部环境之间的对应关系
FILE-CONTROL:用于指定文件的对应关系,是该节点中主要用到的字段。
I-O-CONTROL:用于定义程序返回点,不同文件共享内存区,以及多文件
卷中文件的位置
由”DATA DIVISION” 标识。紧接环境部之后。
文件节:由”FILE-SECTION”标识。用于对程序中用到的文件里的数据进行定义。文件指逻辑文件。其文件名必须和环境部输入/输出节中由SELECT语句指定的文件名一致。
在文件节中,主要以FD语句实现对文件定义。在FD语句下,通过PIC语句依次定义文件中每条记录所含的数据项。
任何在程序中所使用的文件都需要在此处定义
FD是”File Descriptor”的缩写,即文件描述符的意思。
FD语句通过句点表示结束。
FD或SD下定义多个01层的场合隐含地重新定义同一区域。相当于被REDEFINES了。相当于隐形的内存共享。
COBOL中,01层属于最高层,需要在程序中顶格写。各层层号按顺序编写,不一定连续。COBOL中最多支持49层,因此49层为最低层
66层:为特殊描述符项目保留,在实际中用得较少,用于重新编制前面已定义的数据项,必须包含一个RENAMES从句。
重要的是不同层次数据间的关系,而不是数据的层号。
没有PIC语句的为数据组,有PIC语句的则为单元数据项
PIC是”PICTURE”的缩写,PIC语句用来定义数据的类型及长度
“X”表示任意字符,”9″表示只能为数字,括号内代表长度
工作存储节:由”WORKING-STORAGE SECTION”标识。作用:用于定义本程序中所需用到的各种数据
规定工作存储节应该写在文件节之后。程序中没有用到外部文件,文件节是可以省略的,但是工作存储节都是会存在的。因为程序中一般总会要用到本地数据的。
联接节(LINKAGE SECTION):用来描述与调用程序间发生数据传递的数据项。(即参数)
注:参数除了可以通过主程序的CALL语句来传送之外,也可以通过JCL的EXEC语句的PARM参数来传送。=’AAAAAAA8′
由”PROCEDURE DIVISION”标识。 逻辑处理部分都在过程部中。
“STOP RUN”表明程序的结束
A. 主程序过程部的部头:PROCEDURE DIVISION.
B. 过程部中应该包括一个程序出口语句:STOP RUN.(逻辑上最后一句语句)
C. 程序最后标志结束语句,END PROGRAM 程序名.(标记此行后再无程序语句。)
2.子程序:被其他程序所调用的程序。
A. 子程序过程部的头部:PROCEDURE DIVISION USING 从主程序中接收到的参数名1,参数名2.
B. 过程部中应该包括一个程序出口语句:EXIT PROGRAM.(逻辑上最后一句语句)
子程序概述:PERFORM语句只能在同一程序中多次调用某一语句序列,如果被调用部分较复杂或需要被其他程序使用时,可以将其编写为单独的一个程序,即子程序,调用子程序的为主程序。
使用子程序的优点:
简化主程序,使程序结构清晰
子程序功能单一,易于编写和调试,减少错误
可由多人完成不同子程序,从而完成复杂任务
只需重编译修改的子程序,而不必对所有源程序编译
子程序可以重用,减少重复劳动
CORRESPONDING/CORR:对应传送。
例如:
文件操作有一个文件状态字(FILE-STATUS)
用于从文件中读取数据。使用READ语句读取文件时,实际上是将文件中的数据读到由FD语句所定义的变量之中。
READ语句每次只能读取一条。因此通常将READ语句置于一个循环结构体中,以顺次读取到文件中的每一条记录。
READ语句中包含有AT END选项。该选项表示的意思是当读到文件末尾时将采取何种操作。
下划线”_”代表一个空格。
接收数据项必须是初等项。
指针必须是一个整型的初等项。
STRING语句结束后,接收项中未送入的字符位置上保持原有内容,而不是自动设置空格。
将一个发送字符串拆成若干个接收字符串,是STRING语句的逆操作。
下划线”_”代表一个空格。
类似于大机预加载会把COPY语句的文件内容加载到程序中。
将数据项的值设为初始值。字符型初始化成空格,数字型初始化为0.用于组合项时,相当于将所有的基本项都初始化。
INITIALIZE语句对FILLER的VALUE值无效,(保留VALUE值),除非指定其有效。
由于打乱了原来程序正常的执行顺序,降低了程序的可读性,因此,严禁使用
STOP 定数:定数,程序执行到此暂停,根据用户入力数据来执行相应的操作。(属于非互换性对应,不适用移行)
STOP ABORT:程序异常终止。
(28)
用来描述在程序中只是作为输出数据时增加或改变某些所需的符号,起编辑作用。不能用于计算。
COMP-1:浮动小数点
COMP-2:内部长浮点型
COMP-3:压缩十进制数
COMP-4:压缩十进制数
COMP-5:压缩十进制数
⑭VALUE:给变量赋初值。
⑮OCCURS:数组,动态游标DEPENDING ON
⑯INDEXED:OCCURS语句中INDEXED有的场合,指定数组的下标。
REDEFINES命令:同层变量共用一个内存空间。
当REDEFINES的变量长度不一致时,开辟的共同存储区域的大小和大size一致。
⑲16进制文字常量:H”hh” X”30″
16进制汉字常量:K”hh”
汉字区点常量:J”hh”
⑳SIGN 指定符号位置的表现形式:
②算数减运算SUBTRACT
COMPUTE(计算) 主要是通过算数表达式进行算数运算的。乘方的运算符
⑦统计运算
ROUNDED选项对运算结果进行四舍五入是对运算结果中第一位小数进行舍入操作的。
不加ROUNDED,默认计算结果取整的话,结果会被截断。例57.9—>57
加上ROUNDED,对57.9进行四舍五入处理–>58
⑨运算结果溢出报错ON SIZE ERROR
运算结果溢出:当结果数据长度超过保存结果数据的变量所定义的长度时。当运算结果溢出时,可以使用ON SIZE ERROR选项进行报错
⑩REMAINDER语句:用于除法语句(DIVIDE)求余数
VSAM文件对于数据的存储及管理具有很强的灵活性及高效性,因此常用来组织和存放数据。
COBOL程序对于文件的访问,很大程度上是对VSAM文件的访问。
VSAM文件的分类及作用?
LDS:线性数据集
ESDS:进入顺序数据集
RRDS:相对记录数据集
KSDS:索引顺序数据集,最常用
VRRDS:变长相对记录数据集
COBOL只是实现对VSAM文件的的读写操作。至于VSAM文件的创建,复制,删除等操作是通过JCL中的IDCAMS实用程序实现的。
后续补充
eg:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/114644.html