欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    第3章常用语句.docx

    • 资源ID:30654041       资源大小:37.94KB        全文页数:26页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第3章常用语句.docx

    1、第3章 常用语句第3章 常用语句COBOL程序的源代码主要是由各条具有一定功能的COBOL语句所组成的。在全体COBOL语句中,其中有几条属于常用的COBOL语句。这几条常用语句将贯穿于COBOL的各部分具体应用之中,因此本章首先对其进行讲解。3.1 MOVE语句MOVE语句可以说是整个COBOL程序中最常用到的语句。通过MOVE语句的复制操作,可以实现变量赋值、参数传递等多项类似的功能。同时,MOVE语句既可对单个数据项进行复制,也可对一组数据进行复制。下面分别予以讲解。3.1.1 复制单个数据项复制单个数据项是MOVE语句最基本的操作。当复制单个数据项时,直接将源数据项名称放在前面,将目标

    2、数据项名称放在后面。两者之间通过“TO”进行连接。例如,假设某程序中所定义的各项数据如下。01 IN-STATUS PIC X(5). 01 IN-GRP. 05 IN-DATA1 PIC X(4). 05 IN-DATA2 PIC 9(3). 01 OUT-STATUS PIC X(5). 01 OUT-GRP. 05 OUT-DATA1 PIC X(4). 05 OUT-DATA2 PIC 9(3).将以上数据作为示例数据,下面为通过MOVE语句对其中部分数据进行赋值的代码。MOVE READY TO IN-STATUS. MOVE TEST TO IN-DATA1.MOVE 0 TO I

    3、N-DATA2.MOVE SPACES TO OUT-STATUS OUT-DATA1.MOVE ZERO TO OUT-DATA2.以下代码则通过MOVE语句实现了各变量之间的数据复制操作。MOVE IN-STATUS TO OUT-STATUS.MOVE IN-DATA1 TO OUT-DATA1.MOVE IN-DATA2 TO OUT-DATA2.此外需要注意的是,当进行复制操作的两个数据项名称相同时,需要指定各数据项所在的数据组名。数据组名即各数据项所在的01级数据名。例如,假设在某程序中定义有以下数据。01 SRC-GRP.05 TEST-DATA1 PIC XX.05 TEST-

    4、DATA2 PIC 9.01 DES-GRP. 05 TEST-DATA1 PIC XX. 05 TEST-DATA2 PIC 9.此处需要将SRC-GRP所包含的的两个数据项中的内容分别复制到DES-GRP下的两数据项中。注意到这两组数据项的名称分别对应相同,因此完成此项操作需要通过如下代码进行。MOVE TEST-DATA1 IN SRC-GRP TO TEST-DATA1 IN DES-GRP.MOVE TEST-DATA2 IN SRC-GRP TO TEST-DATA2 IN DES-GRP.3.1.2 复制不同类型和长度的单个数据项当复制单个数据项时,源数据项和目标数据项的类型和长

    5、度也可不同。其中关于数据项的类型,在通常情况下,有以下两条规律。 任何类型的数据都可复制到字符型数据变量中。 数值型数据可复制到任何类型的数据变量中。此处只需关注MOVE语句的用法,关于数据类型,将在下一章中详细讲解。以下代码反映了通过MOVE语句复制不同类型数据项的情况。IDENTIFICATION DIVISION.PROGRAM-ID. DIFFER-TYPE.AUTHER. XXX.*ENVIRONMENT DIVISION.*DATA DIVISION.WORKING-STORAGE SECTION.01 CHAR-DATA PIC X(5). 01 INT-DATA PIC 9(5

    6、).01 EDIT-DATA PIC $999. *PROCEDURE DIVISION. MOVE INT-DATA TO CHAR-DATA. MOVE EDIT-DATA TO CHAR-DATA. MOVE INT-DATA TO EDIT-DATA. STOP RUN.关于数据项的长度,对于不同的数据类型而言情况是不同的。当所复制的对象为字符型数据时,将按照从左至右的顺序依次对逐个字符进行复制。此时,当源数据项和目标数据项的长度不一致时,将分以下两种情况进行处理。 如果目标数据项的长度大于源数据项内容的长度,则在目标数据项的右边以空格填充。 如果目标数据项的长度小于源数据项内容的长度

    7、,则对右边超出的部分进行截断。以下代码反映了通过MOVE语句复制不同长度字符型数据项的情况。IDENTIFICATION DIVISION.PROGRAM-ID. DIFFER-LEN1.AUTHER. XXX.*ENVIRONMENT DIVISION.*DATA DIVISION.WORKING-STORAGE SECTION.01 SOURCE-CHAR PIC X(5). 01 SHORT-CHAR PIC X(3).01 LONG-CHAR PIC X(7). *PROCEDURE DIVISION. MOVE ABCDE TO SOURCE-CHAR. MOVE SOURCE-CH

    8、AR TO SHORT-CHAR. MOVE SOURCE-CHAR TO LONG-DATA. STOP RUN.则以上代码执行后,其中的各项数据内容将如下。SOURCE-CHAR: ABCDESHORT-CHAR: ABC LONG-CHAR: ABCDE_ _ /*此处下划线代表空格*/当所复制的对象为数值型数据时,将根据其实际所代表的数值进行复制。此时,当源数据项和目标数据项的长度不一致时,将分以下几种情况进行处理。 如果目标数据项的长度大于源数据项内容的长度,则在目标数据项的高位以0填充。 如果目标数据项的长度小于源数据项内容的长度,则对高位超出的部分进行截断。 如果数值含有小数部分

    9、,则需要将其作为浮点数进行相应处理。以下代码反映了通过MOVE语句复制不同长度数值型数据项的情况。IDENTIFICATION DIVISION.PROGRAM-ID. DIFFER-LEN2.AUTHER. XXX.*ENVIRONMENT DIVISION.*DATA DIVISION.WORKING-STORAGE SECTION.01 SOURCE-NUM PIC 9(5). 01 SHORT-NUM PIC 9(3).01 LONG-NUM PIC 9(7).01 FLOAT-NUM PIC 9(3)V99.01 FLOAT-NUM01 PIC 9(5)V9(3).01 FLOAT-

    10、NUM02 PIC 99V9. *PROCEDURE DIVISION. MOVE 12345 TO SOURCE-NUM. MOVE SOURCE-NUM TO SHORT-NUM. MOVE SOURCE-NUM TO LONG-NUM. MOVE SOURCE-NUM TO FLOAT-NUM. MOVE 123.45 TO FLOAT-NUM01. MOVE 123.45 TO FLOAT-NUM02. STOP RUN.则以上代码执行后,其中的各项数据内容将如下。SOURCE-NUM: 12345SHORT-NUM: 345 LONG-NUM: 0012345 FLOAT-NUM:

    11、34500 /*此处“”符号表示虚拟小数点位置*/FLOAT-NUM01: 00123450FLOAT-NUM02: 23.43.1.3 复制一组数据通过MOVE语句也可对一组数据进行复制。当对一组数据进行复制时,MOVE语句中的两个变量分别为数据组的名称,即01层数据项的名称。这两个01层数据项下所有同名的组内数据项将实现复制。对于一组数据的复制,主要有以下几点需要注意。 所复制的组内数据项必须同名,不同名的数据项将不被复制。 如果数据项在分组中,则分组名称也必须相同。 数据项在组内的顺序可以任意。 以FILLER命名的数据项将不被复制。例如,以下为在COBOL数据部中定义的两组数据。为针对

    12、所讨论的问题,此处只给出数据层级和名称,而暂不考虑通过PIC语句定义的数据类型和长度。这两组数据分别如下。01 IN-RECORD. /*以下为定义的第一组数据*/05 COURSE-INFO. 10 COR-NO. 10 COR-NAME. 10 COR-FEE.05 COURSE-LIST. 10 C-COBOL. 10 C-JCL. 10 C-DB2. 10 C-CICS.01 DETAIL-LINE. /*以下为定义的第二组数据*/05 COURSE-LIST. 10 C-COBOL. 10 C-JCL. 10 C-IMS.05 C-CICS.05 COR-INFO. 10 COR-N

    13、O. 10 COR-NAME. 10 COR-FEE.对于以上定义的两组数据,可以使用如下MOVE语句进行复制。MOVE IN-RECORD TO DETAIL-LINE.需要注意的是,根据前面讲解的组数据复制的基本原则,并非组内所有的数据都会被复制。在IN-RECORD组中,有以下几个数据项将不被复制。COURSE-INFO下的3个数据项都不会被复制。因为IN-RECORD组中的COURSE-INFO与DETAIL-LINE组中的COR-INFO名字并不相同。当上层分组名称不同时,即使分组内数据项名称相同,该数据项也不被复制。C-DB2将不被复制。因为DETAIL-LINE组中的相应位置为C

    14、-IMS,同C-DB2名称并不相同,因此不能进行复制。C-CICS将不被复制。因为C-CICS在IN-RECORD组中属于分组COURSE-LIST下的数据项。而在DETAIL-LINE组中,该数据项为一个独立的数据项,不属于任何分组。3.2 PERFORM语句PERFORM语句用于执行在COBOL中所编写的相应处理过程。这些处理过程通常在程序最后进行编写,且每一处理过程都有一个惟一的处理过程名。处理过程相当于COBOL中的函数,而PERFORM语句则用于调用这些函数。例如,假设以下程序在过程部中存在两段相同的使用MOVE语句进行复制操作的代码。在程序中并未使用PERFORM语句,相应代码如下

    15、。IDENTIFICATION DIVISION.PROGRAM-ID. NO-PERFORM.AUTHER. XXX.*ENVIRONMENT DIVISION.*DATA DIVISION.WORKING-STORAGE SECTION.01 IN-AREA. 05 IN-DATA1 PIC X.05 IN-DATA2 PIC XX.01 R-NUM PIC 9.01 SAVE-AREA. 05 SAVE-REC1 PIC X. 05 SAVE-REC2 PIC XX.01 S-NUM PIC 9.*PROCEDURE DIVISION. MOVE IN-DATA1 TO SAVE-REC

    16、1. MOVE IN-DATA2 TO SAVE-REC2. MOVE R-NUM TO S-NUM. MOVE IN-DATA1 TO SAVE-REC1. MOVE IN-DATA2 TO SAVE-REC2. MOVE R-NUM TO S-NUM. STOP RUN.如果在该程序中将这部分复制代码编写为一个处理过程,放在程序最后。这样,在程序中便可通过PERFORM语句多次调用该处理过程,以简化编码,并使程序结构清晰。应用PERFORM语句的相应代码如下。IDENTIFICATION DIVISION.PROGRAM-ID. WITH-PERFORM.AUTHER. XXX.*ENVI

    17、RONMENT DIVISION.*DATA DIVISION.WORKING-STORAGE SECTION.01 IN-AREA. 05 IN-DATA1 PIC X.05 IN-DATA2 PIC XX.01 R-NUM PIC 9.01 SAVE-AREA. 05 SAVE-REC1 PIC X. 05 SAVE-REC2 PIC XX.01 S-NUM PIC 9.*PROCEDURE DIVISION. PERFORM 100-COPY-PROCESS. PERFORM 100-COPY-PROCESS. STOP RUN. 100-COPY-PROCESS.MOVE IN-DAT

    18、A1 TO SAVE-REC1. MOVE IN-DATA2 TO SAVE-REC2. MOVE R-NUM TO S-NUM.第二段程序与第一段程序实现的功能相同。但第二段程序通过运用PEROFRM语句,显然要比第一段程序结构要清晰,且代码编写量也较少。在实际开发中,最好将反复用到的较长代码段都编写为处理过程,以养成良好的编程习惯。此外,在PERFORM语句中还可通过THRU选项同时对多个处理过程进行执行。不过通常情况下,为规范编码,此方式下最多只对两个处理过程同时执行。并且第二个处理过程只含有一条EXIT语句。相应代码如下。PERFORM 100-TEST-PROCTHRU 100-EN

    19、D-TEST-PROC. 100-TEST-PROC.do something. 100-END-TEST-PROC. EXIT.最后,根据结合PERFORM语句中不同的选项及格式,还可发展为其他几种相关语句。这些语句包括PERFORM UNTIL语句、线上PERFORM语句、以及PERFORM VARYING语句。其中前两种语句将在流程控制一章的循环结构中讲解。最后一种语句将在COBOL中的表一章中讲解。3.3 ACCEPT和DISPLAY语句ACCEPT语句和DISPLAY语句也是在COBOL中常用的两条语句。尤其是当对程序进行调试时,这两条语句的灵活应用将在很大程度上方便调试的过程。关于

    20、程序的调试,将在后面章节中详细讲解。此处只重点对这两条语句本身进行讲解。3.3.1 使用ACCEPT语句接受数据ACCEPT语句主要用于接受数据。该语句既可接受由用户从终端输入的数据,也可接受由系统产生的相应数据。所接受的数据将存放在COBOL数据部中所定义的相应变量之中。例如,以下程序定义了一组变量,并通过ACCEPT语句接受用户输入的数据,存入相应变量中。相关代码如下。IDENTIFICATION DIVISION.PROGRAM-ID. ACCEPT-ONE.AUTHER. XXX.*ENVIRONMENT DIVISION.*DATA DIVISION.WORKING-STORAGE

    21、SECTION.01 INPUT-AREA. 05 IN-FIELD1 PIC X.05 IN-FIELD2 PIC XX.05 IN-FIELD3 PIC 9. *PROCEDURE DIVISION. ACCEPT IN-FIELD1. ACCEPT IN-FIELD2. ACCEPT IN-FIELD3. STOP RUN.当用户从终端(键盘)上输入数据时,这些数据将直接通过ACCEPT语句保存到相应变量中。由于实际输入数据通常是以文件形式存放的,因此这种方式通常只用于输入少量的控制或调试信息。使用ACCEPT语句接受系统数据通常主要为接受系统相应的日期或时间数据。这些数据主要包括如下几

    22、种。 DATE:对应按月份计算的日期,数据格式为yymmdd。其中yy代表年份,mm代表月份,dd代表该月中具体的哪一天。 DAY:对应按一年中绝对天数计算的日期,数据格式为yyddd。其中yy代表年份,ddd代表该年中的绝对天数。例如,对于平年而言,12月31日在此便通过365表示。 DAY-OF-WEEK:对应一周之内的星期数。接受数据的格式应定义为为PIC 9,数值范围从1到7。 TIME:对应具体的时间,格式为hhmmsshh。其中前两个hh代表小时数,mm代表分钟数,ss代表秒数。最后两个hh则表示hundredths from midnigth。例如,下面这段程序便首先定义了一组变

    23、量,用于保存按月份计算的日期数据。其后再通过ACCEPT语句接受相应数据并将数据保存到该组变量中。代码如下。IDENTIFICATION DIVISION.PROGRAM-ID. ACCEPT-TWO.AUTHER. XXX.*ENVIRONMENT DIVISION.*DATA DIVISION.WORKING-STORAGE SECTION.01 TEST-DATE. 05 TEST-YEAR PIC 99.05 TEST-MONTH PIC 99.05 TEST-DAY PIC 99. *PROCEDURE DIVISION. ACCEPT TEST-DATE FROM DATE. ST

    24、OP RUN.3.3.2 使用DISPLAY语句输出数据DISPLAY语句用于对数据实现输出操作。在第一章中所举例的Hello World程序主要运用的便是DISPLAY语句。在该程序中,DISPLAY语句用于直接输出“Hello World”字符数据。同时,DISPLAY语句还可对变量进行输出,此时将输出变量中所包含的数据。例如,以下程序将分别输出程序中所设置的变量以及从用户处所接受的变量。IDENTIFICATION DIVISION.PROGRAM-ID. DISPLAY-ONE.AUTHER. XXX.*ENVIRONMENT DIVISION.*DATA DIVISION.WORKI

    25、NG-STORAGE SECTION.01 TEST-AREA. 05 TEST-DATA1 PIC X(5).05 TEST-DATA2 PIC X(5). *PROCEDURE DIVISION. MOVE SYS TO TEST-DATA1. ACCEPT TEST-DATA2.DISPLAY TEST-DATA1.DISPLAY TEST-DATA2. STOP RUN.如果用户所输入的数据为“USER”,则以上代码执行后,将有如下输出结果。SYSUSER使用DISPLAY语句还可同时对多项数据进行输出。这些数据既可为由引号引用的字符(直接数),也可为包含有数据的变量。各数据之间可以用

    26、空格或逗号隔开。例如,以下程序将通过DISPLAY语句分别对多个数据同时进行输出。IDENTIFICATION DIVISION.PROGRAM-ID. DISPLAY-TWO.AUTHER. XXX.*ENVIRONMENT DIVISION.*DATA DIVISION.WORKING-STORAGE SECTION.01 TEST-AREA. 05 T-LANG PIC X(10).05 T-PLATFORM PIC X(10). *PROCEDURE DIVISION. MOVE COBOL TO T-LANG. MOVE MAINFRAME TO T-PLATFORM.DISPLAY

    27、 THIS IS ABOUT : ,T-LANG.DISPLAY T-LANG IS RUNNED ON T-PLATFORM. STOP RUN.以上代码执行后,将有如下输出结果。THIS IS ABOUT COBOLCOBOL IS RUNNED ON MAINFRAME3.4 REDEFINES语句REDEFINES语句用于对同一块内存区域进行重定义。也就是说,通过REDEFINES语句,可以定义多个指向同一内存区域的变量。例如,以下程序便通过REDEFINES语句定义了3个指向同一内存区域的变量,代码如下。IDENTIFICATION DIVISION.PROGRAM-ID. RE-D

    28、EF.AUTHER. XXX.*ENVIRONMENT DIVISION.*DATA DIVISION.WORKING-STORAGE SECTION.01 TEST-AREA. 05 TEST-A PIC X(4).05 TEST-B REDEFINES TEST-A.05 TEST-C REDEFINES TEST-A. *PROCEDURE DIVISION. MOVE TEST TO TEST-A. DISPLAY TEST-A.DISPLAY TEST-B.DISPLAY TEST-C. STOP RUN.以上代码执行后,将有如下输出结果。TESTTESTTEST需要注意的是,RED

    29、EFINES语句不能用于对66层,88层数据进行重定义。同时,该语句也不能对文件节中的01层数据重定义。不过,对于工作存储节中的01层数据则是可以重定义的。在后面章节中,将会介绍如何通过该语句初始化COBOL中的表。3.5 文件相关语句COBOL程序中实际用到的数据通常主要来源于文件。此处所说的文件主要是指常规文件。关于另一类常用的具有特殊组织结构的VSAM文件,将在后面章节中详细讲解。和文件相关的语句,最基本是用作打开、关闭文件,以及对于文件的读写。下面分别予以讲解。3.5.1 OPEN和CLOSE语句OPEN语句用来实现对文件的打开操作。在对文件进行任何处理之前,必须通过OPEN语句将其打

    30、开。同时,OPEN语句还可指定该文件在打开后是用于输入操作还是输出操作。例如,以下程序通过该语句实现了文件的打开操作。IDENTIFICATION DIVISION.PROGRAM-ID. FILE-OPEN.AUTHER. XXX.*ENVIRONMENT DIVISION.INPUT-OUTPUT SECTION.FILE-CONTROL. SELECT CUSTOMER-FILE ASSIGN TO S-SYSIN. SELECT PRINT-FILE ASSIGN TO S-SYSOUT.*DATA DIVISION.FD CUSTOMER-FILE.FD PRINT-FILE.*PROCEDURE DIVISION. OPEN INPUT CUSTOMER-FILE OUTPUT PRINT-FILE. STOP RUN.此外,OPEN语句也可用于同时打开多个用于同一操作的文件。各文件之间可通过空格隔开。例如,以下O


    注意事项

    本文(第3章常用语句.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开