《COBOL基础培训》PPT课件.ppt

上传人:san****019 文档编号:17258349 上传时间:2020-11-16 格式:PPT 页数:101 大小:664.10KB
收藏 版权申诉 举报 下载
《COBOL基础培训》PPT课件.ppt_第1页
第1页 / 共101页
《COBOL基础培训》PPT课件.ppt_第2页
第2页 / 共101页
《COBOL基础培训》PPT课件.ppt_第3页
第3页 / 共101页
资源描述:

《《COBOL基础培训》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《COBOL基础培训》PPT课件.ppt(101页珍藏版)》请在装配图网上搜索。

1、Intouch COBOL基础培训 因特驰软件北京有限公司 Intouch 课程设置 课程安排 上课: 3天, 6节课,每节课 50分钟 练习: 18天 验收:作业 + 测试(笔试 + 上机) 学习方法 (理论学习 + 实际操作) 1.上课要做好课堂笔记 2.课下熟读 PPT,掌握 PPT上的所有要点知识 3.结合练习,在实操中掌握 COBOL的编程技巧 4.学习重点在于 PPT中涉及到的内容 学习目标 根据项目的程序式样书,编写出合格的 COBOL程序。 Intouch 培训内容 一 COBOL概述 二标识部 三环境部 四数据部 五过程部 六 VSAM文件 七各部之间的关系 八程序举例 九

2、COBOL的编译、链接、执行 十 COBOL语言编程规范 Intouch 一 .COBOL概述 1. 什么是 COBOL语言 2. COBOL语言的特点 3. COBOL程序的基本结构 4. COBOL程序结构示意图 5. COBOL程序的书写区域 6. COBOL程序的书写格式 7. COBOL的字符 Intouch 一 .COBOL概述 1. 什么是 COBOL语言 COBOL是 Common Business Oriented Language的缩写,是面向商业通用编程语言。 它是专门为商业数据处理而设计的计算机高级程序语言。广泛用于数据管理领域。应用 于多个行业如:银行,证券,金融,制

3、造,等等。 1960年 4月正式发表 COBOL 61。目前最新版 COBOL 2002。 2. COBOL语言的特点 描述性好,能根据需要描述各种形式的数据。 适合大批量数据处理,能对数据进行严密的组织 (运算简单但运算量大,逻辑运算多 ) 语法接近自然语言 (英语 ),成文自明。 遵循 ISO标准,通用性强,移植方便。 格式固定,结构严谨,层次分明。 缺点是比较繁琐。 Intouch 一 .COBOL概述 3. COBOL程序的基本结构 标识部( IDENTIFICATION DIVISION) 用来标识程序名称,记录程序的文档记录信息如作者和日期等。 环境部( ENVIRONMENT D

4、IVISION) 用来描述程序运行和编译的计算机环境,内部数据文件与系统设备的对应关系。 数据部( DATA DIVISION) 定义程序中所有数据的类型和所占内存的大小。 过程部:( PROCEDURE DIVISION) 编写程序要执行的语句,是程序的核心。 Intouch 一 .COBOL概述 4. COBOL程序结构示意图 cobol 标识部 过程部 数据部 环境部 段 节 段 句子 节 描述体 句子 节 段 句子 Intouch 一 .COBOL概述 4. COBOL程序结构示意图 部下设置节,节下设置段或描述体,段下或节下包含句子。 节是由一个或多个段组成的,节的定义从节名开始到下

5、一个节名或文本结束为止。 定义格式:节名 SECTION.(节名分为系统定义和用户自定义两种) 段由一个或多个句子组成,段的定义从段名开始到下一个段名或文本结束为止。 定义格式:段名 . (段名 +点号)(段名分为系统定义和用户自定义两种) 文件描述体只能在 数据部 中定义,用于描述外部文件的属性及其记录的格式。 定义格式: FD 文件名 .(文件描述体用 FD( File Description)语句定义) 句子是完整的指令,用相应的动词表示其操作,以一个句号加一个以上的空格来结束。 Intouch 一 .COBOL概述 5. COBOL程序的书写区域 标准 COBOL程序每行 80列,被分

6、为五个区域 第 01 06列为 “标号区” 标号是 6位数字,应从小到大,但不一定连续,标号只是方便查阅程序,可以省略。 第 07列为 “注释区”,“ DEBUG标识区” “ *“:表示本行是注释行,用于注释程序说明。 “ D :表示本行是 DEBUG行,用于程序调试。 第 08 11列为 “ A区” 程序中下列语句必须从该区开始书写: 部名、节名、段名,描述符 (FD), 01和 77层 。 第 12 72列为 “ B区” 程序正文部分,过程部语句必须从该区开始书写。 第 73 80列为 “注释区” 行注释区,写入此区的内容在编译时被忽略,(一般不推荐使用) Intouch 一 .COBOL

7、概述 6. COBOL程序的书写格式 大小写字母等价,但引号中的字符除外。 如: MOVE A TO B = MOVE a TO b DISPLAY HELLO DISPLAY hello 相邻的两个 COBOL字之间有一个以上的空格。 运算符和等号左右必须各有一个以上的空格;圆括号外侧必须有一个以上的空格,内侧 不必。如: COMPUTE R = A ( B + C ) / D 逗号,句号,分号左边不能有空格,而右边应有。 如: DISPLAY A= , A Intouch 一 .COBOL概述 7. COBOL的字符 COBOL字符集包括:数字 0 - 9 ,字母 A - Z , a -

8、z , 15个专用符号: + - * / = ,(逗号 ) .(句号 ) ;(分号 ) (引号 ) $ ( ) 空格。属于系统字符集而不属于 COBOL字符集的字符,只能出现在 COBOL程序的字符串或注释行中。如: DISPLAY #HELLO# COBOL字是由上述字符组成的最小单位。(保留字 ,用户字) 保留字:规定五种类型专门用途的字 (300多个 ) 键字:如: MOVE , ADD 等 可选字:如: USAGE IS 等 专用字符:如运算符: + - * / 等 ;比较符 = 等 表意常量:如: ZERO/ZEROS/ZEROES; SPACE/SPACES; QUOTE/QUOT

