cobol基础培训.ppt_第1页
cobol基础培训.ppt_第2页
cobol基础培训.ppt_第3页
cobol基础培训.ppt_第4页
cobol基础培训.ppt_第5页
免费预览已结束,剩余96页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

COBOL基础培训 因特驰软件北京有限公司 课程设置 课程安排上课 3天 6节课 每节课50分钟练习 18天验收 作业 测试 笔试 上机 学习方法 理论学习 实际操作 1 上课要做好课堂笔记2 课下熟读PPT 掌握PPT上的所有要点知识3 结合练习 在实操中掌握COBOL的编程技巧4 学习重点在于PPT中涉及到的内容学习目标根据项目的程序式样书 编写出合格的COBOL程序 培训内容 一 COBOL概述二 标识部三 环境部四 数据部五 过程部六 VSAM文件七 各部之间的关系八 程序举例九 COBOL的编译 链接 执行十 COBOL语言编程规范 一 COBOL概述 什么是COBOL语言COBOL语言的特点COBOL程序的基本结构COBOL程序结构示意图COBOL程序的书写区域COBOL程序的书写格式COBOL的字符 一 COBOL概述 1 什么是COBOL语言COBOL是CommonBusinessOrientedLanguage的缩写 是面向商业通用编程语言 它是专门为商业数据处理而设计的计算机高级程序语言 广泛用于数据管理领域 应用于多个行业如 银行 证券 金融 制造 等等 1960年4月正式发表COBOL61 目前最新版COBOL2002 2 COBOL语言的特点描述性好 能根据需要描述各种形式的数据 适合大批量数据处理 能对数据进行严密的组织 运算简单但运算量大 逻辑运算多 语法接近自然语言 英语 成文自明 遵循ISO标准 通用性强 移植方便 格式固定 结构严谨 层次分明 缺点是比较繁琐 一 COBOL概述 3 COBOL程序的基本结构标识部 IDENTIFICATIONDIVISION 用来标识程序名称 记录程序的文档记录信息如作者和日期等 环境部 ENVIRONMENTDIVISION 用来描述程序运行和编译的计算机环境 内部数据文件与系统设备的对应关系 数据部 DATADIVISION 定义程序中所有数据的类型和所占内存的大小 过程部 PROCEDUREDIVISION 编写程序要执行的语句 是程序的核心 一 COBOL概述 4 COBOL程序结构示意图 cobol 标识部 过程部 数据部 环境部 段 节 段 句子 节 描述体 句子 节 段 句子 一 COBOL概述 COBOL程序结构示意图部下设置节 节下设置段或描述体 段下或节下包含句子 节是由一个或多个段组成的 节的定义从节名开始到下一个节名或文本结束为止 定义格式 节名SECTION 节名分为系统定义和用户自定义两种 段由一个或多个句子组成 段的定义从段名开始到下一个段名或文本结束为止 定义格式 段名 段名 点号 段名分为系统定义和用户自定义两种 文件描述体只能在数据部中定义 用于描述外部文件的属性及其记录的格式 定义格式 FD文件名 文件描述体用FD FileDescription 语句定义 句子是完整的指令 用相应的动词表示其操作 以一个句号加一个以上的空格来结束 一 COBOL概述 5 COBOL程序的书写区域标准COBOL程序每行80列 被分为五个区域第01 06列为 标号区 标号是6位数字 应从小到大 但不一定连续 标号只是方便查阅程序 可以省略 第07列为 注释区 DEBUG标识区 表示本行是注释行 用于注释程序说明 D 表示本行是DEBUG行 用于程序调试 第08 11列为 A区 程序中下列语句必须从该区开始书写 部名 节名 段名 描述符 FD 01和77层 第12 72列为 B区 程序正文部分 过程部语句必须从该区开始书写 第73 80列为 注释区 行注释区 写入此区的内容在编译时被忽略 一般不推荐使用 一 COBOL概述 6 COBOL程序的书写格式大小写字母等价 但引号中的字符除外 如 MOVEATOB MOVEaTObDISPLAY HELLO DISPLAY hello 相邻的两个COBOL字之间有一个以上的空格 运算符和等号左右必须各有一个以上的空格 圆括号外侧必须有一个以上的空格 内侧不必 如 COMPUTER A B C D逗号 句号 分号左边不能有空格 而右边应有 如 DISPLAY A A 一 COBOL概述 7 COBOL的字符COBOL字符集包括 数字0 9 字母A Z a z 15个专用符号 逗号 句号 分号 引号 空格 属于系统字符集而不属于COBOL字符集的字符 只能出现在COBOL程序的字符串或注释行中 如 DISPLAY HELLO COBOL字是由上述字符组成的最小单位 保留字 用户字 保留字 规定五种类型专门用途的字 300多个 键字 如 MOVE ADD等可选字 如 USAGEIS等专用字符 如运算符 等 比较符 等表意常量 如 ZERO ZEROS ZEROES SPACE SPACES QUOTE QUOTES HIGH VALUE HIGH VALUES LOW VALUE LOW VALUES ALL NULL NULLS专用寄存器 如 LENGTHOF RETURN CODE等用户字 用户自定义的名字 如 程序名 文件名 节名 段名 数据名等 一 COBOL概述 7 COBOL的字符数据名 相当于其它语言中的变量名 它代表一个具体的数据项 只能由字母 至少一个 数字和连字符 组成 连字符不能出现在两端 不能包含空格数据名长度不能超过30个字符 length 30 尽量使用有意义的英文字或拼音 如 NAME XING MING不能用保留字作为数据名 多使用连字符 如 NAME OF STUDENT常量 COBOL常量分为数值常量 非数值常量 表意常量 数值常量 由数字0 9 正负号和小数点组成 如 123 45 67 890非数值常量 用匹配的引号 单 括起来的字符串 如 123 HELLO 由纯数字组成的非数值常量不能用于数学运算 如 123 和123不同 表意常量 QUOTE QUOTES表示引号 如 QUOTE HENRY QUOTEZERO ZEROS ZEROES 表示零字符 SPACE SPACES 表示空格HIGH VALUE HIGH VALUES 表示具有最高值的字符 每个字符二进制为11111111 LOW VALUE LOW VALUES 表示具有最低值的字符 每个字符二进制为00000000 ALL 表示由该量组成的字符串 二 标识部 IDENTIFICATIONDIVITION 标识部的作用书写格式PROGRAM ID命名规则 二 标识部 IDENTIFICATIONDIVITION 标识部的作用标识部是COBOL程序的第一部分 用来为程序设定标志 以便识别 每个程序 包括主程序和子程序 都必须有一个名字 系统按名字对程序管理和调用 标识部下面不设置节 只设置段 部名和段名都从A区开始书写 书写格式IDENTIFICATIONDIVISION PROGRAM ID 程序名 AUTHOR 作者名 INSTALLATION 计算机设置场所 DATE WRITTEN 源程序编写日期 DATE COMPILED 源程序编译日期 SECURITY 保密程度 二 标识部 IDENTIFICATIONDIVITION 3 PROGRAM ID命名规则只能使用字母 数字和连字符最少一个字母 不能以连字符开头或结尾最长30个字符 但通常工作中要求不超过8个字符书写格式 PROGRAM ID program name 三 环境部 ENVIRONMENTDIVITION 环境部的作用配置节输入输出节 三 环境部 ENVIRONMENTDIVITION 环境部的作用环境部用来说明程序运行的软硬件环境 是COBOL程序中唯一与设备相关的部分 将程序中用到的内部文件与外部设备建立起联系 环境部包括两个节 配置节和输入输出节 当无配置说明和文件应用时可省略 ENVIRONMENTDIVISION CONFIGRATIONSECTION SOURCE COMPUTER 计算机名 OBJECT COMPUTER 目标计算机名 SPECIAL NAMES 专用名描述项 INPUT OUTPUTSECTION FILE CONTROL 文件控制描述体 I O CONTROL 输入输出控制描述体 配置节 配置节包含三个段SOURCE COMPUTER computer name 标识对该COBOL程序进行编译的计算机 OBJECT COMPUTER computer name 标识运行该COBOL程序的计算机 SPECIAL NAMES 用来通知系统把原来规定的设备名或符号改为用户自己指定的名字或符号 例如 CURRENCYSIGNIS 是默认货币符号 可换成其他非数值常量 三 环境部 ENVIRONMENTDIVITION 3 输入输出节程序中如果用到输入输出文件 就在该节把程序中的内部文件和外部文件 设备 联系起来 输入输出节包括两个段 文件控制段 输入输出控制段 FILE CONTROL 为程序使用的文件命名 指出存放该文件的外部设备及文件控制信息 ENVIRONMENTDIVISION INPUT OUTPUTSECTION FILE CONTROL SELECTFILE 1ASSIGNTOINPUTFILE ORGANIZAIONIS SEQUENCIAL INDEXED RELATIVE ACCESSMODEIS SEQUENCIAL RANDOM DYNAMIC FILESTATUSIS变量名 FILE 1是内部文件名 用于COBOL程序内部 INPUTFILE是运行JCL中的DSN指定的数据集 用于指定待操作的数据集 ORGANIZATION指定文件的逻辑结构SEQUENTIAL 记录的次序由其在文件中的物理顺序决定INDEXED 记录的位置由索引来确定 每条记录都必须包含有一个作为主键的项目RELATIVE 记录根据其相对于文件开头的位置来决定 文件中第1条记录的相对记录号为1 第10条记录的相对记录号为10 依次类推 三 环境部 ENVIRONMENTDIVITION 3 输入输出节FILE CONTROL 为程序使用的文件命名 指出存放该文件的外部设备及文件控制信息 ACCESSMODE指定文件中的记录以何种方式可用SEQUENTIAL 可用于上述任一ORGANIZATION的文件 对于SEQUENTIAL文件 记录按照物理顺序 即记录原先被写入文件的顺序 读写 对于INDEXED文件 记录按照键值的升序读写 对于RELATIVE文件 记录按其相对记录号的升序读写 如果省略ACCESS从句 将默认为本方式 RANDOM 只能用于INDEXED和RELATIVE文件 由索引键值 相对键值指定所读写的记录 一次存取一条 DYNAMIC 只能用于INDEXED和RELATIVE文件 纪录可按上述两种方式读写 取决于所用输入输出语句的具体形式 FILESTATUS监视文件每一次操作的执行 系统会给由FILESTATUS指定的项目传送一个值 I O CONTROL 指定目标程序运行时 几个文件共用一个内存区 以省内存 在此暂不作介绍 四 数据部 DATADIVISION 数据部的作用数据部的结构数据定义文件节 FILESECTION 工作单元节 WORKING STORAGESECTION COBOL中的数据类型联接节 LINKAGESECTION 四 数据部 DATADIVISION 数据部的作用程序中涉及到的全部数据 输入 输出 中间 都要在此定义 对它们的属性进行说明 主要描述一下属性 数据类型 数值 字符 和存储形式 长度 数据项间的关系 层次和层号 文件与记录的关系数据部的结构根据数据项的用途不同 数据部可以分为 文件节 FILESECTION 用来描述程序中用到的输入输出文件及其记录中各数据项的属性 工作单元节 WORKING STORAGESECTION 用来描述程序中用到的中间数据项 联接节 LINKAGESECTION 用来描述与调用程序间发生数据传递的数据项 即参数 四 数据部 DATADIVISION 3 数据定义 COBOL中把有从属关系的数据用层次关系来描述数据的层次结构 文件 file 记录 record 字段 field 组合项 groupitem 初等项 elementaryitem 文件 包含若干记录的集合 与存储在外部介质上的文件 数据集 对应 记录 具有一定层次关系的一组数据项的最大集合 组合项 由若干初等项和低层组合项组成 在逻辑上存在联系 平等或从属 初等项 相互独立 没有内在联系的数据项 是数据的基本单位 举例说明 FDSTUDENT FILE 01STUDENT RECORD 05STUD IDPIC9 03 05STUD NAMEPICX 20 05STUD BIRTH 10BIRTH YYYYPIC9 04 10BIRTH MMPIC9 02 10BIRTH DDPIC9 02 四 数据部 DATADIVISION 3 数据定义 COBOL中把有从属关系的数据用层次关系来描述层次规定 描述层次结构的层号从01 49 层号越大层次越低 高层为01层 最低层为49层 每个数据项都是一个单独的条目 都必须被赋予一个层号 从属项的层号比其上属项的层号大 但层号不必连续 如果多个数据项都从属于同一组合项但互不从属 则这几个数据项应具有相同的层号 一个层号为N的组合项包括它下面所有层号比它大的数据项 直到遇到小于或等于N的层次为止 66层 用于重新编制前面已定义的数据项 必须包含一个RENAMES从句 77层 用于标识一个独立的初等项 它不属于其它组合的初等项 88层 用于标识一个条件名变量 重要的是不同层次数据间的关系 而不是数据的层号 四 数据部 DATADIVISION 3 数据定义 COBOL中把有从属关系的数据用层次关系来描述举例说明 01STUDENT RECORD 01STUDENT RECORD 03STUD IDPIC9 03 05STUD IDPIC9 03 03STUD NAME 05STUD NAME 05FIRST NAMEPIC9 10 10FIRST NAMEPIC9 10 05LAST NAMEPIC9 10 10LAST NAMEPIC9 10 03STUD BIRTH 05STUD BIRTH 05BIRTH YYYYPIC9 04 10BIRTH YYYYPIC9 04 05BIRTH MMPIC9 02 10BIRTH MMPIC9 02 05BIRTH DDPIC9 02 10BIRTH DDPIC9 02 四 数据部 DATADIVISION 4 文件节 FILESECTION 程序中每个输入 输出文件的数据格式都要在此描述 包括 文件名称和属性 文件中包括的记录的名字 每个记录中数据的层次关系 记录中各数据项的数据形式和占内存的大小文件的描述一般格式FD文件名 内部文件名 LABLERECORDISSTANDARD OMITTED DATARECORDIS记录名 01记录名 05数据项1PIC 05数据项2PIC FD语句是文件描述体 用来描述文件与记录的属性 如记录名称 格式 长度STANDARD 标准磁盘 带 文件带有标号的记录OMITTED 省略文件记录的标号 用作输出打印的文件缺省为STANDARD 也可写为 LABELRECORDSARESTANDARD OMITTED FD语句下所有的数据组和数据项组成了该文件的一条记录 记录描述 记录描述体由01层号开始 后跟记录名 用于定义记录的数据格式 即各下层数据项的数据类型和长度 如果记录本身就是一个初等项 则在记录名后描述记录型和长度 四 数据部 DATADIVISION 4 文件节 FILESECTION 举例说明 外部文件STUDENTFILESTUD IDSTUD NAMESTUD BIRTH101LILEI 19900521102HANMEIMEI 19910610FDIN FILE 01STUDENT RECORD 05STUD IDPIC9 03 05STUD NAMEPICX 20 05STUD BIRTH 10BIRTH YYYYPIC9 04 10BIRTH MMPIC9 02 10BIRTH DDPIC9 02 四 数据部 DATADIVISION 5 工作单元节 WORKING STORAGESECTION 程序中用于非文件输入输出的数据项 如运算的中间结果等 在工作单元节中描述PIC PIC即PICTURE的缩写 用来描述每一个初等项的属性 数据类型 数据长度 如 01STUD NAMEPICX 20 VALUE 用于给变量赋初值 如 01APIC9 03 VALUE123 01BPICX 03 VALUE ABC 只有工作单元节的数据项可以赋初值 不能对文件节中文件中的记录数据项赋初值如果在组合项的描述体中使用VALUE子句 初值只能是表意常量或非数值型常量当用一个带符号的数值作初值时 相应的PIC子句中应有 S 描述符否则初值无效赋初值应注意类型的一致性初值应适合PIC子句描述的范围 否则会出现截断或产生错误RENAMES 用在66层 对之前已经定义的数据项重新组合 格式 层号新数据项RENAMES原数据项1 THRU原数据项n 如 01ADDRESS 05STREETPICX 15 a05CITYPICX 15 b05STATEPICX 02 cc05ZIPPIC9 05 1234566FULL ADDRESSRENAMESSTREETTHRUSTATE 四 数据部 DATADIVISION 5 工作单元节 WORKING STORAGESECTION OCCURS 用于在数据部的工作存储节定义一个表 数组 格式 层号数据项OCCURSNTIMES 如 01YEAR SALARY 05MONTH SALARYOCCURS12TIMES 10SALARYPIC9 5 V9 2 10BONUSPIC9 5 V9 2 引用 组项目组项目基本项目YEAR SALARYMONTH SALARY 1 SALARY 1 BONUS 1 REDEFINES 用于定义多个数据项共享同一段内存空间格式 层号新数据项REDEFINES原数据项如 01A PIC9 08 2013123001BREDEFINESA 05B1PICX 04 201305B2PIC9 02 1205B3PICX 02 30注意 原数据项和新数据项必须有相同的层号REDEFINES的数据项应紧跟被重定义的数据项描述之后REDEFINES子句中不能使用VALUE子句赋初值REDEFINES子句不能用于文件节的01层 文件记录 REDEFINES子句可以改变数据的结构 类型和长度 四 数据部 DATADIVISION 6 COBOL中的数据类型 数值型 字母型 字符型 编辑型数值型数据 用来描述在程序中用于计算或只存放数字的数据项 9 描述符 表示该位置上可以放入一个0 9之间的数字如 01APIC999 或9 03 表示A可以存放000 999之间的一个三位数 有几个9表示有几位数注意 在数值型数据项中只能放数字不能放其他字符用 9 描述符只能表示正整数和零 如输入小数和负数 则小数和负号被舍弃 9V9 描述符 定义一个用于存放带小数点的数据项 V 代表数据结构中隐含的小数点的位置 因此小数点不占内存单元 如 01APIC999V99 或9 03 V9 02 表示A可以存放000 00 999 99之间的一个数 小数点不占位 在传送或运算时起作用如 56 89 A显示 05689实际数值 56 89 S9 描述符 定义一个用于存放带符号的数据项 S 代表数据结构中隐含的符号的位置 因此符号不占内存单元 如 01APICS9 03 表示可以存放一个带符号的三位整数 并且符号不占位 如 569 A显示 569实际数值 569S9V9型表示可以存放一个带小数的 带符号的数值 四 数据部 DATADIVISION 6 COBOL中的数据类型 数值型 字母型 字符型 编辑型字母型数据 用来描述在程序中只存放字母和空格的数据项 A 描述符 表示该位置上可以放入一个字母或空格如 01APICA 03 表示可以存放一个三位由字母和空格组成的数据 例如 XYZ 或 XZ 字符型数据 用来描述在程序中可以存放由任意COBOL字符集组成的数据 它是非数值型的 不能用于计算 X 描述符 表示该位置上可以放入任何一个COBOL字符如 01APICX 03 表示可以存放一个三位由任意COBOL字符组成的数据 例如 123 XZ 1 Z 字符型数据型数据可以用 X 来描述 也可用 9 A X 描述符一起来描述如 描述数据 COB 74 可以用PICX 06 也可以用PICA 03 X 01 9 02 编辑型数据 用来描述在程序中只是作为输出数据时增加或改变某些所需的符号 起编辑作用 不能用于计算 9 9 描述符 插入小数点 使数值型数据中隐含的小数点能在相应的位置上显示出来 如 数值为 456 7801APIC9 03 V9 02 输出 45678长度 5个字节01BPIC9 03 9 02 输出 456 78长度 6个字节 四 数据部 DATADIVISION 6 COBOL中的数据类型 数值型 字母型 字符型 编辑型编辑型数据 描述符 插入逗号 用作分隔符 如 数值为 10000001APIC9 07 输出 0100000长度 7个字节01APIC9 999 999 输出 0 100 000长度 9个字节 B 描述符 插入空格 如 数值为 201209171381000100001APIC9 04 BB9 02 BB9 02 输出 201长度 12个字节 描述符 插入正负号 描述符 一侓加符号 描述符只对负值加负号 如 数值为 45601APICS9 03 输出 456长度 3个字节01BPIC 9 03 输出 456长度 4个字节01CPIC 9 03 输出 456长度 4个字节如 数值为 45601APICS9 03 输出 456长度 3个字节01BPIC 9 03 输出 456长度 4个字节01CPIC 9 03 输出 456长度 4个字节 四 数据部 DATADIVISION 6 COBOL中的数据类型 数值型 字母型 字符型 编辑型编辑型数据 描述符 插入 可以和 一起使用 如 数值为 1000 1201APIC 9999 99 输出 1000 12长度 8个字节01BPIC 999 999 输出 001 000长度 8个字节01CPIC 999 999 输出 001 000长度 9个字节浮动插入正负号 如 数值为 12345 0001APIC 99 输出 2 345 00长度 9个字节01BPIC 99 输出 2 345 00长度 9个字节如 数值为 12001APIC 99 输出 120 00长度 9个字节01APIC 99 输出 120 00长度 9个字节 四 数据部 DATADIVISION 6 COBOL中的数据类型 数值型 字母型 字符型 编辑型编辑型数据 Z 描述符 在高位零的位置上代以空格或 如 数值为 2345 0001APIC99999 99 输出 02345 00长度 8个字节01BPICZZZZZ 99 输出 2345 00长度 8个字节01CPIC 99 输出 2345 00长度 8个字节当 Z 与 一起使用时 当插入的 前面是被取消的零时 该 位也被空格或 代替 如 数值为 120 0001APICZZ ZZZ 99 输出 120 00长度 9个字节01BPIC 99 输出 12 00长度 9个字节如果使用 Z 对应所有字符 当数值为0时 则所有数值位全部由空格或 代替 小数点位由空格代替 或保留 如 数值为 001APICZZZ ZZ 输出 长度 6个字节01BPIC 输出 长度 6个字节01CPIC 99 输出 00长度 6个字节 四 数据部 DATADIVISION 6 COBOL中的数据类型 数值型 字母型 字符型 编辑型编辑型数据 DB 和 CR 描述符 在银行业务中 有时用到DB debit 借方 和CR credit 贷方 DB和CR只能用作固定插入 只作为最后一个描述符 当数值为负时 将数据项最后两个字节设置为DB或CR 当数值为正时 设置为空格 如 数值为 12301APIC999DB 输出 123DB长度 5个字节01APIC999CR 输出 123CR长度 5个字节如 数值为 12301APIC999DB 输出 123 长度 5个字节01APIC999CR 输出 123 长度 5个字节 四 数据部 DATADIVISION 7 联接节 LINKAGESECTION 作为主程序与子程序间参数传递的数据名定义在子程序的LINKAGESECTION 也就是该子程序的接口 数据项的定义形式与在工作单元节一致 如 LINKAGESECTION 01LNK IN DATA 05STUDENT LENPIC9 02 COMP 05STUDENT NAMEPICX 20 05STUDENT AGEPIC9 02 01注 参数除了可以通过主程序的CALL语句来传送之外 也可以通过JCL的EXEC语句的PARM参数来传送 AAAAAAAAAAAAAAAA18 五 过程部 PROCEDUREDIVISION 五 过程部 PROCEDUREDIVISION 1 过程部的作用编写程序要执行的语句 是程序的核心 2 INITIALIZE语句 将数据项的值设为初始值 字符型初始化成空格 数字型初始化成0 用于组合项时 相当于将所有的基本项都初始化 一般格式 INITIALIZE数据项1数据项2 如 01A 02A1PICX 3 02A2PIC9 2 V9 02A3PICA 3 PROCEDUREDIVISION INITIALIZEA A1 A2 000A3 五 过程部 PROCEDUREDIVISION 3 ACCEPT语句 用于接收从键盘或指定设备上获得输入数据一般格式 ACCEPT标识符 FROM助忆名 ACCEPT后只能有一个标识符 标识符可以是组合项 FROM助忆名 指定环境中特定的设备 助忆名需要在环境部中定义 ENVIRONMENTDIVISION CONFIGRATIONSECTION SPECIAL NAMES 专用名描述项 CONSOLEISABC ACCEPTTFROMABC 则表示要从控制台接收数据如 ACCEPTTEST DATA 表示从数据项TEST DATA运行JCL中的SYSIN的DD语句接收一个数据 固定取得系统提供的日期和时间信息ACCEPT标示符FROMDATE 系统当前日期 YYMMDD DATE YYYYMMDD 系统当前日期 YYYYMMDD DAY 一年中第几天 YYDDD DAY OF WEEK 当天是星期几 W TIME 当前系统时间 HHMMSS99 DISPLAY语句 从计算机内存中的数据输出到某一指定的输出设备上 如监视器 系统输出流等 一般格式 DISPLAY 标识符1 常量1 标识符2 常量2 UPON助忆名 UPON助忆名 与ACCEPT相同 标识符之间用空格相隔 DISPLAY语句结束后自动换行 如 DISPLAY A A 五 过程部 PROCEDUREDIVISION 5 MOVE语句 相当于赋值语句 可以将常量或一个数据项的内容传送到另一数据项中 一般格式 MOVE标示符1 常量TO标示符如 MOVE IBM TOCOMPANYMOVE10TOCOUNTMOVEZEROTOBLANKFIELDMOVEV1TOV2数据传送规则 假设TO左侧是发送项A 右侧是接收项B 如果A和B的数据类型及长度相同 则按字节相对应传送如果A和B都是数值型 但长度不同 则按小数点对齐原则传送 如A比B长 则产生截断 如B比A长 则多余位补零如果A和B的长度不相同 且二者都是非数值型 则按左侧对齐原则 如A比B长 则从右端截断 如B比A长 则多余位补空格A和B可以是初等项 也可以是组合项 或者两者混合 同样遵守以上原则发送项和接收项都是组合项 而且结构和描述均相同 则可以看作将各个初等项一一对应传送 如 01A A07123CDE02A1PICX 3 VALUE A07 02A2PIC9 2 V9VALUE12 3 02A3PICA 3 VALUE CDE 01B A07123C02B1PICX 3 A0702B2PIC9 1 V912 302B3PICX 1 CMOVEATOB B1 A07B2 12 3B3 CDE 五 过程部 PROCEDUREDIVISION 5 MOVE语句 相当于赋值语句 可以将常量或一个数据项的内容传送到另一数据项中 数据传送规则 假设TO左侧是发送项A 右侧是接收项B 发送项和接收项长度相同 但数据结构形式不同 则将发送项的内容原样不动地自左而右顺序地传送到接收项 例如 01A A07123CDE02A1PICX 3 VALUE A07 02A2PIC9 2 V9VALUE12 3 02A3PICA 3 VALUE CDE 01B A07123CDE 02B1PICX 1 A02B2PICX 2 0702B3 12303B31PICX 2 1203B32PICX 1 302B4PICX 5 CDE MOVEATOB B1 AB2 07B31 12B32 3B4 CDE最常见的传送类型 同类型数据间传送 数值型向数值编辑型的传送 便于输出 各类型数据项 不包括非整型 向字符型数据项的传送 五 过程部 PROCEDUREDIVISION 5 MOVE语句 相当于赋值语句 可以将常量或一个数据项的内容传送到另一数据项中 数据名的受限和受限名的引用在COBOL程序中 标识名必须唯一识别 受限名的引用使用 OF 限定符 例如 01TODAY DATE 03YEARPIC9 04 03MONTHPIC9 02 03DATPIC9 02 01LAST DATE 03YEARPIC9 04 03MONTHPIC9 02 03DATPIC9 02 MOVE2012TOYEAR MOVE2012TOYEAROFTODAY DATE 如果限定一次还不能成为唯一 可以多次使用限定符 五 过程部 PROCEDUREDIVISION 5 MOVE语句 相当于赋值语句 可以将常量或一个数据项的内容传送到另一数据项中 CORRESPONDING CORR 对应传送一般格式 MOVE CORR 数据项1TO数据项2把一个组合项中若干项传送给另一组合项中同名的项例如 MOVECORRTODAY DATETOLAST DATE01TODAY DATE 2012102901LAST DATE 2910201203YEARPIC9 04 03DATPIC9 02 2903MONTHPIC9 02 03MONTHPIC9 02 1003DATPIC9 02 03YEARPIC9 04 如果两个组合项中包括的项不同 则只传送同名的项例如 MOVECORRATOB01A 01B 03A1PIC9 04 03B1PIC9 04 03A2PIC9 02 03A1PIC9 02 03A3PIC9 02 03A2PIC9 02 传送的两者间必须有成对的同名数据项 而且这一对中必须至少有一个项是初等项 否则不能作为对应项传送例如 MOVECORRATOB01A 01B 03A1PIC9 04 03A1PIC9 04 03A2 03A2 05A3PIC9 02 05A5PIC9 02 05A4PIC9 02 05A6PIC9 02 五 过程部 PROCEDUREDIVISION 5 MOVE语句 相当于赋值语句 可以将常量或一个数据项的内容传送到另一数据项中 CORRESPONDING CORR 对应传送对应传送与层号无关例如 MOVECORRATOB01A 01B 03A1PIC9 04 05A1PIC9 04 03A2 05A2PIC9 04 05A3PIC9 02 05A4PIC9 02 所谓同名 指的是它们有相同的全程受限 全程同名 例如 MOVECORRATOB01A 01B 02X 02X 03A1PIC9 04 03B1PIC9 04 03A2PIC9 02 03A1PIC9 02 03A3PIC9 02 03A2PIC9 02 02Y1 02Y2 03A4PIC9 04 03A4PIC9 04 03A5PIC9 02 03A5PIC9 02 五 过程部 PROCEDUREDIVISION 6 文件操作语句 OPEN READ WRITE CLOSEOPEN 当需要文件操作时 必须先OPEN文件 即在读写之前检查该文件是否已经准备好 一般格式 OPENINPUT OUTPUT I O EXTENDFILE1 FILE2可以用一个OPEN语句打开多个输入输出文件 FILE1 FILE2是内部文件名 文件打开形式 INPUT OUTPUT I O EXTENDINPUT 输入文件 打开的文件只能读取 写入 修改 删除记录会发生错误 若打开的文件不存在 则产生错误 OUTPUT 输出文件 打开的文件只能写入 如果打开的文件已经存在记录 则删除所有现存的记录 写入新的记录 也就是覆盖的形式写入 I O 输入输出文件 打开的文件可以读取也可以写入 若打开的文件不存在 则产生错误 EXTEND 输出文件 打开顺序文件 只能写入 将记录插入到现有文件的末尾 若打开的文件不存在 则产生错误 CLOSE 对一个文件的读写操作完成后应该用CLOSE语句关闭 一般格式 CLOSEFILE1 FILE2 注意 文件关闭后 不能再对该文件有任何的读写操作 如需再次读写该文件 则需要再次使用OPEN语句打开 CLOSE语句保证了文件中的信息不被意外的错误操作而毁坏 同时也释放了对内存的占用 五 过程部 PROCEDUREDIVISION 6 文件操作语句 OPEN READ WRITE CLOSEREAD 从外部文件 PS VSAM 读取数据存储到指定的数据项中 一般格式 READ内部文件名 INTO数据项 ATENDSTATEMENT NOTATENDSTATEMENT END READ READ语句并不是读取整个文件 而是每次读取一条记录 将其存入输入记录缓冲区 在数据部文件节中定义的数据项 既文件的记录属性 INTO语句将读取的记录另存到其它数据项 ATEND子句可以判断文件是否已经读取结束 读入下一记录会将输入记录缓冲区当前内容覆盖 如 假设外部文件STUDENTFILE中记录包含的内容为 学生代码 学生姓名 出生日期 记录信息如下 STUDENTFILESTUD IDSTUD NAMESTUD BIRTH101LILEI 19900521102HANMEIMEI 19910610 五 过程部 PROCEDUREDIVISION 6 文件操作语句 OPEN READ WRITE CLOSEENVIRONMENTDIVISION INPUT OUTPUTSECTION FILE CONTROL SELECTIN FILEASSIGNTOSTUDENTFILE DATADIVISION FILESECTION FDIN FILE 01STUDENT RECORD 101LILEI 1990052105STUD IDPIC9 03 10105STUD NAMEPICX 20 LILEI 05STUD BIRTH 1990052110BIRTH YYYYPIC9 04 199010BIRTH MMPIC9 02 0510BIRTH DDPIC9 02 21PROCEDUREDIVISION OPENINPUTIN FILE READIN FILE 101LILEI 19900521READIN FILE 102HANMEIMEI 19910610CLOSEIN FILE 在执行一次READ语句后 文件中一条记录的数据便输入到内存记录区 按排列顺序分别送到记录区中各数据项中 注意文件的各记录中的数据是不分数据项的 只是按一定的顺序把数据存放在各字节中 所以数据部对记录区中各数据项的描述应该与文件的记录中各数据排列次序和长度相一致 在下节课我讲到PERFORM语句时 再学习如何循环读文件 五 过程部 PROCEDUREDIVISION 6 文件操作语句 OPEN READ WRITE CLOSEWRITE 将内存数据输出到外部设备 外部文件PS VSAM 一般格式 WRITE记录名 注意WRITE语句的操作对象是记录 所以是 记录名 而不是 文件名 在用WRITE语句输出一个记录之前 应向输出记录区传送数据 如 假设向外部文件STUDENTFILE文件写入以下信息 STUD IDSTUD NAMESTUD BIRTH101LILEI 19900521102HANMEIMEI 19910610 五 过程部 PROCEDUREDIVISION 6 文件操作语句 OPEN READ WRITE CLOSEENVIRONMENTDIVISION INPUT OUTPUTSECTION FILE CONTROL SELECTOUT FILEASSIGNTOSTUDENTFILE DATADIVISION FILESECTION FDOUT FILE 01STUDENT RECORD 101LILEI 1990052105STUD IDPIC9 03 05STUD NAMEPICX 20 05STUD BIRTH 10BIRTH YYYYPIC9 04 10BIRTH MMPIC9 02 10BIRTH DDPIC9 02 PROCEDUREDIVISION OPENOUTPUTOUT FILE MOVE 101LILEI 19900521 TOSTUDENT RECORD WRITESTUDENT RECORD MOVE 102HANMEIMEI 19910610 TOSTUDENT RECORD WRITESTUDENT RECORD CLOSEOUT FILE 五 过程部 PROCEDUREDIVISION 6 文件操作语句 OPEN READ WRITE CLOSE文件状态字 FILE STATUS 常见的文件状态值及意义 五 过程部 PROCEDUREDIVISION 7 算数运算语句 ADD SUBTRACT MULTIPLY DIVIDE COMPUTE ROUNDED ONSIZEERROR REMAINDERADD语句 直接将一个或多个数据项与一个或多个数据项相加一般格式 ADD标示符1 标示符2 TO标示符m 标示符n 常量1 常量2 ADD标示符1 标示符2 GIVING标示符m 标示符n 常量1 常量2 例如 ADDNUM1 NUM2GIVINGNUM3 BEFORE102511AFTER102535ADDNUM1TONUM2BEFORE1025AFTER1035注意 TO和GIVING不能同时出现 五 过程部 PROCEDUREDIVISION 7 算数运算语句SUBTRACT语句 从一个或数据项中减去一个或几个减去数据项的和一般格式 SUBTRACT标示符1 标示符2 FROM标示符m 标示符n 常量1 常量2 SUBTRACT标示符1 标示符2 FROM标示符mGIVING标示符n常量1 常量2 例如 SUBSTRACTNUM1 15FROMNUM2 NUM3 BEFORE1055100AFTER103075SUBSTRACTNUM1FROMNUM2GIVINGNUM3 BEFORE102511AFTER102515 五 过程部 PROCEDUREDIVISION 7 算数运算语句MULTIPLY语句 将两个数据项相乘 将结果存放在数字型或数字编辑型字段中一般格式 MULTIPLY标示符1BY标示符m 标示符n 常量1MULTIPLY标示符1BY标示符2GIVING标示符3常量1 常量2例如 MULTIPLYNUM1BYNUM2 BEFORE1012AFTER10120MULTIPLYNUM1BYNUM2GIVINGNUM3 BEFORE101211AFTER1012120 五 过程部 PROCEDUREDIVISION 7 算数运算语句DIVIDE语句 将一个字据项 被除数 除以另一个数据项 除数 并将结果存放在数字或数字编辑型数据项中一般格式 DIVIDE标示符1INTO标示符m 标示符n 常量1DIVIDE标示符1INTO标示符2GIVING标示符m 标示符n 常量1BY常量2 例如 DIVIDENUM1INTONUM2 BEFORE10120AFTER1012DIVIDENUM1INTONUM2GIVINGNUM3 BEFORE1012011AFTER1012012DIVIDENUM1BYNUM2GIVINGNUM3 BEFORE10211AFTER1025注意 DIVIDEAINTOB是指B A BDIVIDEAINTOBGIVINGC是指B A CDIVIDEABYBGIVINGC是指A B C 五 过程部 PROCEDUREDIVISION 7 算数运算语句COMPUTE语句 综合算数运算语句 使用算数表达式完成计算一般格式 COMPUTE标示符1 标示符2 算数表达式运算符优先级由高到低顺序为 正负号 或 或 例如 C 3 D 5 E 2 F 1COMPUTEA B C D 2 E 3 FC则 A 3 B 3ROUNDED语句 四舍五入 用于带有小数点的十进制数运算 当计算结对小数点最右边的数字需要截断时进行四舍五入处理 例如 A B C均定义为9V9COMPUTEAROUNDED B CBEFORE1 01 21 8AFTER2 21 21 8 2 16 五 过程部 PROCEDUREDIVISION 7 算数运算语句ONSIZEERROR语句 长度溢出判断 十进制数运算时 计算结果比数据项的长度要长 则被称为长度溢出 当发生溢出错误时 按程序设计者事先指定的操作处理 例如 A B C均定义为9V9COMPUTEA B CONSIZEERRORDISPLAY SIZEERROR STOPRUN DISPLAYA 如A B C均定义为9V9 B 1 2 C 9 0则A B C 应该为10 8 此时发生长度溢出 当ROUNDED与ONSIZEERROR一起使用时 先按ROUNDED作四舍五入处理 再判断是否溢出 REMAINDER语句 用于除法语句 DIVIDE 求余数 例如 A B C D均定义为9 02 V9DIVIDEAINTOBGIVINGCREMAINDERDBEFORE31000AFTER3103 30 1商和余数的值不仅取决于除数和被除数 还取决于数据部中对商和余数的描述如用ROUNDED语句 它只对商起作用 余数不作四舍五入处理长度溢出也只检查商的值是否溢出 而不检查余数 五 过程部 PROCEDUREDIVISION 8 字符串语句 STRING UNSTRING INSPECTSTRING语句 用来

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论