EXEC语句语句中的PGM和PROC

EXEC语句语句中的位置参数

​ EXEC语句有两个位置参数,PGM和PROC,每条EXEC语句必须有且仅有其中一个

一、PGM参数

//STEP1  EXEC PGM=UPDT
//STEP2  EXEC DSNAME=SYS1.LINKLIB(P40),DISP=OLD
//STEP3  EXEC PGM=*.STEP2.DDA

​ STEP1是直接调用。直接调用PDS中的PGM成员,这些成员都已经被编成二进制,这种就是统一嘛,版本控制方便

​ STEP3,间接调用,它从前面的中间生成LOAD库中,找需要的PGM,

​ 多此一举啦,正常业务中都分的很细,但我今天工作里确见到STEP2的写法,就是从某个库中取出来特定PGM步骤

二、PROC参数

​ 过程名可以是:

编目过程的成员名,像是单独写出来SHELL脚本

JCL流内PROC,像是在JCL的PROC和PEND中间追加定义区

//STEP1  EXEC PROC=MYPROC
//STEP2  EXEC MYPROC2

三、SUB

一般有的子程序不能直接用JCL调用,就要写一个JCL driver,来间接调用这个程序。
在汇编语言中,通常用术语过程(procedure)来指代子程序。在其他语言中,子程序也被称为方法或函数。
过程可以非正式地定义为:由返回语句结束的已命名的语句块。过程用 PROC 和 ENDP 伪指令来定义,并且必须为其分配一个名字(有效标识符)。到目前为止,所有编写的程序都包含了一个名为 main 的过程,例如:

main PROC
.
.
main ENDP

当在程序启动过程之外创建一个过程时,就用 RET 指令来结束它。RET 强制 CPU 返回到该过程被调用的位置:

sample PROC
    .
    .
    ret
sample ENDP

默认情况下,标号只在其被定义的过程中可见。这个规则常常影响到跳转和循环指令。在下面的例子中,名为 Destination 的标号必须与 JMP 指令位于同一个过程中:

jmp Destination

解决这个限制的方法是定义全局标号,即在名字后面加双冒号 (::)Destination::

就程序设计而言,跳转或循环到当前过程之外不是个好主意。过程用自动方式返回并调整运行时堆栈。如果直接跳出一个过程,则运行时堆栈很容易被损坏。

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值