JCL - DD 語句



資料集是大型機檔案,其記錄以特定格式組織。資料集儲存在大型機的直接存取儲存裝置 (DASD) 或磁帶上,是基本的資料儲存區域。如果需要在批處理程式中使用/建立這些資料,則在 JCL 中對檔案(即資料集)物理名稱以及檔案格式和組織進行編碼。

每個在 JCL 中使用的資料集的定義都使用DD 語句給出。作業步驟所需的輸入和輸出資源需要在 DD 語句中進行描述,其中包含資料集組織、儲存要求和記錄長度等資訊。

語法

以下是 JCL DD 語句的基本語法

//DD-name DD Parameters

描述

讓我們看看上面 DD 語句語法中使用的術語的描述。

DD-NAME

DD-NAME 標識資料集或輸入/輸出資源。如果這是 COBOL/彙編程式使用的輸入/輸出檔案,則程式在其中引用該檔案。

DD

這是用於將其識別為 DD 語句的關鍵字。

引數

以下是 DD 語句的各種引數。您可以根據需要使用一個或多個引數,並且它們之間用逗號分隔

引數 描述
DSN

DSN 引數指的是新建立或現有資料集的物理資料集名稱。DSN 值可以由 1 到 8 個字元長度的子名稱組成,用句點分隔,總長度為 44 個字元(字母數字)。以下是語法

DSN=物理資料集名稱

臨時資料集僅在作業期間需要儲存空間,並在作業完成後刪除。此類資料集表示為DSN=&name或根本不指定 DSN。

如果作業步驟建立的臨時資料集要在下一個作業步驟中使用,則將其引用為DSN=*.stepname.ddname。這稱為反向引用。

DISP

DISP 引數用於描述資料集的狀態,以及在作業步驟正常和異常完成時結束時的處理方式。僅當資料集在同一作業步驟中建立和刪除時(如臨時資料集),DD 語句中不需要 DISP。以下是語法

DISP=(狀態, 正常處理方式, 異常處理方式)

以下是狀態的有效值

  • NEW:資料集由作業步驟新建立。上面示例中的 OUTPUT1。

  • OLD:資料集已建立,將在作業步驟中被覆蓋。作業步驟獲得對資料集的獨佔訪問許可權,在作業步驟完成之前,其他任何作業都無法訪問此資料集。

  • SHR:資料集已建立,將在作業步驟中讀取。多個作業可以同時讀取該資料集。示例:INPUT1 和 INPUT2。

  • MOD:資料集已建立。當需要將新記錄追加到現有資料集時(不會覆蓋現有記錄),將使用此處理方式。

正常處理方式引數可以採用以下值之一

  • CATLG、UNCATLG、DELETE、PASS 和 KEEP

異常處理方式引數可以採用以下值之一

  • CATLG、UNCATLG、DELETE 和 KEEP

以下是 CATLG、UNCATLG、DELETE、PASS 和 KEEP 引數的描述

  • CATLG:資料集保留在系統目錄中。

  • UNCATLG:資料集保留,但系統目錄條目被刪除。

  • KEEP:保留資料集,而不更改任何目錄條目。KEEP 是 VSAM 檔案的唯一有效處理方式。這僅用於永久資料集。

  • DELETE:從使用者和系統目錄中刪除資料集。

  • PASS:這僅對正常處理方式有效。當需要傳遞資料集並在 JCL 中的下一個作業步驟中進行處理時使用。

如果未指定 DISP 的任何子引數,則預設值為:

  • 狀態:NEW 是預設值。

  • 正常處理方式:如果狀態為 NEW,則預設正常處理方式為 DELETE,否則為 KEEP。

  • 異常處理方式:與正常處理方式相同。

DCB

資料控制塊 (DCB) 引數詳細說明了資料集的物理特性。此引數對於在作業步驟中新建立的資料集是必需的。

LRECL 是資料集中每個記錄的長度。

RECFM 是資料集的記錄格式。RECFM 可以儲存 FB、V 或 VB 值。FB 是固定塊組織,其中一個或多個邏輯記錄分組在一個物理塊中。V 是可變組織,其中一個可變長度邏輯記錄放置在一個物理塊中。VB 是可變塊組織,其中一個或多個可變長度邏輯記錄放置在一個物理塊中。

BLKSIZE 是物理塊的大小。塊越大,FB 或 VB 檔案的記錄數就越多。

DSORG 是資料集組織的型別。DSORG 可以儲存 PS(物理順序)、PO(分割槽組織)和 DA(直接組織)值。

當需要將一個數據集的 DCB 值複製到同一作業步驟或 JCL 中的另一個數據集時,將其指定為 DCB=*.stepname.ddname,其中 stepname 是作業步驟的名稱,ddname 是複製 DCB 的資料集。

請檢視下面的示例,其中 RECFM=FB、LRECL=80 構成資料集 OUTPUT1 的 DCB。

SPACE

SPACE 引數指定 DASD(直接存取儲存磁碟)中資料集所需的儲存空間。以下是語法

SPACE=(空間單位, (主空間, 次空間, 目錄), RLSE)

以下是所有使用引數的描述

  • 空間單位:可以是 CYL(柱面)、TRK(磁軌)或 BLKSIZE(塊大小)之一。

  • 主空間:這是資料集所需的主儲存空間。

  • 次空間:當主儲存空間不足時,這是所需的額外儲存空間。

  • 目錄:如果資料集是包含成員的 PDS(分割槽資料集),則這是所需的目錄塊。

  • RLSE:用於在作業完成後釋放未使用的空間。

UNIT

UNIT 和 VOL 引數列在系統目錄中以供編目資料集使用,因此只需使用物理 DSN 名稱即可訪問。但對於未編目資料集,DD 語句應包含這些引數。對於要建立的新資料集,可以指定 UNIT/VOL 引數,或者 Z/OS 分配合適的裝置和卷。

UNIT 引數指定儲存資料集的裝置型別。可以使用硬體地址或裝置型別組來識別裝置型別。以下是語法

UNIT=DASD | SYSDA

其中 DASD 代表直接存取儲存裝置,SYSDA 代表系統直接存取,並指下一個可用的磁碟儲存裝置。

VOL

VOL 引數指定由 UNIT 引數標識的裝置上的卷號。以下是語法

VOL=SER=(v1,v2)

其中 v1、v2 是卷序列號。您也可以使用以下語法

VOL=REF=*.DDNAME

其中 REF 是對 JCL 中任何先前作業步驟中資料集的卷序列號的反向引用。

SYSOUT

到目前為止討論的 DD 語句引數對應於儲存在資料集中的資料。SYSOUT 引數根據指定的類別將資料定向到輸出裝置。以下是語法

SYSOUT=類別

其中,如果類別為 A,則將其輸出定向到印表機,如果類別為*,則將其輸出定向到與 JOB 語句中 MSGCLASS 引數相同的目的地。

示例

以下是一個示例,它使用了 DD 語句以及上面解釋的各種引數

//TTYYSAMP JOB 'TUTO',CLASS=6,MSGCLASS=X,REGION=8K,
//         NOTIFY=&SYSUID
//*
//STEP010  EXEC PGM=ICETOOL,ADDRSPC=REAL
//*
//INPUT1   DD DSN=TUTO.SORT.INPUT1,DISP=SHR
//INPUT2   DD DSN=TUTO.SORT.INPUT2,DISP=SHR,UNIT=SYSDA,
//         VOL=SER=(1243,1244)
//OUTPUT1  DD DSN=MYFILES.SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),
//         RECFM=FB,LRECL=80,SPACE=(CYL,(10,20))
//OUTPUT2  DD SYSOUT=*
廣告