COBOL 子程序有哪些
发布时间:2023-09-14 13:21:50 所属栏目:教程 来源:
导读:Cobol子程序是一个可以独立编译但不能独立执行的程序.有两种类型的子程序:内部子程序,如执行语句和外部子程序,如CALL动词.
调用动词
调用动词用于将控件从一个程序转移到另一个程序.包含CALL动词的程序是呼叫程
调用动词
调用动词用于将控件从一个程序转移到另一个程序.包含CALL动词的程序是呼叫程
Cobol子程序是一个可以独立编译但不能独立执行的程序.有两种类型的子程序:内部子程序,如执行语句和外部子程序,如CALL动词. 调用动词 调用动词用于将控件从一个程序转移到另一个程序.包含CALL动词的程序是呼叫程序,被调用的程序称为被叫程序.调用程序执行将停止,直到被调用程序完成执行.在被叫程序中使用退出程序语句来传回控制. 被称为程序约束 以下是被调用的程序要求 : 必须在被调用程序中定义链接部分.它由程序中传递的数据元素组成.数据项不应具有Value子句. PIC子句必须与通过调用程序传递的变量兼容. 使用的程序划分有一个从中传递的变量列表调用程序和命令必须与Call动词中提到的相同. 退出程序语句在被调用程序中使用将控制权转回.它必须是被调用程序中的最后一个语句. 参数可以通过两种方式在程序之间传递和减去; 按参考 按内容 按引用调用 如果修改了被调用程序中变量的值,则它们的新值将反映在调用程序中.如果未指定 BY 子句,则变量始终通过引用传递. 语法 以下是语法通过引用调用子例程 : CALL sub-prog-name USING variable-1, variable-2. 示例 以下示例是MAIN调用程序,UTIL是被调用程序 : IDENTIFICATION DIVISION. PROGRAM-ID.主要. DATA DIVISION. 工作 - 储存部分. 01 WS-STUDENT-ID PIC 9(4)价值1000. 01 WS-STUDENT-NAME PIC A(15)VALUE'Tim'. 程序部门. CALL'UTIL'使用WS-STUDENT-ID,WS-STUDENT-NAME. disPLAY'学生ID:'WS-STUDENT-ID disPLAY'学生姓名:'WS-STUDENT-NAME STOP RUN. 被叫程序 IDENTIFICATION DIVISION. PROGRAM-ID. MAIN. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-STUDENT-ID PIC 9(4) VALUE 1000. 01 WS-STUDENT-NAME PIC A(15) VALUE 'Tim'. PROCEDURE DIVISION. CALL 'UTIL' USING WS-STUDENT-ID, WS-STUDENT-NAME. disPLAY 'Student Id : ' WS-STUDENT-ID disPLAY 'Student Name : ' WS-STUDENT-NAME STOP RUN. JCL 执行上述COBOL程序 : //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC pgm = MAIN 当您编译并执行上述程序时,它会产生以下结果 : In Called Program Student Id : 1111 Student Name : Tim 按内容调用 如果调用被调用程序中的变量值,那么它们的新值不会反映在调用程序中. 语法 以下是按内容和减号调用子程序的语法; CALL sub-prog-name USING BY CONTENT variable-1, BY CONTENT variable-2. 示例 以下示例是MAIN调用程序,UTIL是被调用程序 : IDENTIFICATION DIVISION. PROGRAM-ID. MAIN. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-STUDENT-ID PIC 9(4) VALUE 1000. 01 WS-STUDENT-NAME PIC A(15) VALUE 'Tim'. PROCEDURE DIVISION. CALL 'UTIL' USING BY CONTENT WS-STUDENT-ID, BY CONTENT WS-STUDENT-NAME. disPLAY 'Student Id : ' WS-STUDENT-ID disPLAY 'Student Name : ' WS-STUDENT-NAME STOP RUN. 被叫程序 IDENTIFICATION DIVISION. PROGRAM-ID. UTIL. DATA DIVISION. LINKAGE SECTION. 01 LS-STUDENT-ID PIC 9(4). 01 LS-STUDENT-NAME PIC A(15). PROCEDURE DIVISION USING LS-STUDENT-ID, LS-STUDENT-NAME. disPLAY 'In Called Program'. MOVE 1111 TO LS-STUDENT-ID. EXIT PROGRAM. JCL 执行上述COBOL程序 : //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC pgm = MAIN 当您编译并执行上述程序时,它会产生以下结果 : In Called Program Student Id : 1000 Student Name : Tim 通话类型 有两种类型的通话和减号; 静态调用在使用NODYNAM编译器选项编译程序时发生.在编译时将静态调用程序加载到存储中. 动态调用在使用DYNAM和NODLL编译程序时发生编译选项.动态调用程序在运行时加载到存储中. (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |