我想知道REXX语言的一件事情,它如何处理数据集锁。 The situation: - 我在我的ISPF编辑器中打开了顺序数据集 - 我开始REXX程序对数据集 进行了哪些更新(进行了更改) - 它工作正常,但它有可能如何?通常情况下,如果您在编辑器 中打开了数据集,并且您尝试使用其他程序中的数据集(例如,如果您提交了某个作业),则会收到消息“正在使用数据集”。 为什么这里适用于REXX。也许相同的地址空间或...? 任何人都可以告诉我吗?REXX/z/OS数据集锁
2
A
回答
3
REXX不管理数据集锁定。 REXX呼叫服务模块 分配数据集并对它们执行I/O。 TSO下的I/O服务 例程称为EXECIO。在EXECIO可以在数据集上运行之前,它必须在TSO下分配给某个DDName。这个DDName然后在EXECIO请求中被引用。
数据集可以直接从TSO命令提示符或从您的REXX exec中的 分配。数据集锁定级别由数据集分配期间提供的DISPosition参数 确定。
在您的具体示例中,重点是您正在运行ISPF编辑 会话和REXX exec执行相同 TSO会话。在同一个TSO会话中, 之内的数据集分配不会相互阻塞。 DISP参数指定如何使用 关联其他进程,而不是进程本身。因此,永远不会有 是在相同TSO会话下运行的不同程序之间的数据集锁定问题。
由ISPF编辑器强化的'正在使用的数据集'消息是 编辑器本身在相同TSO会话下检查先前分配 的函数。
尝试以下实验:你所描述的
重复:在数据集上打开一个ISPF编辑会话。然后, 在相同的TSO会话下运行您的REXX proc以更新它。应该没有投诉的工作。
下一步:请朋友打开数据集上的ISPF编辑会话。这次您的REXX proc将因为“正在使用的数据集”而被炸毁。您可以通过编辑TSO中的数据集并将REXX exec作为您的帐户下的批处理作业提交给 来执行相同的操作。 交互式TSO会话是一个进程,批处理TSO会话是第二个进程,并且它们之间会发生数据集锁定(您的批处理作业将爆炸或挂起直到放弃TSO编辑会话)。
只有当不同的进程尝试使用 时,才会显示数据集访问冲突,并分配具有不兼容的DISP参数的相同数据集。
相关问题
- 1. ArangoDB集合锁
- 2. 数据库表锁
- 3. sqlite数据库锁
- 4. 数据库锁定
- 5. 锁定数据库
- 6. 锁定数据库
- 7. SQLITE_BUSY数据库文件被锁定(数据库被锁定)wicket
- 8. 多节点数据读取锁定弹簧集成
- 9. 是否有可能锁定ASP.net数据集
- 10. 数据库锁定采集失败和hsqldb
- 11. MySQL数据库锁定
- 12. 数据库被锁定?
- 13. 数据库记录锁定
- 14. Java - 锁定SQLite数据库
- 15. 数据库被锁在R
- 16. java.sql.SQLException:锁定数据库
- 17. SQLite数据库被锁定
- 18. 数据库被锁定-sqlite3
- 19. 数据库锁定:ActiveRecord + Heroku
- 20. 核心数据死锁
- 21. 数据库被锁定sqCommand.ExecuteNonQuery()?
- 22. H2数据库释放锁
- 23. 数据库锁定问题
- 24. 数据流插入锁
- 25. 弹簧数据锁定
- 26. 数据库行锁定
- 27. 数据库被锁定
- 28. Python:从数据集中收集数据
- 29. Spring集成头富集做连锁
- 30. 采集锁留下的WaitOne
谢谢NealB, “同一个TSO会话中的数据集分配不会彼此阻塞。”这解释了一切!蒂莫,最好的问候 – Timo 2010-08-27 06:22:54