2010-07-12 114 views

回答

4

DISP=MOD

這將附加到現有的數據集的順序的末尾。如果指定的數據集不存在,它將被創建(在這種情況下DISP = MOD和DISP = NEW是等同的)

當心以下的:

多體積數據集

DISP=MOD的行爲因您是否指定 特定卷而異。如果您在DSNAME參數指定一個成員的名字,您應該查看該reference 的規則

分區數據集

, 成員名稱不得存在。系統將讀/寫機制定位在數據集的末尾 處。如果成員名稱已存在,系統將終止該作業。

如果不指定成員名稱, 系統定位在數據集末尾的讀/寫機構。系統 不會自動進入目錄。

將數據添加到一個PDS/PDSE的構件的端部是一個位一招。您通常必須 刪除並用添加的新記錄重寫整個成員。

順序數據集和COBOL OPEN動詞

有一些 「相互作用」 在JCL和COBOL OPEN動詞給出的DISP之間 。

如果您在JCL指定DISP=MOD,COBOL程序會記錄添加到一個連續數據集的 結束兩個OPEN OUTPUTOPEN 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=MODDISP=OLD相同(使用任意一個 - 它不會產生 差異)。如果您未更新 數據集並且不想阻止其他程序進行併發訪問,請使用DISP=SHR

+0

嗨尼爾,感謝repy。如果我使用DISP = MOD,那麼當我打開文件光標已經定位在最後一個記錄時,它是否就像我一樣? – Saisha 2010-07-13 05:14:06

+0

@Manasi使用DISP = MOD打開順序數據集將讀/寫機制放在數據集中的最後一條記錄之後。您的程序發出的下一次寫入會爲數據集添加一條新記錄(不會覆蓋現有記錄)。 DISP = MOD意味着您將寫入數據集(而不是從中讀取數據)。注意:術語「遊標」通常與數據庫操作相關聯(例如,相對於多行SQL查詢的遊標位置)。對於數據集操作,我們通常引用數據集中的讀/寫位置。 – NealB 2010-07-13 14:10:22

+0

謝謝Neal,如果我使用DISP = MOD,我必須在EXTEND模式下打開文件,對吧? 我可以在DISP = OLD中使用EXTEND嗎? 如果我使用DISP = OLD來追加記錄,那麼我的數據集中的讀/寫位置是什麼? – Saisha 2010-07-14 05:55:37