1、文件描述符FDCOBOL每个句子后要加句号“.”象 IF ELSE END-IF. 要在END-IF后面加句号,中间不加。不区分大小写运算符和等号左右两边留空格。( )左右两边留空格。表意常量(又称字义常量,象征常数或赋形常数。Figurative Constant)它用某些英文字(保留字)来代表某些特定的常值。如用ZERO代表数值0,用SPACE代表空格。从这些字的意思可以知道它们所代表的是什么值,因此叫表意常量或字义常量。二者等价 MOVE ZERO TO A MOVE 0 TO A 表意常量所代表的值ZREOZEROSZEROES表示一个或多个零字符SPACESPACES表示一个或多个空
2、格字符HIGH-VALUEHIGH-VALUES表示一个或多个具有“最高值”的字符(每个字符的二进制表示为11111111)LOW-VALUELOW-VALUES表示一个或多个具有“最高值”的字符(每个字符的二进制表示为00000000)QUOTEQUOTES表示一个或多个引号字符ALL常量表示由一个或多个该常量组成的字符串表意常量可以出现在程序中使用数值常量或非数值常量的地方。读者仔细阅读表1.2所列举的用法举例,就可清楚表意常量的作用。指令假定已定义A在内存中的字节数执行MOVE指令后A中的值MOVE ZERO TO AMOVE ZEROS(或ZEROES) TO A410000(每个字节
3、中均存放字符0)0000MOVE SPACE TO A(四个空格)(一个空格)MOVE HIGH-VALUE TO A在4个字节中全部二进位上值为1,即每个字节中均为二进制的11111111MOVE LOW-VALUE TO A每一个字节中均为二进制的00000000MOVE QUOTE TO AMOVE ALL * TO AMOVE ALL AB TO AMOVE ALL ABC TO A5* * * *ABABABCAB第二章 标识部和环境部标识部IDENTIFICATION DIVISION 是程序不可缺少的部分,以下必写内容: IDENTIFICATION DIVISION. PROG
4、RAM-ID. 程序名.任选部分: AUTHOR. 作者姓名. INSTALLATION. 计算机设置的场所. DATE-WRITTEN. 源程序编写的日期. DATE-COMPILED. 源程序编译的日期. SECURITY. 保密程度.例子: IDENTIFICATION DIVISION. (标识部分) PROFRAM-ID. EX. (程序名:EX) AUTHOR. ZHANG-LI. (作者:张利) INSTALLATION. TSINGHUA UNIVERSITY. (编写的场所:清华大学) DATE-WRITTEN. 1992/5/30. (编写日期:1992年5月30日) DA
5、TE-COMPILED. 1992/6/5. (编译日期:1992年6月5日) SECURITY. THIS PROGRAM RESTRICTED TO PERSONNEL WHO HAVE BEEN CLEARED BY THE CONTROLLERS OFFICE. (保密:此程序仅限于已被检查人员审查通过的人使用)环境部 ENVIRONMENT DIVISION 环境部的作用是说明程序运行的环境,即程序是在什么软硬件环境下运行的。这是整个COBOL程序中唯一与计算机硬件设备有关的部分。在这部分中要说明程序用到哪些设备,哪些文件,将程序中用到的内部文件名与外部文件(或外部设备)之间建立起联
6、系。前面已说过,COBOL将外部设备和外部文件只集中出现在环境部,是为了提高程序的可移植性,不致因外部环境的改变而导致程序中每一部分都需要作相应的修改,而只需要修改环境部即可。环境部的一般格式ENVIRONMENT DIVISION. (环境部)CONFIGURATION SECTION. (配置部)SOURCE-COMPUTER. 源计算机名.OBJECT-COMPUTER. 目标计算机名.SPECIAL-NAMES. 专用名描述项INPUT-OUTPUT SECTION. (输入输出节)FILE-CONTROL. 文件控制描述体I-O-CONTROL. 输入输出控制描述体可以看出:(一)
7、环境部环境部分包括两个节: 配置节(CONFIGURATION SECTION) 输入输出节(INPUT-OUTPUT SECTION)(二) COBOL要求,配置节(CONFIGURATION SECTION)是必须写的。但不少计算机允许可以不必写配置节(包括节头和源计算机名段以及目标计算机段)。因此在本书中为使程序简练写,往往把这一部分省略了。(三) 输入输出节按规定是任选的,但只有最简单的程序(用ACCEPT语句和DISPLAY语句进行输入和输出少量数据)才不用输入输出节。只要使用文件进行输入或输出的,都应在环境部中写出输入输出节。下面分别介绍环境部中各节的内容:配置节(CONFIGUR
8、ATION SECTION)(一) 本节包括三段:源计算机段目标计算机段专用名段。下面为这节的具体用法:CONFIGUARATION SECTION (配置节)SOURCE-COMPUTER IBMPC-386 (源计算机段)OBJECT-COMPUTER IBMPC-386 (目标计算机段) MEMOR SIZE IS 5000 WORDSSPECIAL-NAMES (专用名段) CONSOLE IS A1它说明源程序是在IBMPC-386计算机上编译的。源计算机指的是编译源程序时使用的计算机。目标计算机指的是经过编译后所得的目标程序运行时所使用的计算机,即数据处理阶段所使用的计算机,本例中
9、目标计算机也是IBMPC-386。这二者可以是同一计算机,也可以是不同的计算机。如果是不同的计算机,则应要求这二台计算机是兼容的。因为一种型号的计算机编译出的目标程序,在另一型号的计算机上往往是不能运行的。在配置节中还应说明程序运行时需要目标计算机提供的最小容量。此例中说明该目标程序运行是将要占用内存大约5000字左右。如果目标计算机所提供的能使用的内存容量小于此数字,则程序不能正常运行。第五六行为“专用名段”,说明CONSOLE(某计算机系统指定的“控制台”的专用名)在本程序中可以用A1(注忆名)来代表。(二) 源计算机段和目标计算机段的一般格式SOURCE-COMPUTER 源计算机名OB
10、JECT-COMPUTER 目标计算机名 WORDS MEMORY SIZE IS 整数 CHARACTERS MODULES 对内存大小的说明,可以用CHARACTERS(字符),或WORDS(字),或MODULES(模块)之一。 (三)专用名段。专用名段用来通知系统把系统中原规定的一些设备名或功能名或符号改为用户自己指定的名字或符号。计算机对有关的硬设备和某些功能(如打印时不换行,跳到本页末或下页头等),都赋予一个特定的专用名。例如有的系统把打印机定名为PRINTER,把控制台定名为CONSOLE,有的把宽行打印机定为SYSOUT,把读卡机定为SYSIN等(请注意,每个系统所起的专用名是不
11、同的,不可照搬,使用时应弄清楚本系统各硬设备的专用名是什么)。程序编写者可以用自己规定的助忆名去代替系统的专用名。如果程序中不规定自己定的助忆名,则此段可不写。欧洲人的习惯是用逗号代表小数点,如1234,他们写成12,34。对此COBOL提供一项说明,可在专用名段中写:DECIMAL-POINT IS COMMA (小数点是逗号)这样,凡程序中数值内出现的小数点,在输出时一律会自动改成逗号。又如,美国用“”作货币符号,而其他国家可以改用其他符号,如用“L”表示英镑,用“¥”表示人民币等。可在专用名段写: CURRENCY SIGN IS 非数值常量如: CURRENCY SIGN IS L则在
12、出现货币符号时,一律会自动以“L”代替“”。但不能用0-9,A,B,C,D,E,P,R,S,V,X,Z字符作货币号。专用名段的一般格式(在配置段中) SPECIAL-NAMES DECIMAL-POINT IS COMMA CURRENCY SIGN IS 非数值常量 专用名 IS 助忆名使用助忆名代替系统固有的专用名,纯粹是为了便于记忆。因为在有些系统中专用名不好记忆,程序编制者希望以简单易记的名字代替它。此外,当改用其它计算机系统时,只需要改变专用名段的专用名即可,程序中过程部的所有语句都不必改动。输入输出节(INPUT-OUTPUT SECTION)(一)程序中如果用到输入输出文件,就应
13、在这个节中把程序中的内部文件与外部文件(包括外部设备)联系起来。输入输出节输入输出节包括两个段: 文件控制段(FILE-C.ONTROL.) 输入输出控制段(I-O-CONTROL.)文件控制段是为文件分配外部文件。只要用到INPUT-OUTPUT节,文件控制段就是必写的。输入输出控制段的作用是可以指定目标程序运行时,几个文件共用一个内存区,以省内存。(二)环境部的重要部分。它的主要功能是给程序中使用的文件命名。指出存放该文件的外部设备及其它有关文件控制的信息。程序中只要用到了文件,则必须有一个对该文件的描述部分,它是由SELECT子句实现的。文件控制段的一般格式:INPUT-OUTPUT S
14、ECTION (输入输出节)FILE-CONTROL (文件控制段)SELECT 文件名 ASSIGN TO 外部文件名 (三)说明1紧跟SELECT后面定义的文件名是指源程序中用到的内部数据文件名(在数据部中定义),COBOL程序中的READ,OPEN等语句都是用该文件名进行操作的。2在本书第二章2.2中的2.2.3段(READ语句)中我们已说明了在环境部中用SELECT子句将内部文件名与外部文件名联系起来。外部设备也视作一种外部文件。但应注意,在不同的计算机系统中,如何表示“外部文件名”的方法是不同的,大体有以下三种方法:(1)SELECT子句的“ASSIGN TO”的后面写上磁盘上实际的
15、文件名。例如在小型机VAX系列机上的用法如下:FILE CONTROL SELECT FILE1 ASSIGN TO DUA1:COB.FILE1.DAT.内部文件名为“FILE1”,外部文件名为“DUA1:COB.FILE1.DAT”,它表示在磁盘DUA1的COB子目录下的FILE1.DAT文件。在使用磁盘文件时应当了解“目录”的概念。在使用磁盘时,为了使用和管理的方便,往往将磁盘分为若干部分,每一个用户只能在指定的部分内存储和操作自己的文件,例如规定A1用户使用的部分为A1区,A2用户用A2区。这样做可以防止用户误操作不属于他的文件,例如A1不能使用A2的文件。这种划分的各部分便称为“子目
16、录”,例如A1子目录,A2子目录。在A1子目录下的FILE.DAT文件就表示为A1.FILE.DAT(在IBM-PC的DOS操作系统下,表示为A1FILE.DAT)。子目录下还可以有子目录,例如在A1子目录下又可以设立A11子目录,A12子目录等,在A11子目录下的FILE.DAT文件表示为A1.A11.FILE.DAT(在DOS操作系统下表示为A1A11FILEDAT)。这种管理方法如同一本书的目录一样,分为章节段,一层一层,互相区别开,便于查阅,所以称为“目录”。有些文件不放在子目录下而直接处于“根目录”管理下,调用文件时就不必写出子目录名,例如只需要写“DUA1:FILE.DAT”即可。
17、小型机多为多用户系统,在使用计算机时,系统管理员已为每一个用户分配了所用磁盘空间和子目录,用户的源程序和所用的数据文件一般都放在这个子目录中。调用本子目录中的文件就不必写子目录名。例如在子目录COB下运行的程序需要从这个子目录中的FILE.DAT中读入文件,可以不必写子目录名“COB”。例如下面两行等价:SELECT FILE1 ASSIGN TO DUA1:COB.FILE.DAT.FILE.DAT.但如果要从另一个子目录A1下的FILE.DAT文件读入数据,则必须写出该子目录名:A1.FILE.DAT.数据文件的后缀一般用“DAT”。系统规定,当用“DAT”作数据文件的后缀(扩展名)时,“
18、.DAT”可以省略不写。例如,可写成:FILE.也就是说,当文件名不带后缀“DAT”时,系统会自动加上“.DAT”而找寻:“FILE.DAT”文件。第三章 数据部分数据部的结构 DATA DIVISION文件节(FILE SECTION) 用来描述程序中用到的输入输出文件及其记录中各数据项的属性。工作单元节(WOKING-STORAGE SECTION)用来描述程序中用到的中间数据项。联系节(LINKAGE-SECTION)用来描述与调用程序间发生数据传递的数据项。报表节(REPORT SECTION)为了完成报表编辑功能,此节用来规定欲输出的报表的“体裁”,设计各报表栏的打印形式和方法等。文
19、件节是程序中输入或输出的描述部分。文件描述符FD 文件名(文件名是在环境部中输入输出节中定义的)描述内容包括:1 文件名和文件属性2 文件中包括的记录和名字3 每个记录中的数据层次关系4 记录中各数据项的数据形式和占内存的大小文件描述体的格式:FD 文件名.LABEL RECORD IS STANDARD 标号记录是标准的磁盘(带)文件RECORDS ARE OMITTED 标号记录是省略的卡片文件,打印文件数据名DATA RECORD IS RECORDS ARE带有COPY(拷贝文)的格式FD 文件名 对应的外部文件COPY 拷贝文件名 REPLACING = = 拷贝文中的数据层名 =
20、= BY = = 程序中用名 = = 数据部的层次数据的层次结构是:记录-组合项-初等项(即逻辑上不能再细分的项)例 NAME(初等项) WORKER-NUMBER(初等项) MONTH(初等项)TIME-RECORD WEEKS-END-DATE DAY-NUMBER(初等项)(记录名) (组合项) YEAR(初等项) HOURS-WORKED REGULAR(初等项) (组合项) OVERTIME(初等项)层次关系如下:01 TIME-RECORD. 03 NAME PIC X(20). 03 WORKER-NUMBER PIC 9(6). 03 WEEKS-END-DATE.05 MON
21、TH PIC 99.05 DAY-NUMBER PIC 99.05 YEAR PIC 99. 03 HOURS-WORKED.06 REGULAR PIC 99.06 OVERTIME PIC 99.PIC子句小结字型子句(PIC子句)即PICTURE的缩写。PIC子句用来描述每一个初等数据项。(一)PIC子句用来说明数据的类型和长度。PIC子句的一般格式为:IS 描述字符串PICTUREPICPIC子句只能用来描述初等数据项。(二)每一种类型数据可以使用的描述字符如下:数据类型在PIC子句中允许使用的描述字符数值数据项9 V S P字母数据项A字符数据项9 A X编辑数值数据项9PV.,BZ
22、+$* 0 CR DB编辑字符数据项A X 9 B 0注:数值型数据项还可以用“外部浮点形式”描述,详见第七章(下册)(三)描述字符的含义描述字符含义9表示一个数字位置表示一个字母位置X表示一个字符位置V表示隐含的小数点位置S表示数值数据带符号P表示十进比例换算,即指明落在数据域外的十进小数点位置$插入货币符号位置.插入小数点位置,插入逗号位置+一律加符号对负数加负号,对正数前留一空格Z取消高位零,代以空格*取消高位零,代以*B插入空格的位置插入零的位置DB(借方)数据为负时,在数据后面出现DB,数据为正时,数据后空两格CR(借方)数据为负时,数据后出现CR,数据为正时,数据后空两格工作单元节
23、(WORKING-STORAGE SECTION)用于描述非输入输出的数据、中间变量、中间结果等数据项。利用工作单元节为某些数据赋以初值(VALUE)数据项两种孤立数据项(初等项)77作层号组合项 层号用0149第四章 过程部PROCEDURE DIVISION过程部是程序的核心部分,它决定计算机应进行什么操作。过程部的语句都是以一个动词开头(如MOVE,OPEN,READ,WRITE,IF等)输入输出语句:ACCEPT 接受语句: 直接从终端键盘或系统指定的输入设备上输入少量的数据。ACCEPT 标识符FROM 助忆名标识符:即唯一标识一个数据项的数据名。助忆名:即在环境部说明,与外部设备相
24、联系。DISPLAY 显示语句:将少量数据从计算机内存中输入到某一指定的外设上DISPLAY 标识符1UPON助忆名 常量1READ 读语句: 从外部文件读入数据。 READ 文件名. 文件名:即环境部定义的对应外部文件名的内部文件名。WRITE 写语句:将数据写到外部介质上形成输出文件。 WRITE 记录名FROM 标识符1 标识符2 LINEADVANCING BEFORE 整数 LINES AFTER 助忆名 PAGE OPEN 打开语句OPEN INPUT 文件名1 OUTPUT 文件名2CLOSE 关闭语句 CLOSE 文件名1文件名2ADD 加法语句 ADD A TO B 表示A+
25、B B B只是被加数,参加运算 ADD A ,C GIVING B 表示A+C B B不是被加数,不参加运算SUBSTRACT 减法语句 SBUSTRACT B FROM A 表示A-B AMULTIPLY 乘法语句 MULTIPLY A BY B 表示A*B BDIVIDE 除法语句 DIVIDE A INTO B 表示B/A BCOMPUTE 计算语句 COMPUTE A-(B+C)*D/EMOVE 传送语句 MOVE A TO B 表示将A值传送给BGOTO GOTO语句 只能转移到段或节的开头IF 条件语句 IF 条件语句组1 ELSE 语句组2 END-IF.STOP 停止语句STO
26、P RUN 停止运行 常量表示程序暂时挂起不往下执行显示此常量PERPORM 执行语句 PERFORM 过程名过程部中的节名段名 PERFORM 过程名 UNTIL 条件USAGE 用法子句 定义数据在内存中的存放形式USAGE IS DISPLAY COMP DISPLY 标准数据形式 一个字节放一个字符 COMP 定点二进制形式只适用于数值型 COMP-1 内部短浮点形式 COMP-2 内部长浮点形式 COMP-3 内部十进制形式COPY COPY语句 在COBOL程序中DATA DIVISION部分往往是很长的,包括许多数据项的描述,利用COPY语句使某些记录描述和数据描述为不同的程序共
27、用,为此建立源程序库格式: 标识符1 标识符2COPY库名 REPLACING 常量1 BY 常量2 字1 字2在数据部中COPY语句书写形式:1 在文件节中FD文件名 COPY 语句.SD排序文件名 COPY 语句.01数据名 COPY 语句.2 在工作单元节和联接节中77 数据名 COPY 语句.01 数据名 COPY 语句.77 数据名1 REDEFINES 数据名2 COPY 语句.01 数据名1 REDEFINES 数据名2 COPY 语句.3 在报表节中RD 报表名 COPY 语句.第五章 子程序子程序调用CALL 子程序名 USING 数据名1 ,数据名2被调用程序中过程部部头PROCEDURE DIVISION SUING 数据名1 ,数据名2使用USING语句进行主程序和子程序的参数传递。子程序名:是在标识部中说明的子程序名。若
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1