9、ES; HIGH- VALUE/HIGH-VALUES; LOW-VALUE/LOW-VALUES; ALL; NULL/NULLS 专用寄存器:如: LENGTH OF; RETURN-CODE等 用户字:用户自定义的名字。 如:程序名,文件名,节名,段名,数据名等 Intouch 一 .COBOL概述 7. COBOL的字符 数据名:相当于其它语言中的变量名,它代表一个具体的数据项。 只能由字母 (至少一个 ),数字和连字符“ -组成,连字符不能出现在两端,不能包含空格 数据名长度不能超过 30个字符 (lengthB DIVIDE A INTO B GIVING C 是指 B/A-C D

10、IVIDE A BY B GIVING C 是指 A/B-C Intouch 五 .过程部( PROCEDURE DIVISION) 7. 算数运算语句 COMPUTE语句 :综合算数运算语句,使用算数表达式完成计算 一般格式: COMPUTE 标示符 1,标示符 2 = 算数表达式 运算符优先级由高到低顺序为:()、正负号、 *、 * 或 / 、 + 或 例如: C = 3 , D = 5 , E = 2 , F = 1 COMPUTE A, B = -( C + D) * 2 / E * 3 F C 则: A = -3、 B = -3 ROUNDED语句 :四舍五入。用于 带有小数点的十进

11、制数运算 。当计算结对小数点最右边的数字 需要截断时进行四舍五入处理。 例如: A,B,C均定义为 9V9 COMPUTE A ROUNDED = B * C BEFORE 1.0 1.2 1.8 AFTER 2.2 1.2 1.8 /2.16 Intouch 五 .过程部( PROCEDURE DIVISION) 7. 算数运算语句 ON SIZE ERROR语句 :长度溢出判断。十进制数运算时,计算结果比数据项的长度要长,则被 称为长度溢出。当发生溢出错误时,按程序设计者事先指定的操作处理。 例如: A,B,C均定义为 9V9 COMPUTE A = B * C ON SIZE ERROR

12、 DISPLAY SIZE ERROR STOP RUN. DISPLAY A. 如 A,B,C均定义为 9V9,B=1.2、 C=9.0则 A B*C,应该为 10.8,此时发生长度溢出。 当 ROUNDED 与 ON SIZE ERROR 一起使用时,先按 ROUNDED 作四舍五入处理,再判断 是否溢出。 REMAINDER语句 :用于除法语句( DIVIDE)求余数。 例如: A、 B、 C、 D均定义为 9(02)V9 DIVIDE A INTO B GIVING C REMAINDER D BEFORE 3 10 0 0 AFTER 3 10 3.3 0.1 商和余数的值不仅取决于

13、除数和被除数,还取决于数据部中对商和余数的描述 如用 ROUNDED语句,它只对商起作用,余数不作四舍五入处理 长度溢出也只检查商的值是否溢出,而不检查余数 Intouch 五 .过程部( PROCEDURE DIVISION) 8. 字符串语句: STRING、 UNSTRING、 INSPECT STRING语句: 用来将多个非数值型数据项的值连接后发送到一个接收数据项中,在合并过程中 可以删除某些指定的字符。 一般格式: STRING str1 DELIMITED BY symbol1 str2 DELIMITED BY symbol2 INTO strn WITH POINTER po

14、sition1 ON OVERFLOW perform . END-STRING DELIMITED BY SIZE:按发送项的长度全部传送到接收项 77 A PIC X(04) VALUE ABC. 77 B PIC X(04) VALUE JKL. 77 C PIC X(04) VALUE XYZ. 77 D PIC X(16) VALUE *. STRING A, B, C DELIMITED BY SIZE INTO D. / D=ABC_JKL_XYZ_* DELIMITED BY SPACE:将发送项空格之前的字符串传送到接收项 STRING A, B, C DELIMITED B

15、Y SPACE INTO D / D=ABCJKLXYZ* (末尾七个 *) Intouch 五 .过程部( PROCEDURE DIVISION) 8. 字符串语句: STRING、 UNSTRING、 INSPECT STRING语句: DELIMITED BY 字符常量:使用其它字符作为定界符,各个发送项可以使用不同的定界符 STRING A DELIMITED BY B B DELIMITED BY L C DELIMITED BY M INTO D. / D=AJKXYZ_* (末尾 9个 *) 可以在传送中插入所需字符 STRING A, *, B, =, C DELIMITED

16、BY SPACE INTO D / D=ABC*JKL=XYZ* (末尾五个 *) POINTER:如果不想从接收项的最左端开始接收字符,可以使用 POINTER短语指定从某一字 符位开始接收字符 MOVE 3 TO P. STRING A, B, C DELIMITED BY SPACE WITH POINTER P INTO D. / D=*ABCJKLXYZ* (头部两个,末尾五个 *) Intouch 五 .过程部( PROCEDURE DIVISION) 8. 字符串语句: STRING、 UNSTRING、 INSPECT STRING语句: ON OVERFLOW :如果接收项的

17、字符个数不足,则发生“溢出”,可以进行溢出处理 77 D PIC X(10) STRING A, B, C DELIMITED BY SIZE INTO D ON OVERFLOW DISPLAY OVER FLOW. / D=ABC_JKL_XY OVER FLOW 注意: 接收数据项必须是初等项 指针项必须是一个整型的初等项 STRING语句结束后,接收项中未送入的字符位置上保持原有内容,而不是自动设置空格 Intouch 五 .过程部( PROCEDURE DIVISION) 8. 字符串语句: STRING、 UNSTRING、 INSPECT UNSTRING语句: 将一个发送字符串

18、拆成若干个接收字符串,是 STRING语句的逆操作 可以使用 DELIMITED子句设置分解时的定界符。自左向右累计字符,直到遇见定界符,符号 左面的内容按 MOVE语句的规则传送到接收项。 77 A PIC X(23) VALUE DATE PRODUCT QUANTITY. 77 B PIC X(5). 77 C PIC X(8). 77 D PIC X(8). UNSTRING A DELIMITED BY SPACE INTO B, C, D / B=DATE_、 C=PRODUCT_、 D=QUANTITY UNSTRING A DELIMITED BY T INTO B, C, D

19、 / B=DA_ 、 C=E_PRODUC、 D=_QUAN_ Intouch 五 .过程部( PROCEDURE DIVISION) 8. 字符串语句: STRING、 UNSTRING、 INSPECT INSPECT语句: 检查一个字符串数据项中某个字符 INSPECT TALLYING:统计字符串出现的次数 INSPECT A TALLYING N FOR SPACE. 检查数据项 A中是否有空格,找到一个就将计数器 N加 1 INSPECT REPLACING :用别的字符串替换该字符串 INSPECT A REPLACING SPACE BY ,. 将数据项 A中所有空格替换成逗号

20、 INSPECT TALLYING REPLACING :替换并统计字符串的次数 INSPECT A TALLYING N FOR ALL SPACE REPLACING ALL SPACE BY ,. 检查数据项 A中空格的个数,并将数据项 A中所有空格替换成逗号 Intouch 五 .过程部( PROCEDURE DIVISION) 9. IF语句: 条件转移语句。根据给出的判断条件是否满足,来决定执行哪一部分语句 一般格式: IF 条件 语句组 1 ELSE 语句组 2 END-IF. 关系运算符: IS GREATER THAN IS LESS THAN IS NOT LESS THA

21、N NOT = IS LESS THAN OR EQUAL TO = Intouch 五 .过程部( PROCEDURE DIVISION) 9. IF语句: 条件转移语句。根据给出的判断条件是否满足,来决定执行哪一部分语句 关系运算规则: 数值变量之间按其代数值进行比较 3-200 字母型数据之间字典序进行比较 xcap ccobol 字符型数据之间按其编码规则进行比较 ASCII编码: 1 A 在条件判断表达式中,只能将同类型的数据进行比较,即数值型数据和数值型数据比较,字 符型数据和字符型数据比较。 IF结构中 .的用法 IF A0 DISPLAY A - ADD A TO TOTA -

22、 END-IF DISPLAY TOTAL. IF A0 DISPLAY A. - ADD A TO TOTAL. - DISPLAY TOTAL. Intouch 五 .过程部( PROCEDURE DIVISION) 9. IF语句: 条件转移语句。根据给出的判断条件是否满足,来决定执行哪一部分语句 复合条件:由若干个简单的“条件”组合而成的条件,使用逻辑运算符 AND(与 ), OR(或 ),如果 在一个 IF语句中同时用到 AND,OR,其优先级是: AND OR IF ( A1000 AND A 0 类型条件:检查数据项的类型是否符合指定的要求,即数据项的内容是否全为数字或字母 IF

23、 数据名 IS NOT NUMERIC | ALPHABETIC | ALPHABETIC-LOWER | ALPHABETIC-UPPER 77 T PIC A(4) VALUE WANG. IF T IS ALPHABETIC /true Intouch 五 .过程部( PROCEDURE DIVISION) 9. IF语句: 条件转移语句。根据给出的判断条件是否满足,来决定执行哪一部分语句 条件名条件:简单的说,条件名就是用一个数据名代表一个条件 例如:为鼓励存款,存款数小于 1000元,利息为 2%; 大于等于 1000元但小于 10000元,利息为 3%; 大于等于 10000元但小

24、于 50000元,利息为 4%; 大于等于 50000元但小于 100000元,利息为 5% 在数据部中可以这样定义: 77 CK PIC 9(05). 88 T1 VALUE 0 THRU 999. 88 T2 VALUE 1000 THRU 9999. 88 T3 VALUE 10000 THRU 49999. 88 T4 VALUE 50000 THRU 99999. CK是条件变量,定义为数值变化的范围 T1T4是条件名,紧跟在条件变量之后,必须用层号 88定义 VULUE子句的作用不是赋初值,而是为条件变量的一个可能值命名 对于 “ 88 T1 VALUE 0 THRU 999 应理

25、解为:当 CK的值在 0999时,条件 T1为“真”在过程部 可以直接使用条件名条件: IF T1 MOVE 0.02 TO RATE. IF ( CK = 0 AND CK 10. PERFORM 过程名 1 VARYING 标识符 1 FROM 初值 (整数 /标示符 ) BY 步长 (整数 /标示符 ) UNTIL 条件 PERFORM TEST-RTN VARYING T1 FROM 1 BY 1 UNTIL T1 10. 循环变量 T1的初值可以为正,负或零;步长不能为零! 循环变量 T1的值在每次循环中自动按步长增加 Intouch 五 .过程部( PROCEDURE DIVISI

26、ON) 11. PERFORM语句: 作为执行语句和实现循环控制语句 PERFORM语句可以实现多重循环 一般格式: PERFORM 段名 1 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 PERFORM T VARYING X FROM 1 BY 1 UNTIL X 9 AFTER Y FROM 1 BY 1 UNTIL Y X PERFORM 语句的六种形式: PERFORM

27、 T1 PERFORM T1 N TIMES PERFORM T1 UNTIL N10 PERFORM T1 VARYING X FROM 1 BY 2 UNTIL X10 PERFORM T1 VARYING X FORM 1 BY 1 UNTIL X10 AFTER Y FROM 1 BY 2 UNTIL Y8 Intouch 五 .过程部( PROCEDURE DIVISION) 12. EXIT语句: 提供一组过程的公共出口,或者说它指出了被调用过程的逻辑终点,一般用作 PERFORM语 句序列的出口。 EXIT语句必须是段中唯一的语句,前面必须有段名。 13. CONTINUE语句:

28、 用来指定一个空操作,即什么也不做,用来占位置。程序将顺序执行到 CONTINUE 语句的下一条语句。 14. GO TO语句: 用来改变程序的执行顺序,程序执行到此将无条件转移到指定的标号(段名 /节名) 一般格式: GO TO 标号 由于打乱了原来程序正常的执行顺序,降低了程序的可读性,因此, 严禁使用 。 15. CALL语句: 调用子程序 子程序概述: PERFORM语句只能在同一程序中多次调用某一语句序列,如果被调用部分较复杂或需要被其他程 序使用时,可以将其编写为单独的一个程序,即子程序,调用子程序的为主程序。 使用子程序的优点: 简化主程序,使程序结构清晰 子程序功能单一,易于编

29、写和调试,减少错误 可由多人完成不同子程序,从而完成复杂任务 只需重编译修改的子程序,而不必对所有源程序编译 子程序可以重用,减少重复劳动 Intouch 五 .过程部( PROCEDURE DIVISION) 15. CALL语句: 调用简例: 主程序 子程序 st001.cobol.source(MAINPG) st001.cobol.source(SUBPG) IDENTIFICATION DIVISION. IDENTIFICATION DIVISION. PROGRAM-ID. MAINPG. PROGRAM-ID. SUBPG. DATA DIVISION. DATA DIVISI

30、ON. WORKING-STORAGE SECTION. LINKAGE SECTION. 01 PARM-IN-DATA. 01 LNK-IN-DATA. 02 LEN PIC S9(2) COMP. 03 LEN PIC S9(2) COMP. 02 PARTNO PIC X(5).XABCD 03 PART-ID PIC X(5). 02 SALES PIC 9(5).12345 03 SALES PIC 9(5). 01 PARM-OUT-DATA PIC 9(18). 01 LNK-OUT-DATA PIC 9(18) PROCEDURE DIVISON. PROCEDURE DIV

31、ISION USING LNK-IN-DATA LNK-OUT-DATA. CALL SUBPG USING PARM-IN-DATA PARM-OUT-DATA DISPLAY PART-ID. ADD 10 TO SALES. STOP RUN. GO BACK. Intouch 五 .过程部( PROCEDURE DIVISION) 15. CALL语句: 说明: 为主程序和各个子程序起有意义的 program-id,便于区分 主程序使用 CALL语句按 program-id而不是数据集名调用子程序,注意要使用引号 主程序使用 CALL USING 子句传递参数 子程序 LINKAGE节

32、中定义用来接受主程序传递的参数,可以是初等项,或组合项 参数的数据结构可以不同,但长度必须相同 子程序参数不能使用 VALUE子句赋初值 子程序在过程部头之后使用 USING接受主程序的参数,参数个数必须和 CALL语句中 USING子句参数个数相同 在执行时遇到 GOBACK语句,子程序运行完了,主程序继续运行 CALL之后的语句 16. GOBACK语句: 返回语句。停止运行,将控制权返回给上一级。子程序必须用 GOBACK,而 不能用 STOP,因为 STOP停止的是一个 RUN UNIT(运行单元)。 17. STOP RUN语句: 停止语句。 STOP RUN在逻辑上应该是程序的最后

33、一个语句。 STOP RUN 执行后,程序停止运行,停止后不能再接着运行,如需要,可重新运行一次。主程序一般通过 STOP RUN语句结束运行单元。 Intouch 六 .VSAM文件 ( Virtual Storage Access Method) 1. 什么是 VSAM 2. VSAM的组织形式和存取方法 3. VSAM文件在环境部 4. VSAM文件在数据部 5. VSAM文件在过程部 6. VSAM文件的建立 Intouch 六 .VSAM文件 ( Virtual Storage Access Method) 1. 什么是 VSAM VSAM是一种虚拟存取方法,它是为了与直接存取存储设

34、备 DASD(Direct Access Storage Device-能够在文件上直接地存取任何记录的设备 )一起使用而研制的文件管理系统。是大 型机上另外一种数据存方法,与 PS和 PDS最大的差别在于, VSAM是支持索引 (index)的, 而 PS和 PDS都是顺序查找的。 VSAM的组织形式和存取方法 文件的组织形式 : 是指数据记录在文件中的排列方式。 文件的存取方法 : 是指从文件中找到数据记录的方法。 组 织 形 式 存取方法 进入顺序数据组织 Entry Sequential Organization 进入顺序数据集 ESDS Entry Sequenced Data Se

35、t 键顺序数据组织 Indexed Sequential Organization 键顺序数据集 KSDS Key Sequenced Data Set 相对记录数据组织 Relative Organization 相对记录数据集 RRDS Relative Record Data Set Intouch 六 .VSAM文件 ( Virtual Storage Access Method) 2. VSAM的组织形式和存取方法 ESDS进入顺序数据集 记录以进入数据集的顺序排列,新加入的记录排数据集的末尾。可以按照排列顺序进行存取,也可 以指定记录的相对字节地址对特定记录进行存取。 KSDS键字

36、顺序数据集 记录由索引部分和数据部分组成,索引部分包含树型结构的多级索引。数据部分内的记录按键值顺 序排列。可以按键值进行顺序存取,也可利用索引,根据键值进行直接存取。 RRDS相对记录数据集 文件空间被划分成若干逻辑框,每个逻辑框只存放一个记录,从第一个逻辑框开始赋予连续的记录 号,记录以其相对记录号顺序存放,访问也是通过相对记录号来进行访问。 Intouch 六 .VSAM文件 ( Virtual Storage Access Method) 3. VSAM文件在环境部 ESDS进入顺序数据集 SELECT 内部文件名 ASSIGN TO AS-外部文件名 . ORGANIZATION I

37、S SEQUENTIAL. ACCESS MODE IS SEQUENTIAL. FILE STATUS IS 变量名 . KSDS键字顺序数据集 SELECT 内部文件名 ASSIGN TO 外部文件名 . ORGANIZATION IS INDEXED. RECORD KEY IS 变量名 . ACCESS MODE IS (SEQUENCIAL, RANDOM, DYNAMIC). FILE STATUS IS 变量名 . RECORD KEY用于指定文件中 KEY在程序中的名称。 RRDS相对记录数据集 SELECT 内部文件名 ASSIGN TO 外部文件名 . ORGANIZATI

38、ON IS RELATIVE. RELATIVE KEY IS 变量名 . ACCESS MODE IS (SEQUENCIAL, RANDOM, DYNAMIC). FILE STATUS IS 变量名 . FILE STATUS用于指定文件状态返回码在程序中的名称。 Intouch 六 .VSAM文件 ( Virtual Storage Access Method) 4. VSAM文件在数据部 VSAM文件的描述与一般的 PS文件类似,如果为 KSDS文件,需要在记录中指定 REORD-KEY数据 项,即在环境部中定义的 RECORD KEY的变量名。 如:外部文件 STUDENTFILE

39、 101LILEI_19900521 102HANMEIMEI_19910610 环境部定义如下: ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-FILLE ASSIGN TO STUDENTFILE. ORGANIZATION IS INDEXED. RECORD KEY IS STUD-ID. 数据部定义如下: FD IN-FILE. 01 STUDENT-RECORD. 05 STUD-ID PIC 9(03). 05 STUD-NAME PIC X(20). 05 STUD-BIRTH. 10 B

40、IRTH-YYYY PIC 9(04). 10 BIRTH-MM PIC 9(02). 10 BIRTH-DD PIC 9(02). Intouch 六 .VSAM文件 ( Virtual Storage Access Method) 5. VSAM文件在过程部 VSAM文件的操作与一般的 PS文件类似,如果为 KSDS文件,在读取记录时,可顺序读取还可以通 过指定 KEY值来读取特定的记录,或符合指定 KEY值范围的一组记录。在写入 KSDS文件时要注意, KEY值一定要唯一,否则会出错。 如:外部文件 STUDENTFILE 101LILEI_19900521 102HANMEIMEI_1

41、9910610 103LUCI_19910520 环境部定义如下: ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-FILLE ASSIGN TO STUDENTFILE. ORGANIZATION IS INDEXED. RECORD KEY IS STUD-ID. 数据部定义如下: FD IN-FILE. 01 STUDENT-RECORD. 05 STUD-ID PIC 9(03). 05 STUD-NAME PIC X(20). 05 STUD-BIRTH. 10 BIRTH-YYYY PIC 9(

42、04). 10 BIRTH-MM PIC 9(02). 10 BIRTH-DD PIC 9(02). Intouch 六 .VSAM文件 ( Virtual Storage Access Method) 5. VSAM文件在过程部 顺序读取记录: ACCESS MODE S PROCEDURE DIVISION. OPEN INPUT IN-FILE. READ IN-FILE. /101LILEI_19900521 READ IN-FILE. /102HANMEIMEI_19910610 READ IN-FILE. /103LUCI_19910520 CLOSE IN-FILE. 指定 KE

43、Y值读取记录: ACCESS MODE R PROCEDURE DIVISION. OPEN INPUT IN-FILE. MOVE 101 TO STUD-ID. READ IN-FILE. /101LILEI_19900521 MOVE 102 TO STUD-ID READ IN-FILE. /102HANMEIMEI_19910610 CLOSE IN-FILE. 指定 KEY值范围,顺序读取在 KEY值范围内的一组记录: ACCESS MODE D PROCEDURE DIVISION. OPEN INPUT IN-FILE. MOVE 101 TO STUD-ID. START I

44、N-FILE KEY IS STUD-ID. READ IN-FILE NEXT. /102HANMEIMEI_19910610 READ IN-FILE NEXT. /103LUCI_19910520 CLOSE IN-FILE. Intouch 六 .VSAM文件 ( Virtual Storage Access Method) 6. VSAM文件的建立 Intouch 七 .各部之间的关系 IDENTIFICATION DIVISION. PROGRAM-ID. PROGRAM1. 给程序加上标识以便识别 ENVIRONMENT DIVISION. CONFIGRATION SECTIO

45、N. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT PRODFILE ASSIGN TO FILE1. 描述程序中用到的文件与外部文件的 关系及控制信息 DATA DIVISION. FILE SECTION. FD PRODFILE LABEL RECORD IS STANDARD. 01 PROD-REC PIC X(200). WORKING-STORAGE SECTION. 01 WS-VARIBALES. 05 WS-I PIC 9(02). 描述程序中用到的所有文件及其记录中各 数据项的属性及程序中用到的所有中间数 据项的描述 . Intou

46、ch 七 .各部之间的关系 PROCEDURE DIVISION. MAIN-RTN SECTION. PERFORM 处理节 3-RTN PERFORM 处理节 2-RTN PERFORM 处理节 1-RTN. MAIN-EXT. STOP RUN. 处理节 1-RTN SECTION. 语句序列 1 语句序列 N. 处理节 1-EXT. EXIT. 程序的核心部分 ,他决定计算机进行什么操 作 .如 ,文件的读写及其他处理 Intouch 七 .各部之间的关系 PROCEDURE DIVISION. ABEND-RTN SECTION. 语句序列 1 语句序列 N. ABEND-EXT.

47、GOBACK. 程序出错时处理。 1. 输出程序出错信息 2. 为 RETURN-CODE赋值 3. 关闭文件 4. GOBACK 语句 Intouch 八 .程序举例 1.例 1 读入一组产品销售记录 ,每读入一个记录 ,计算出销售总额 (数量 X单价 ).然后输出该产品的全部数据 .数据 形式如下: 1 9 9 2 1 2 3 1 0 0 0 0 0 1 A A A A 0 1 0 0 5 0 0 0 1 9 9 3 1 2 3 1 1 0 0 0 0 1 B B B B 0 2 0 0 6 0 0 0 - - - - - DATE PRODCODE CUST AMT PRICE 程序如下

48、: IDENTIFICATION DIVISION. PROGRAM-ID. PEXAM1. ENVIRONMENT DIVISION. CONFIGRATION SECTION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INPUT-FILE ASSIGN TO FILE1 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-INPUT-FILE-STATUS. Intouch 八 .程序举例 SELECT OUTPUT-FILE ASSIGN TO FILE

49、2 ORGANIZATION IS SEQUENCIAL ACCESS MODE IS SEQUENCIAL FILE STATUS IS WS-OUTPUT-FILE-STATUS. DATA DIVISION. FILLE SECTION. FD INPUT-FILE. 01 IN-REC. 05 DATE PIC 9(8). 05 PROD-CODE PIC 9(6). 05 CUSTOMER-CODE PIC X(4). 05 QUANTITY PIC 9(4). 05 UNIT-PRICE PIC 9(4). FD OUTPUT-FILE. 01 OUT-REC. 05 DATE P

50、IC 9999B99B99. 05 FILLER PIC X(5) 05 PROD-CODE PIC 9(6). 05 FILLER PIC X(5). Intouch 八 .程序举例 05 CUSTOMER-CODE PIC X(4). 05 FILLER PIC X(5). 05 QUANTITY PIC ZZZ9. 05 FILLER PIC X(5). 05 UNIT-PRICE PIC $(5). 05 FILLER PIC X(5). 05 SALES-VALUE PIC $(9). WORKING-STORAGE SECTION. 01 WS-VARIBLES. 05 WS-IN

51、PUT-FILE-STATUS PIC 9(2). 05 WS-OUTPUT-FILE-STATUS PIC 9(2). PROCEDURE DIVISION. A000-MAIN SECTION. PERFORM A100-OPEN-FILES PERFORM R000-READ-FILE PERFORM A200-PROCESS-RECORD UNTIL WS-INPUT-FILE-STATUS = 10 PERFORM A300-CLOSE-FILES. A000-EXIT. STOP RUN. Intouch 八 .程序举例 A100-OPEN-FILES SECTION. OPEN

52、INPUT INPUT-FILE OUTPUT OUTPUT-FILE. IF WS-INPUT-FILE-STATUS NOT= 0 DISPLAY INPUT-FILE OPEN NOT SUCCESSFUL PERFORM Z000-ABEND END-IF IF WS-OUTPUT-FILE-STATUS NOT= 0 DISPLAY OUTPUT-FILE OPEN NOT SUCCESSFUL PERFORM Z000-ABEND END-IF. A100-OPEN-FILES-EXT. EXIT. A200-PROCESS-RECORD SECTION. MOVE CORR IN

53、-REC TO OUT-REC COMPUTE SALES-VALUE = QUANTITY OF IN-REC * UNIT-PRICE OF IN-REC PERFORM W000-WRITE-FILE PERFORM R000-READ-FILE. A200-PROCESS-RECORD-EXT. EXIT. A300-CLOSE-FILE SECTION. CLOSE INPUT-FILE OUTPUT-FILE. A300-CLOSE-FILE-EXT. EXIT. Intouch 八 .程序举例 R000-READ-FILE SECTION. READ INPUT-FILE IF

54、( WS-INPUT-FILE-STATUS NOT= 0 AND WS-INPUT-FILE-STATUS NOT= 10) DISPLAY INPUT-FILE READ NOT SUCCESSFUL PERFORM Z000-ABEND END-IF. R000-READ-FILE-EXT. EXIT. W000-WRITE-FILE SECTION. WRITE OUT-REC IF WS-OUTPUT-FILE-STATUS NOT= 0 DISPLAY OUTPUT-FILE WRITE NOT SUCCESSFUL PERFORM Z000-ABEND END-IF. W000-

55、WRITE-FILE-EXT. EXIT. Z000-ABEND SECTION. DISPLAY PROGRAM ABEND ! PERFORM A300-CLOSE-FILES MOVE 16 TO RETURN-CODE. Z000-ABEND-EXT. GOBACK. 输出的数据形式如下 : 1992 12 31 000001 AAAA 100 $5000 $500000 1993 12 31 100001 BBBB 200 $6000 $1200000 Intouch 八 .程序举例 2.例 2 Program : INVI300 Update inventory file (ran

56、dom) File Description Use VALTRAN Valid inventory transaction file Input INVMAST Inventory master file Update ERRTRAN Unmatched inventory transaction file Output Process specifications This program updates an inventory master file (INVMAST) based on the data in a sequential file of valid inventory t

57、ransaction records (VALTRAN). The inventory master file is indexed by item number and updated randomly. If the program finds a master record with the same item number as a transaction, it uses the transaction data to update the master record . It does this by increasing the on hand quantity in the m

58、aster record by thereceipt quantity in the transaction record. If the program cannot find a master record for a transaction, it writes the transaction record on the file of error transactions (ERRTRAN). The record format for ERRTRAN is same as for VALTRAN. The basic processing requirements are: 1. R

59、ead a transaction record. 2. Read the master record with the same item number as in the transaction record. 3. If the master record is found , update and rewrite the matching master record. 4. If the transaction is not found , write the transaction record on the file of error transactions. Intouch 八

60、 .程序举例 程序如下: IDENTIFICATION DIVISION. PROGRAM-ID. INV1300. ENVIRONENT DIVISON. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT VALTRAN ASSIGN TO SYS020-AS-VALTRAN. SELECT INVMAST ASSIGN TO SYS021-INVMAT ORGANIZATION IS INDEXED ACCESS IS RANDOM RECORD KEY IS MR-ITEM-NO FILE STATUS IS INVMAST-ERROR-CODE. SELECT ERRTRAN ASSIGN TO SYS022-AS-ERRTRAN. DATA

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!