【转】谈谈CICS ENQ,DEQ的使用_REDEMPTION_百度空间

 

在CICS中对于需要序列化访问的资源, 比如流水号分配等, 都可以使用ENQ, DEQ来保证顺序化访问, 对于ENQ, DEQ之间的代码, 只有一个TASK能够占有, 当这个TASK通过ENQ 资源, 其他TASK ENQ时都会返回ENQBUSY, 一直等待直到HOLD资源的TASK DEQ资源(除非程序handle ENQBUSY或者指定NOSUSPEND). ENQ, DEQ..

.

     在CICS中对于需要序列化访问的资源, 比如流水号分配等, 都可以使用ENQ, DEQ来保证顺序化访问, 对于ENQ, DEQ之间的代码, 只有一个TASK能够占有, 当这个TASK通过ENQ 资源, 其他TASK ENQ时都会返回ENQBUSY, 一直等待直到HOLD资源的TASK DEQ资源(除非程序handle ENQBUSY或者指定NOSUSPEND).

ENQ, DEQ是enqueue, dequeue的缩写. 语法如下:

________________________________________________________________________ |                                                                         |
|                                                                         |
| >>__ENQ__RESOURCE(data-area)__ ____________________ _________________> |
|                               |_LENGTH(data-value)_|                   |
|                                                                         |
|     _UOW_______________                                                 |
| >__|___________________|___ ___________ ___><                           |
|     |_MAXLIFETIME(cvda)_|   |_NOSUSPEND_|                               |
|     |_TASK______________|                                               |
| Conditions: ENQBUSY, INVREQ, LENGERR                                   |
|                                                                         |
|________________________________________________________________________|

________________________________________________________________________
|                                                                         |
|                                                                         |
| >>__DEQ__RESOURCE(data-area)__ ____________________ _________________> |
|                               |_LENGTH(data-value)_|                   |
|                                                                         |
|     _UOW_______________                                                 |
| >__|___________________|__><                                           |
|     |_MAXLIFETIME(cvda)_|                                               |
|     |_TASK______________|                                               |
| Conditions: INVREQ, LENGERR                                             |
|                                                                         |
| This command is threadsafe.                                             |
|                                                                         |
|________________________________________________________________________|

ENQ,DEQ的使用方法,

对于资源, 我们可以区分成两种, 使用ENQ,DEQ的语法也不同:

1,说明数据区的地址代表资源, 资源是在内存中的地址, 而不是内容, 比如CWA中的变量.

2,说明数据区的内容代表资源, 资源是他的内容, 而不是地址. 比如在WORKING-STORAGE的变量. 这种的使用,必须指定LENGTH option, 告诉CICS需要ENQ,DEQ是数据变量的内容.

eg, 比如你define jnl-seq在CWA中,则流水号分配的伪代码如下:

EXEC CICS ENQ RESOURCE(JNL-SEQ) END-EXEC

ADD 1 TO JNL-SEQ

EXEC CICS DEQ RESOURCE(JNL-SEQ) END-EXEC

   如果你只是deinfe jnl-seq在working-storage, 则流水号分配的伪代码如下:

EXEC CICS ENQ RESOURCE(JNL-SEQ) LENGTH(LENGTH OF JNL-SEQ) END-EXEC

ADD 1 TO JNL-SEQ

EXEC CICS DEQ RESOURCE(JNL-SEQ) LENGTH(LENGTH OF JNL-SEQ) END-EXEC.  

【转】谈谈CICS ENQ,DEQ的使用_REDEMPTION_百度空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值