我想知道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