JCL - คำชี้แจง DD

ชุดข้อมูลคือไฟล์เมนเฟรมที่มีการจัดระเบียบในรูปแบบเฉพาะ ชุดข้อมูลจะถูกเก็บไว้ใน Direct Access Storage Device (DASD) หรือเทปของเมนเฟรมและเป็นพื้นที่จัดเก็บข้อมูลพื้นฐาน หากข้อมูลเหล่านี้จำเป็นต้องใช้ / สร้างในโปรแกรมแบตช์ชื่อฟิสิคัลของไฟล์ (เช่นชุดข้อมูล) พร้อมกับรูปแบบไฟล์และองค์กรจะถูกเข้ารหัสใน JCL

คำจำกัดความของชุดข้อมูลแต่ละชุดที่ใช้ใน JCL จะได้รับโดยใช้ DD statement. ทรัพยากรอินพุตและเอาต์พุตที่ต้องการโดยขั้นตอนงานจำเป็นต้องได้รับการอธิบายไว้ในคำสั่ง DD พร้อมข้อมูลเช่นองค์กรชุดข้อมูลข้อกำหนดในการจัดเก็บและความยาวของบันทึก

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง JCL DD:

//DD-name DD Parameters

คำอธิบาย

ให้เราดูคำอธิบายของคำศัพท์ที่ใช้ในไวยากรณ์คำสั่ง DD ข้างต้น

DD-NAME

DD-NAME ระบุชุดข้อมูลหรือทรัพยากรอินพุต / เอาต์พุต หากนี่เป็นไฟล์อินพุต / เอาต์พุตที่ใช้โดยโปรแกรม COBOL / Assembler ไฟล์จะถูกอ้างอิงโดยชื่อนี้ภายในโปรแกรม

DD

นี่คือคีย์เวิร์ดสำหรับระบุว่าเป็นคำสั่ง DD

พารามิเตอร์

ต่อไปนี้เป็นพารามิเตอร์ต่างๆสำหรับคำสั่ง DD คุณสามารถใช้พารามิเตอร์อย่างน้อยหนึ่งพารามิเตอร์ตามข้อกำหนดและคั่นด้วยเครื่องหมายจุลภาค:

พารามิเตอร์ คำอธิบาย
DSN

พารามิเตอร์ DSN อ้างถึงชื่อชุดข้อมูลจริงของชุดข้อมูลที่สร้างขึ้นใหม่หรือที่มีอยู่ ค่า DSN สามารถประกอบด้วยชื่อย่อยแต่ละชื่อที่มีความยาว 1 ถึง 8 อักขระคั่นด้วยจุดและความยาวรวม 44 อักขระ (ตัวเลขและตัวอักษร) ต่อไปนี้เป็นไวยากรณ์:

DSN=Physical Dataset Name

Temporary datasetsต้องการพื้นที่จัดเก็บสำหรับระยะเวลางานเท่านั้นและจะถูกลบเมื่องานเสร็จสิ้น ชุดข้อมูลดังกล่าวแสดงเป็นDSN=&name หรือเพียงไม่ระบุ DSN

หากจะใช้ชุดข้อมูลชั่วคราวที่สร้างขึ้นโดยขั้นตอนงานในขั้นตอนงานถัดไปชุดข้อมูลดังกล่าวจะอ้างอิงเป็น DSN=*.stepname.ddname. นี้เรียกว่า Backward Referencing.

DISP

พารามิเตอร์ DISP ใช้เพื่ออธิบายสถานะของชุดข้อมูลการจัดการเมื่อสิ้นสุดขั้นตอนงานในการเสร็จสิ้นปกติและผิดปกติ ไม่จำเป็นต้องใช้ DISP ในคำสั่ง DD ก็ต่อเมื่อชุดข้อมูลถูกสร้างและลบในขั้นตอนงานเดียวกัน (เช่นชุดข้อมูลชั่วคราว) ต่อไปนี้เป็นไวยากรณ์:

DISP=(status, normal-disposition, abnormal-disposition)

