如果我想將記錄附加到現有文件中,我需要使用哪些DISP參數?將記錄追加到現有文件
回答
DISP=MOD
這將附加到現有的數據集的順序的末尾。如果指定的數據集不存在,它將被創建(在這種情況下DISP = MOD和DISP = NEW是等同的)
當心以下的:
多體積數據集
DISP=MOD
的行爲因您是否指定 特定卷而異。如果您在DSNAME參數指定一個成員的名字,您應該查看該reference 的規則
分區數據集
, 成員名稱不得存在。系統將讀/寫機制定位在數據集的末尾 處。如果成員名稱已存在,系統將終止該作業。
如果不指定成員名稱, 系統定位在數據集末尾的讀/寫機構。系統 不會自動進入目錄。
將數據添加到一個PDS/PDSE的構件的端部是一個位一招。您通常必須 刪除並用添加的新記錄重寫整個成員。
順序數據集和COBOL OPEN動詞
有一些 「相互作用」 在JCL和COBOL OPEN
動詞給出的DISP
之間 。
如果您在JCL指定DISP=MOD
,COBOL程序會記錄添加到一個連續數據集的 結束兩個OPEN OUTPUT
和OPEN EXTEND
。
如果您在JCL中指定DISP=OLD
,則COBOL程序會將記錄添加到OPEN EXTEND
的順序數據集的 末端。如果打開的順序數據集作爲OPEN OUTPUT
, 數據集的原創內容被刪除,你將有效 用一個空的數據集再次啓動(就像你已經刪除,並重新分配它)。
VSAM數據集
虛擬存儲訪問方法(VSAM)文件是魚的一個完全不同的 水壺。VSAM數據集來,在各種組織:
- KSDS(主要測序數據集)
- ESDS(輸入序列數據集)
- RRDS(相對記錄數據集)
- LSD(線性空間數據套)
每個組織都有自己的特點和用法。
在COBOL程序可能引用它們之前,必須預先定義VSAM數據集。這通常是作爲單獨的 IDCAMS作業完成的。一旦 VSAM數據集已定義 ,它可以通過COBOL(或其他)程序訪問它 。這個 reference提供了 在COBOL下操縱VSAM數據集的一個很好的概述。部分:Adding records to a VSAM dataset 涵蓋了將記錄從COBOL程序添加到VSAM數據集的細節。使用COBOL open語句的OPEN EXTEND
版本將記錄添加到現有ESDS或KSDS VSAM數據集的末尾。注意 對於KSDS數據集,記錄必須按照密鑰的遞增順序添加。
用於將VSAM數據集連接到程序的JCL實際上非常簡單,並且是 所述的here。 對於現有的VSAM數據集,使用DISP=MOD
與DISP=OLD
相同(使用任意一個 - 它不會產生 差異)。如果您未更新 數據集並且不想阻止其他程序進行併發訪問,請使用DISP=SHR
。
- 1. 如何將新記錄追加到jqGrid中的現有記錄?
- 2. 如何追加到現有記錄?
- 3. AVAudioRecorder/AVAudioPlayer - 追加記錄到文件
- 4. MySQL - 將數據追加到現有字段/記錄的建議?
- 5. 追加到現有文本文件
- 6. 文本追加到現有的文件
- 7. Golang:將文件追加到現有的tar歸檔文件
- 8. 追加到現有的序列文件
- 9. 追加到現有的excel文件
- 10. 追加到現有的文件
- 11. SOLR Tika:將文件添加到現有記錄(ExtractingRequestHandler)
- 12. 如何將文本追加到現有的文本文件
- 13. 將文本追加到文本文件中的現有行
- 14. 將文本追加到現有Gzip文件
- 15. 將文本追加到現有的UTF16LE文件
- 16. llblgen - 將子類型記錄添加到現有分層記錄
- 17. 如何將數據追加到現有的Dropbox文件?
- 18. 使XMLWriter將數據追加到現有文件
- 19. 使用gnuplot將頁面追加到現有的Postscript文件
- 20. XML將數據追加到現有文件中的c#
- 21. 使用java將節點追加到現有的XML文件
- 22. 通過powershell將數據追加到現有的xml文件
- 23. 將腳本追加到現有頁面
- 24. 將流程追加到現有的TextFlow?
- 25. 將對象追加到現有對象
- 26. 將視圖追加到現有視圖
- 27. 爲OS X同時記錄輸出並追加到文件中
- 28. 批處理腳本追加記錄到csv文件
- 29. 不能追加記錄到二進制文件
- 30. 追加對象現有文件
嗨尼爾,感謝repy。如果我使用DISP = MOD,那麼當我打開文件光標已經定位在最後一個記錄時,它是否就像我一樣? – Saisha 2010-07-13 05:14:06
@Manasi使用DISP = MOD打開順序數據集將讀/寫機制放在數據集中的最後一條記錄之後。您的程序發出的下一次寫入會爲數據集添加一條新記錄(不會覆蓋現有記錄)。 DISP = MOD意味着您將寫入數據集(而不是從中讀取數據)。注意:術語「遊標」通常與數據庫操作相關聯(例如,相對於多行SQL查詢的遊標位置)。對於數據集操作,我們通常引用數據集中的讀/寫位置。 – NealB 2010-07-13 14:10:22
謝謝Neal,如果我使用DISP = MOD,我必須在EXTEND模式下打開文件,對吧? 我可以在DISP = OLD中使用EXTEND嗎? 如果我使用DISP = OLD來追加記錄,那麼我的數據集中的讀/寫位置是什麼? – Saisha 2010-07-14 05:55:37