《大型機學習之具體技術之-數據集的具體操作》
數據集的創建:
數據集的創建有兩種情況:1分區數據集的創建,2連續數據集的創建。
分區數據集的創建步驟如下:在ISPF主菜單下選擇3-Utilitis,然後是2-Data Set,在面板最上面就會看到有8種操作可以進行,在選項區域輸入字母 A,但是不要按 ENTER 鍵,然後在數據集名字區域中輸入新數據集的名字,但是同樣也不要按ENTER 鍵。名字可以用單引號引起來(例如,’yourid.LIB.SOURCE’)或不用引號引起來(LIB.SOURCE)以便TSO/ISPF 能夠自動的把當前的 TSO用戶ID 作爲HLQ 使用。然後在卷序號區域輸入 WORK02,按ENTER鍵。 完成指定的參數設置並且按 ENTER。
– Space Units = TRKS (這是一個爲後面數據設置的單位,意爲磁道)
– Primary quantity = 10 (爲數據集分配 10 個磁道的主空間)
– Secondary quantity = 5 (5個磁道的追加空間)
– Directory blocks = 10 (10個目錄空間足夠了)
– Record format = FB (數據集的記錄格式是 FB)
– Record length = 80 (邏輯記錄的長度是 80 字節)
– Block size = 0 (this tells z/OS to select an optimum value) (在Record format爲FB的情況下,這個區域如果要自定義的話一定要是上一個參數Record length的整數倍,至於原因,可以從上一篇文章中找)
– Data set type = PDS (PDS代表分區數據集,HFS代表分級文件系統,是Z/OS UNIX文件系統,LIBRARY表示庫,BLANK表示什麼不知道)
系統執行創建數據集的操作完畢以後,在屏幕的右上的角落,可以看到成功或者失敗的 消息。
順序數據集的創建與分區數據集的創建的不同之處在於填寫參數的時候要在Directory blocks 項填0,因爲順序數據集中根本不需要目錄,分配空間又要何用。然後還要把Data set type 保持爲空,即BLANK,這樣子創建出來的一個DATA SET就是一個順序數據集。同樣你會在右上角看到創建成功與否的提示信息。
數據集的列表總覽:
我剛纔學會了創建數據集,那麼我如何去看我們的數據集在哪呢?其實我已經知道它就在創建數據集時指定的那個VOLUME中,但是,我還是想看一看VOLUME下倒底有哪些數據數據集呢?原來可以在ISPF下使用3.4即Dlist選項,在其中的Dsname level右邊填上你的用戶名,或者就是你的HLQ,然後回車,就可以得到一個數據集的列表,或者你不填寫Dsname level,而是填寫了下面那個Volume serial,那麼得到的就是這個卷中的所有的數據集的列表,如下面這個圖所示:
在這個界面中,用PF10和PF11左右翻動可以顯示更多的信息,這種情況並不是真正的滾動;只有當使用PF11或 PF10 時才能獲得額外的信息。 第一個 PF11 顯示的內容包括磁道、使用百分比、分區和設備類型。分區值是用於獲得顯示磁道總數的分區數量。ISPF 實用程序可以看到數據集實際使用的空間的大小,且如果可能的話,它還可以作爲一個百分比來顯示。第二個 PF11 顯示的內容包括 DCB 特性:數據集組織形式(DSORG)、數據集記錄格式(RECFM)、邏輯記錄長度(LRECL)和組塊的長度(BLKSIZE)。PS 代表順序數據集,PO 代表分區數據集,VS 代表 VSAM 數據集,BLANK 代表未知組織或者不存在數據集。
RECFM、LRECL 和 BLKSIZE 應該是比較熟悉的。在某些情況下,若沒有使用一個標準的訪問方法或沒有寫入數據時,這些參數是不能確定的。VSAM 數據集沒有這些參數的直接數值,通常是以問號來表示。
在這個界面下按F1可以查看到可以對數據集進行的一些操作的命令,如S ,E ,B等等,這時在某一個要編輯的數據集左側,對應於上方藍色的Command列下面輸入命令,然後回車就可以執行命令了。比如用E,就馬上進入該數據集的編輯狀態。
數據集的編輯:
如果是一個連續數據集,我們可以直接在ISPF主菜單的2選項EDIT裏面,輸入數據集名稱,直接進行編輯狀態,在編輯環境下,有兩種命令格式,一種是主命令,就是在Command那一行輸入來使用的命令,它們常見的有:
AUTOSAVE ON/OFF,打開關閉自動保存
AUTONUM ON/OFF,自動重新編號行號(SAVE後生效)
CANCLE:取消所做的編輯並退出編輯環境
CAPS ON/OFF:退出編輯環境後系統自動將所有字母轉換爲大寫/小寫
CHANGE(RCHANGE):替換字符,RCHANGE表示重複上次的替換。格式:CHANGE ** ** [ALL]
FIND(RFIND):查找字符串
RECOVERY ON/OFF:設置編輯方式,ON表示用戶可以通過UNDO命令取消上一次編輯操作
RESET:重置編輯器,清除不需要的信息
SAVE:保存當前修改,並繼續編輯
SORT:對文檔行按字典順序排序
SUBMIT:提交作業;若作業是一段JCL程序,則通過該命令可以提交作業程序
UNDO:取消上一次編輯(僅當在RECOVERY ON編輯方式下)
s(setup)+member:創建新成員(PDS)
CUT:複製當前內容(配合CC和MM來使用)
PASTE:粘貼當前內容(配合CUT來用 很常用)
COPY+member-name:複製同一DATASET下MEMBER內容(配合AB使用)
HEX ON/OFF,打開關閉十六進制編碼形式;
HI+XXX:高亮顯示某種語言(JCL COBOL REXX等等)
MEMBER+member-name:查詢當前所有DATASET下該member是否存在(非常實用)
PROFILE:列出當前編輯環境的所有的editor profile
HEX ON/OFF:打開關閉十六進制編碼形式
AUTOSAVE ON/OFF:打開關閉自動保存
AUTONUM ON/OFF:自動重新編號行號(SAVE後生效)
PROFILE, 列出當前編輯環境的所有的editor profile
PROFILE UNLOCK/LOCK:可以修改ISPF的editor profile
PACK ON/OFF:是否將該MEMBER保存成PACK格式(一種主機上標準的壓縮格式)
TABS ON/OFF:編輯的時候是否允許用TAB鍵跳格
如果是編輯REXX,COBOL,JCL等,可以用 HI REXX, HI COBOL, HI JCL,讓語言的關鍵字高亮顯示。這個對閱讀程序幫助很大
命令 COPY member1 就會把 member1 的內容拷貝到當前的文件中。
命令 CUT 可以把當前文件的內容拷貝到剪貼板中,然後到你要你要粘入的文件,使用PASTE 命令 拷貝到該文件。
CTRL+HOME顯示隱藏十字光標(十字光標是幹什麼滴?)
另一種命令是行命令,是輸入在文本行中的左側EDIT下面列來使用的命令,常見的行命令如下:
C、CC、Cxx:拷貝命令。與其他行命令(A、B)或主命令 結合使用 C 拷貝當前行,CC拷貝多行,用兩個CC來定位,Cxx拷貝多行,XX表示行數
I、IXX:插入命令。執行一次插入命令後,可直接按回車(ctrl)換行
D、DD、Dxx:刪除
R、RR、Rxx:複製
O:覆蓋當前內容(結合C和R來用)
A:定位於當前行之前
B:定位於當前行之後
X、XX、Xxx:隱藏
S、Sxx:顯示隱藏的內容
COLS:屏幕的刻度標尺
UC、UCxx:轉換成大寫
LC、LCxx:轉換成小寫
(, (xx:將當前行左移一列或xx列(或者<)
), )xx :將當前行右移一列或xx列(或者>)
TS:將一行文本切分爲兩行
TF:將多行文本合併爲一行
行命令還有O,配合A,B一起使用能夠覆蓋指定的行相同位置
還有列於最下行的功能鍵都有提示,就不說了。
編輯完了F3可保存退出。F12不保存退出。
如果數據集是一個分區數據集,如果是一個剛剛建立的分區數據集,我們按前述進行編輯的時候,右上角會提示 No member in data set,這個就是說明了,一個分區數據集是不能拿來直接編輯的,因爲它是一個順序數據集的集合,它相當於一個文件夾,怎麼可以拿來直接編輯呢,所以要先在其中建立順序數據集,這個順序數據集一般被稱爲MEMBER,然後再對MEMBER進行相應的編輯。如何給分區數據集添加順序數據集呢?很簡單,就在如上的兩處環境下在Data set name一項中填上數據集名稱,然後在後面加上一個括號,其中寫上要添加的成員的名字就可以了(例如LIB.COURCE(MEM1)),然後回車就直接進入編輯狀態了。如果是一個已經有成員的分區數據集,填寫好數據集名稱,不用加什麼括號然後直接回車,會出現一個成員列表,再在其中進行選擇,然後選擇一個數據集來編輯就可以了,編輯命令當然跟前面說過的那兩種命令相同了。
數據集的刪除:
數據集的刪除可以在3.2下面用D命令進行,也可以在3.4下面用D命令進行。這個比較簡單。
數據集的重命名:
數據集的重命名跟刪除一樣,可以在3.2下面用R命令進行,也可以在3.4下面用R命令進行。這個也比較簡單。
數據集的移動和拷貝:
假定用戶需要複製位於卷WORK02中的數據集 ZPROF.ZSCHOLAR.LIB.SOURCE,操作過程如下:
1. 選擇ISPF選項3.3(實用程序移動/複製)。
2. 在第一個面板上:
- 在選項區域輸入C。
- 在數據集名字區域輸入’ZPROF.ZSCHOLAR.LIB.SOURCE’。這種情況需要用到單引號。
3.在第二個面板上:
- 在數據集名字區域中輸入’yourid.LIB.SOURCE’並且按ENTER鍵 ,如果這個目標數據集不存在,會有一個創建新數據集的提示。
4. 操作後應該產生一個面板列出輸入數據集中的所有成員:
-在每個成員名字前輸入S,並且按ENTER鍵。 (如果源數據集中本身就沒有成員,那麼複製將自然會失敗。)
這樣就把所有顯示出來的成員從源數據集複製到了目標數據集。
移動的做法跟複製差不多,只是移動過後源數據集就消失了,而複製不會消失。
數據集的編目:
先對數據集的編目進行一個概覽:
在MVS中,數據集的管理主要是通過目錄(CATALOG)來實現的。目錄本身是一個數據集,它含有其它數據集的信息,提供一種能力,按數據集名去定位數據集的地址。MVS中最初沒有目錄,因此用戶必須牢牢記住其數據集所在的卷,在訪問數據集時,除了要指定數據集的名字外,還要指定數據集所在的卷。由於系統中的卷的個數非常多,用戶使用很不方便。之後,隨着操作系統的發展,實現了CVOL目錄和VSAM目錄。現在使用的目錄是Integrated catalog。
這三種目錄可以並存於同一個操作系統中,其中前兩種只是因爲考慮兼容性而存在,系統中如果沒有早期的應用需求,可以完全不使用前兩種目錄 形式。
對數據集的編目實際上是對數據集的入口建立表格和索引。訪問數據集時,系統通過查找目錄來定位已編目的數據集。目錄中包括數據集名,卷標(VOLUME)和設備類型(UNIT)。
當讀取編目的數據集時,只需指定數據集名和數據集狀態,無需指定VOLUME和UNIT參數,這時,系統通過數據集名(DSN)查找編目,從編目中獲取UNIT和 VOLUME信息,然後再通過UNIT參數和VOLUME參數指定的VTOC獲取數據集位置,大小等信息。
使用編目後,用戶不再需要知道外存儲器的詳細設置,因此數據可以從一個地方移動到另一個地方而不必改變JCL中的DD語句,訪問數據集時也不必知道數據集存放的卷。使用編目同時也簡化了數據集的備份和恢復過程。所有VSAM數據集和SMS管理的數據集均需要編目。
如果你使用了SMS,或者爲編目定義了別名(alias),則在JCL中不應該再使用JOBCAT或STEPCAT語句去指定catalog。
一個編目機制包含兩種獨立的數據集:一個基本的編目結構(BCS)和一個VSAM卷數據集(VVDS)。BCS可以認爲是編目,而VVDS則可認爲是VTOC的擴展。
BCS是一個VSAM KSDS數據集,它使用數據集的名字作爲關鍵字。對於VSAM數據集,BCS含有卷、安全信息、擁有者及其它信息。對於非 VSAM數據集, BCS含有卷,擁有者及其它信息。
VVDS是一個VSAM ESDS數據集,其名字爲:SYSI.VVDS.Vvolser。 VVDS存放在每
一個含有VSAM或SMS管理的數據集的捲上。它含有數據集的特性和擴展(extention)信息。
對於VSAM數據集來說,還含有卷的有關信息。因此,編目的數據集描述信息包含在VTOC,BCS和VVDS中,三者描述的信息應當一致。這種一致性由操作系統自動同步。
所有SMS管理的數據集在VVDS中都有登記項,對於VSAM數據集的VVDS記錄被稱之爲VVR(VSAM Volume Record),而對於SMS管理的非VSAM數據集的VVDS記錄則被稱之爲NVR(Non-VSAM Volume Record)。如果一個非VSAM數據集跨多個卷,則其NVR在第一個捲上。
由於BCS同樣也是一個VSAM,它在 VVDS中也有一個VVR。臨時的 VSAM數據集在VVDS中同樣也有登記項,但在BCS中沒有登記項。
在MVS系統中,有一個主目錄(Master Catalog)及多個用戶目錄(User Catalog)。
主目錄是整個外存系統管理的中心控制點,它描述系統的數據集和用戶目錄,而用戶目錄則描述用戶的數據集。通常稱在目錄中有描述信息的數據集爲編目的數據集。顯然,主目錄的信息非常重要,因此可以有一個或多個主目錄的備份。但任何時候系統中只能有一個主目錄在使用,形成一個以主目錄爲中心的兩級層次式的數據集管理方式,主目錄與用戶目錄的區別僅僅在於它使用的方式。
SYSI.NUCLEUS數據集的SYSCATXX成員(如果有的話)或SYSI.PARMLIB(或SYS1.IPLPARM)數據集的LOADXX成員指向主目錄。在系統啓動時,操作員也可指定使用另一個主目錄。所有的用戶目錄均登記在主目錄中。
從以上可以看出由用戶直接進行數據集的編目還是比較不常見的,我也不會,所以先不管這個東東,以後再說。
關於數據集還有:
誰在使用數據集
環境 |
|
|
|
如果你在使用ISPF V4以上的版本,可嘗試在3.4下刪除它.當你得到"Data set in use" 的信息,連續按下兩次PF1鍵,便可得到一個enque owner的清單. 如果上述方法不行,可再嘗試MVS命令: D GRS,RES=(*,TCPIP.TCPIP.DATA). |
以及:
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|