ต่อไปนี้เป็นค่าที่ถูกต้องสำหรับ status:

  • NEW: ชุดข้อมูลถูกสร้างขึ้นใหม่โดยขั้นตอนงาน OUTPUT1 ในตัวอย่างด้านบน

  • OLD: ชุดข้อมูลถูกสร้างขึ้นแล้วและจะถูกเขียนทับในขั้นตอนงาน ขั้นตอนงานจะได้รับสิทธิ์การเข้าถึงพิเศษในชุดข้อมูลและไม่มีงานอื่นใดที่สามารถเข้าถึงชุดข้อมูลนี้ได้จนกว่าขั้นตอนงานจะเสร็จสิ้น

  • SHR: ชุดข้อมูลถูกสร้างขึ้นแล้วและจะอ่านในขั้นตอนงาน ชุดข้อมูลสามารถอ่านได้จากหลายงานในเวลาเดียวกัน ตัวอย่าง: INPUT1 และ INPUT2

  • MOD: ชุดข้อมูลถูกสร้างขึ้นแล้ว การจัดการนี้จะถูกใช้เมื่อจำเป็นต้องต่อท้ายระเบียนใหม่เข้ากับชุดข้อมูลที่มีอยู่ (ระเบียนที่มีอยู่จะไม่ถูกเขียนทับ)

normal-disposition พารามิเตอร์สามารถรับค่าใดค่าหนึ่งต่อไปนี้

  • CATLG, UNCATLG, DELETE, PASS และ KEEP

abnormal-disposition พารามิเตอร์สามารถรับค่าใดค่าหนึ่งต่อไปนี้

  • CATLG, UNCATLG, DELETE และ KEEP

นี่คือคำอธิบายของพารามิเตอร์ CATLG, UNCATLG, DELETE, PASS และ KEEP:

  • CATLG : ชุดข้อมูลจะถูกเก็บไว้พร้อมกับรายการในแค็ตตาล็อกระบบ

  • UNCATLG : ชุดข้อมูลยังคงอยู่ แต่รายการแค็ตตาล็อกระบบจะถูกลบออก

  • KEEP: ชุดข้อมูลจะถูกเก็บไว้โดยไม่เปลี่ยนแปลงรายการแค็ตตาล็อกใด ๆ KEEP เป็นเพียงการจัดการที่ถูกต้องสำหรับไฟล์ VSAM ซึ่งจะใช้สำหรับชุดข้อมูลถาวรเท่านั้น

  • DELETE : ชุดข้อมูลถูกลบออกจากแค็ตตาล็อกผู้ใช้และระบบ

  • PASS: สิ่งนี้ใช้ได้สำหรับการจัดการตามปกติเท่านั้น ใช้เมื่อชุดข้อมูลจะถูกส่งผ่านและประมวลผลโดยขั้นตอนงานถัดไปใน JCL

เมื่อไม่ได้ระบุพารามิเตอร์ย่อยของ DISP ค่าเริ่มต้นจะเป็นดังนี้:

  • status : NEW คือค่าเริ่มต้น

  • normal-disposition : หากสถานะเป็นใหม่การจัดการปกติเริ่มต้นคือ DELETE มิฉะนั้นจะเป็น KEEP

  • abnormal-disposition : เหมือนกับการจัดการปกติ

DCB

พารามิเตอร์ Data Control Block (DCB) ให้รายละเอียดลักษณะทางกายภาพของชุดข้อมูล พารามิเตอร์นี้จำเป็นสำหรับชุดข้อมูลที่สร้างขึ้นใหม่ในขั้นตอนงาน

LRECL คือความยาวของแต่ละเร็กคอร์ดที่อยู่ในชุดข้อมูล

RECFM คือรูปแบบบันทึกของชุดข้อมูล RECFM สามารถเก็บค่า FB, V หรือ VB FB เป็นองค์กรบล็อกแบบคงที่ซึ่งมีการจัดกลุ่มระเบียนเชิงตรรกะตั้งแต่หนึ่งรายการขึ้นไปภายในบล็อกเดียว V คือการจัดระเบียบแบบแปรผันที่มีการวางเร็กคอร์ดตรรกะความยาวตัวแปรหนึ่งไว้ในบล็อกทางกายภาพ VB คือองค์กร Variable Block ที่มีบันทึกตรรกะความยาวตัวแปรตั้งแต่หนึ่งตัวขึ้นไปภายในบล็อกทางกายภาพ

BLKSIZE คือขนาดของบล็อกจริง ยิ่งบล็อกมีขนาดใหญ่จำนวนระเบียนสำหรับไฟล์ FB หรือ VB ก็ยิ่งมากขึ้น

DSORG คือประเภทขององค์กรชุดข้อมูล DSORG สามารถเก็บค่า PS (Physical Sequential), PO (Partitioned Organization) และ DA (Direct Organization)

