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:
ก normal-disposition พารามิเตอร์สามารถรับค่าใดค่าหนึ่งต่อไปนี้
ก abnormal-disposition พารามิเตอร์สามารถรับค่าใดค่าหนึ่งต่อไปนี้
นี่คือคำอธิบายของพารามิเตอร์ CATLG, UNCATLG, DELETE, PASS และ KEEP:
เมื่อไม่ได้ระบุพารามิเตอร์ย่อยของ DISP ค่าเริ่มต้นจะเป็นดังนี้:
|
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) นี่คือคำอธิบายของพารามิเตอร์ที่ใช้ทั้งหมด:
|
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=*