เมื่อมีความจำเป็นต้องจำลองค่า DCB ของชุดข้อมูลหนึ่งไปยังอีกชุดหนึ่งภายในขั้นตอนงานเดียวกันหรือ JCL จะระบุเป็น DCB = * stepname.ddname โดยที่ stepname คือชื่อของขั้นตอนงานและ ddname คือชุดข้อมูลที่ DCB ถูกคัดลอก

ตรวจสอบตัวอย่างด้านล่างโดยที่ RECFM = FB, LRECL = 80 สร้าง DCB ของชุดข้อมูล OUTPUT1

SPACE

พารามิเตอร์ SPACE ระบุพื้นที่ที่ต้องการสำหรับชุดข้อมูลใน DASD (Direct Access Storage Disk) ต่อไปนี้เป็นไวยากรณ์:

SPACE=(spcunits, (pri, sec, dir), RLSE)

นี่คือคำอธิบายของพารามิเตอร์ที่ใช้ทั้งหมด:

  • spcunits : อาจเป็นหนึ่งใน CYL (Cylinder), TRK (Tracks) หรือ BLKSIZE (Block Size)

  • pri : นี่คือพื้นที่หลักที่จำเป็นสำหรับชุดข้อมูล

  • sec : นี่คือพื้นที่เพิ่มเติมที่จำเป็นเมื่อพื้นที่หลักไม่เพียงพอ

  • ir : นี่คือบล็อกไดเร็กทอรีที่จำเป็นหากชุดข้อมูลเป็น PDS (Partitioned Dataset) ที่มีสมาชิกอยู่ภายใน

  • RLSE : ใช้เพื่อปล่อยพื้นที่ที่ไม่ได้ใช้เมื่องานเสร็จสิ้น

UNIT

พารามิเตอร์ UNIT และ VOL แสดงอยู่ในแค็ตตาล็อกระบบสำหรับชุดข้อมูลที่ทำแค็ตตาล็อกและด้วยเหตุนี้จึงสามารถเข้าถึงได้ด้วยชื่อ DSN ที่มีอยู่จริง แต่สำหรับชุดข้อมูลที่ไม่ได้บันทึกรายการคำสั่ง DD ควรมีพารามิเตอร์เหล่านี้ สำหรับชุดข้อมูลใหม่ที่จะสร้างขึ้นสามารถระบุพารามิเตอร์ UNIT / VOL หรือ Z / OS จะจัดสรรอุปกรณ์และโวลุ่มที่เหมาะสม

พารามิเตอร์ UNIT ระบุประเภทของอุปกรณ์ที่จัดเก็บชุดข้อมูล สามารถระบุประเภทอุปกรณ์ได้โดยใช้ Hardware Address หรือ Device type group ต่อไปนี้เป็นไวยากรณ์:

UNIT=DASD | SYSDA

โดยที่ DASD ย่อมาจาก Direct Access Storage Device และ SYSDA ย่อมาจาก System Direct Access และหมายถึงอุปกรณ์จัดเก็บดิสก์ที่มีอยู่ถัดไป

VOL

พารามิเตอร์ VOL ระบุหมายเลขโวลุ่มบนอุปกรณ์ที่ระบุโดยพารามิเตอร์ UNIT ต่อไปนี้เป็นไวยากรณ์:

VOL=SER=(v1,v2)

โดยที่ v1, v2 คือหมายเลขซีเรียลของโวลุ่ม คุณสามารถใช้ไวยากรณ์ต่อไปนี้ได้เช่นกัน:

VOL=REF=*.DDNAME

โดยที่ REF คือการอ้างอิงย้อนกลับไปยังหมายเลขซีเรียลของไดรฟ์ข้อมูลของชุดข้อมูลในขั้นตอนงานก่อนหน้านี้ใน JCL

SYSOUT

พารามิเตอร์คำสั่ง DD ที่กล่าวถึงนั้นสอดคล้องกับข้อมูลที่จัดเก็บในชุดข้อมูล พารามิเตอร์ SYSOUT กำหนดทิศทางข้อมูลไปยังอุปกรณ์เอาต์พุตตามคลาสที่ระบุ ต่อไปนี้เป็นไวยากรณ์

SYSOUT=class

โดยที่ถ้าคลาสเป็น A จะส่งเอาต์พุตไปยังเครื่องพิมพ์และถ้าคลาสเป็น * จากนั้นนำเอาต์พุตไปยังปลายทางเดียวกันกับพารามิเตอร์ MSGCLASS ในคำสั่ง JOB

ตัวอย่าง

ต่อไปนี้เป็นตัวอย่างซึ่งใช้ประโยชน์จากคำสั่ง 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=*