อ่าน 6 นาที
กอฟฟ์
ข้อกำหนด GOFF (Generalized Object File Format) ได้รับการพัฒนาสำหรับ ระบบปฏิบัติการ MVS ของ IBM เพื่อแทนที่ IBM OS/360 Object File Format เพื่อชดเชยจุดอ่อนในรูปแบบเก่า [ 1 ]
กอฟฟ์
ข้อกำหนดGOFF (Generalized Object File Format) ได้รับการพัฒนาสำหรับ ระบบปฏิบัติการMVS ของ IBM เพื่อแทนที่ IBM OS/360 Object File Formatเพื่อชดเชยจุดอ่อนในรูปแบบเก่า[ 1 ]
พื้นหลัง
รูปแบบไฟล์อ็อบเจ็กต์ IBM OS/360 ดั้งเดิมได้รับการพัฒนาขึ้นในปี 1964 สำหรับคอมพิวเตอร์เมนเฟรมIBM System/360 รุ่นใหม่ รูปแบบนี้ยังถูกใช้โดยผู้ผลิต เมนเฟรม แบบเสียบปลั๊กเข้ากันได้และแบบทำงานคล้ายกัน รวมถึงUnivac 90/60, 90/70 และ 90/80และ Fujitsu B2800 รูปแบบนี้ได้รับการขยายเพื่อเพิ่มระเบียนเชิงสัญลักษณ์และข้อมูลเพิ่มเติมเกี่ยวกับโมดูล รวมถึงการสนับสนุนสำหรับขั้นตอนและฟังก์ชันที่มีชื่อยาวกว่า 8 ตัวอักษร แม้ว่าสิ่งนี้จะช่วยได้ แต่ก็ยังไม่ให้ข้อมูลที่ได้รับการปรับปรุงซึ่งจำเป็นสำหรับภาษาการเขียนโปรแกรมที่ซับซ้อนกว่าในปัจจุบันและคุณสมบัติขั้นสูงกว่า เช่น อ็อบเจ็กต์ คุณสมบัติ และเมธอด การสนับสนุน Unicodeและเมธอดเสมือน
รูปแบบไฟล์ออบเจ็กต์ GOFF ได้รับการพัฒนาโดย IBM ประมาณปี 1995 เพื่อแก้ไขปัญหาเหล่านี้[ 2 ] การกล่าวถึงรูปแบบนี้ครั้งแรกสุดอยู่ในข้อมูลเบื้องต้นเกี่ยวกับแอสเซมเบลอร์ระดับสูงตัวใหม่[ 3 ] GOFF รองรับข้อมูลการดีบักแบบฝังตัวในรูปแบบข้อมูลที่เกี่ยวข้อง (ADATA) แต่ไม่รองรับเรคอร์ด SYM รุ่นเก่าที่สร้างโดยตัวเลือก TEST โปรดทราบว่ารูปแบบไฟล์ออบเจ็กต์ OS/360 ถูกแทนที่ด้วยรูปแบบ GOFF เท่านั้น ไม่ได้ถูกยกเลิก และยังคงใช้งานโดยแอสเซมเบลอร์และคอมไพเลอร์ภาษาที่ภาษานั้นสามารถทนต่อข้อจำกัดของรูปแบบเก่าได้
อนุสัญญา
บทความนี้จะใช้คำว่า "โมดูล" เพื่ออ้างถึงชื่อหรือสัญลักษณ์ที่เทียบเท่าใดๆ ที่ใช้เป็นตัวระบุสำหรับส่วนของโค้ดหรือข้อมูลที่อยู่นอกขอบเขตที่อ้างอิงถึง[ก]โมดูลอาจอ้างถึงซับรูทีน ฟังก์ชัน ข้อมูล Fortran Common หรือ Block Data อ็อบเจ็กต์หรือคลาส เมธอดหรือคุณสมบัติของอ็อบเจ็กต์หรือคลาส หรือรูทีนหรือตัวระบุที่มีชื่ออื่นๆ ที่อยู่นอกขอบเขตเฉพาะนั้นซึ่งอ้างอิงถึงชื่อภายนอก โปรดทราบว่าการใช้คำว่า "โมดูล" ในบทความนี้ใช้เพื่อให้เข้าใจหัวข้อได้ง่ายขึ้น แต่ไม่เหมือนกับความหมายที่ IBM ใช้คำว่า "โมดูล"
คำว่า "แอสเซมเบลอร์" หมายถึงโปรแกรมที่แปลงภาษาแอสเซมบลีเป็นรหัสเครื่องรวมถึง"การประกอบ"หมายถึงกระบวนการใช้โปรแกรมดังกล่าว และ"การคอมไพล์"หมายถึงกระบวนการใช้ " คอมไพเลอร์ " ซึ่งทำหน้าที่เดียวกันสำหรับภาษาโปรแกรมระดับสูง สำหรับบทความนี้ คำว่า "คอมไพล์" และ "คอมไพเลอร์" สามารถใช้แทนกันได้กับคำว่า "ประกอบ" และ "แอสเซมเบลอร์"
ตัวเลขที่ใช้ในบทความนี้แสดงในรูปแบบดังต่อไปนี้: เว้นแต่จะระบุว่าเป็นเลขฐานสิบหก (ฐาน 16) ตัวเลขทั้งหมดที่ใช้จะเป็นเลขฐานสิบ (ฐาน 10) เมื่อจำเป็นต้องแสดงตัวเลขในรูปแบบเลขฐานสิบหก จะใช้รูปแบบมาตรฐานของภาษาแอสเซมเบลอร์เมนเฟรม โดยใช้ตัวอักษร X ตัวใหญ่ นำหน้าตัวเลข แสดงตัวอักษรฐานสิบหกในตัวเลขด้วยตัวพิมพ์ใหญ่ และใส่เครื่องหมายอัญประกาศเดี่ยวครอบตัวเลข เช่น ตัวเลข 15deadbeef 16จะแสดงเป็น X'15DEADBEEF'
ในบทความนี้ "ไบต์" หมายถึง 8 บิต และเว้นแต่จะระบุไว้เป็นอย่างอื่น "ไบต์" กับ "อักขระ" คือสิ่งเดียวกัน อักขระในEBCDICก็มีขนาด 8 บิตเช่นกัน เมื่อโปรแกรมของผู้ใช้ใช้ชุดอักขระหลายไบต์ (เช่นยูนิโค้ด ) จะใช้สองไบต์ (หรือมากกว่า)
ข้อกำหนดและข้อจำกัด
รูปแบบนี้คล้ายกับรูปแบบไฟล์ออบเจ็กต์ OS/360 แต่เพิ่มข้อมูลเพิ่มเติมเพื่อใช้ในการสร้างแอปพลิเคชัน[ 4 ]
- ไฟล์ GOFF อาจเป็นระเบียนที่มีความยาวคงที่หรือแปรผันได้
- ระเบียน GOFF ต้องพอดีกับระเบียนเดียวของระบบไฟล์ พื้นฐานโดยสมบูรณ์ ไฟล์ GOFF ไม่ใช่ไฟล์ประเภทสตรีม
- ระเบียนที่มีความยาวคงที่ต้องมีขนาด 80 ไบต์ ส่วนระเบียนที่มีความยาวแปรผันได้นั้น ขนาดขั้นต่ำคือ 56 ไบต์ ในกรณีของระเบียนที่มีความยาวคงที่ จะมีไบต์ที่ไม่ได้ใช้งานอยู่ท้ายระเบียน ไบต์เหล่านี้จะต้องถูกตั้งค่าเป็นเลขฐานสองศูนย์
- โปรแกรมที่อ่าน (หรือเขียน) เรคอร์ด GOFF ไม่ควรตั้งสมมติฐานเกี่ยวกับรูปแบบภายในของเรคอร์ด ระบบปฏิบัติการนั้นถือว่าสามารถจัดเตรียมเรคอร์ดที่มีความยาวคงที่หรือแปรผันได้โดยที่โปรแกรมที่อ่านเรคอร์ดไม่จำเป็นต้องรับรู้ถึงการจัดการไฟล์ภายในของระบบปฏิบัติการ ความยาวของเรคอร์ดไม่ได้เป็นส่วนหนึ่งของตัวเรคอร์ดเอง
- ค่าไบนารีจะถูกจัดเก็บใน รูปแบบ บิ๊กเอนเดียนเช่น ค่า 1 จะเป็น X'01' สำหรับค่า 8 บิต, X'0001' สำหรับค่า 16 บิต, X'00000001' สำหรับค่า 32 บิต และ X'0000000000000001' สำหรับค่า 64 บิต
- บิตจะนับจากซ้ายไปขวา โดยบิตที่ 0 คือบิตซ้ายสุดในไบต์หรือเวิร์ด
- ไฟล์ GOFF ที่ใช้งานบน ระบบUnixจำเป็นต้องมีระเบียนที่มีความยาวคงที่
- สามารถบันทึกข้อมูลต่อเนื่องได้ในข้อมูลถัดไป ในกรณีที่บันทึกข้อมูลต่อเนื่อง จะต้องไม่มีบันทึกข้อมูลใดๆ คั่นอยู่ระหว่างบันทึกข้อมูลที่กำลังต่อเนื่องกับบันทึกข้อมูลต่อเนื่องนั้น
- ไฟล์ออบเจ็กต์ GOFF เริ่มต้นด้วยเรคอร์ด HDR และสิ้นสุดด้วยเรคอร์ด END โดยเรคอร์ด END ควรระบุจำนวนเรคอร์ด GOFF (ไม่ใช่จำนวนเรคอร์ดจริง) ในไฟล์
- คอมไพเลอร์หรือแอสเซมเบลอร์ของภาษาสามารถสร้างไฟล์ GOFF หลายไฟล์ในการคอมไพล์/แอสเซมบลีครั้งเดียวได้ แต่ไฟล์ GOFF แต่ละไฟล์ต้องแยกจากกัน หมายความว่า โมดูลหรือหน่วยการคอมไพล์ ซึ่งประกอบด้วยเรคอร์ด HDR, ESD, TXT และอื่นๆ ที่คั่นกลาง และจบด้วยเรคอร์ด END อาจตามด้วยหน่วยการคอมไพล์อื่นที่เริ่มต้นด้วย HDR และจบด้วย END เป็นต้น ตามความจำเป็น
- ชื่อโมดูลและชื่อคลาสมีความไวต่อตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก โมดูลที่ชื่อว่า "exit" (ตามที่ใช้ใน ภาษา ซี ) ไม่จำเป็นต้องเหมือนกับ "EXIT" ที่ใช้ในภาษาฟอร์ทราน
- ข้อกำหนดบางประการที่ใช้กับรูปแบบไฟล์ออบเจ็กต์ OS/360 จะถูกนำมาใช้กับรูปแบบไฟล์ออบเจ็กต์ GOFF ด้วย ซึ่งรวมถึง:
- หากไม่ได้ระบุไว้เป็นอย่างอื่น อักขระทั้งหมดอยู่ใน ชุดอักขระ EBCDICยกเว้นชื่อภายนอกตามที่ระบุไว้ด้านล่าง
- รายการ ESD (โปรแกรมหลัก, ซับรูทีน, ฟังก์ชัน, FORTRAN Common, เมธอด และคุณสมบัติในอ็อบเจ็กต์) ต้องมีการกำหนดหมายเลขเริ่มต้นที่ 1 และแต่ละรายการใหม่จะต้องมีหมายเลขถัดไปตามลำดับ โดยไม่มี 'ช่องว่าง' ในลำดับหมายเลข
- ต้องมีการกำหนดรายการ ESD ก่อนที่ระเบียนอื่น (เช่น ระเบียน TXT หรือ RLD) จะอ้างอิงถึงรายการนั้น
- แต่ละระเบียน ESD จะมีรายการ ESD เพียงรายการเดียวเท่านั้น (ซึ่งแตกต่างจากรูปแบบเดิมที่อนุญาตให้มีรายการ ESD ได้มากถึง 3 รายการในแต่ละระเบียน ESD)
- บันทึก RLD (พจนานุกรมการย้ายถิ่นฐาน[ 5 ] ) อาจมีรายการตั้งแต่หนึ่งรายการขึ้นไป และบันทึก RLD อาจต่อเนื่องไปยังบันทึกถัดไป
- เพื่อให้มั่นใจถึงความเข้ากันได้ในอนาคต ฟิลด์ที่ระบุว่า 'สงวนไว้' ควรตั้งค่าเป็นเลขฐานสองศูนย์
- มาตรฐาน GOFF ไม่ได้กำหนดชุดอักขระที่ใช้สำหรับชื่อภายนอก แต่มีข้อกำหนดสำหรับไฟล์เพื่อระบุว่ากำลังใช้ชุดอักขระใด (เพื่อรองรับ ชื่อโมดูลแบบ Unicode ที่ใช้ชุดอักขระสองไบต์ ) อย่างไรก็ตาม ผลิตภัณฑ์ของ IBM บางอย่างอนุญาตให้ใช้อักขระสำหรับชื่อภายนอกและตัวระบุอื่นๆ ได้เฉพาะในช่วงที่จำกัด โดยทั่วไป (EBCDIC) จะเป็นค่าเลขฐานสิบหกตั้งแต่ X'41' ถึง X'FE' บวกกับอักขระเปลี่ยนตำแหน่งเข้าและออก คือ X'0F' และ X'0E' ตามลำดับ
- รูปแบบใหม่นี้รองรับชื่อคลาส ซึ่งมีสองประเภท ได้แก่ ชื่อที่สงวนไว้และ ชื่อที่ผู้ใช้กำหนดหรือชื่อที่ไม่สงวนไว้ชื่อคลาสทุกชื่อมีความยาวสูงสุด 16 ตัวอักษร
- ชื่อคลาสที่สงวนไว้ประกอบด้วยตัวอักษรตัวเดียว เครื่องหมายขีดล่าง และอักขระ 1 ถึง 14 ตัว ชื่อคลาสที่สงวนไว้ที่ขึ้นต้นด้วยB_สงวนไว้สำหรับตัวผูกข้อมูล ชื่อคลาสที่สงวนไว้ที่ขึ้นต้นด้วยC_ที่ทำเครื่องหมายว่าสามารถโหลดได้สงวนไว้สำหรับโปรแกรมที่สร้างขึ้นเพื่อใช้กับสภาพแวดล้อมภาษาของ IBM (LE) ชื่อคลาสที่ขึ้นต้นด้วยC_ที่ไม่ได้ทำเครื่องหมายว่าสามารถโหลดได้ รวมถึงคลาสที่ขึ้นต้นด้วยX_, Y_หรือZ_สามารถใช้งานได้ทั่วไปโดยไม่สงวนไว้
- ชื่อคลาสที่ผู้ใช้กำหนดอาจเป็นตัวพิมพ์เล็กก็ได้
- ชื่อคลาสไม่ใช่สัญลักษณ์ภายนอก
- คู่มือของ IBM ไม่ได้ระบุว่ารูปแบบนี้ใช้โค้ดเพจ ใด แต่เพื่อจุดประสงค์ของบทความนี้ เราจะถือว่าคือ 037 แม้ว่านั่นไม่น่าจะส่งผลกระทบต่อคำสั่งเครื่องและข้อมูลที่จัดเก็บในรูปแบบนี้ก็ตาม
- คลาสต่อไปนี้ที่ใช้โดยตัวผูกข้อมูลอาจถูกอ้างอิงหากจำเป็นสำหรับวัตถุประสงค์ในการคอมไพล์:
| บี_อีเอสดี | คลาสพจนานุกรมสัญลักษณ์ภายนอก |
| บี_เท็กซ์ | คลาสข้อความ |
| บีอาร์แอลดี | พจนานุกรมการย้ายถิ่นฐาน |
| บี_SYM | คลาสตารางสัญลักษณ์ภายใน |
| บี_ไอดีอาร์แอล | คลาสข้อมูลระบุตัวตนตัวแปลภาษา |
| บี_พีอาร์วี | คลาสรีจิสเตอร์เสมือน |
| บี_ไอดรู | คลาสข้อมูลระบุตัวตนที่ผู้ใช้กำหนด |
- ชื่อคลาสต่อไปนี้ถูกสงวนไว้โดยตัวผูกข้อมูลและแอปพลิเคชันของผู้ใช้ไม่สามารถเข้าถึงได้:
| บี_ไอดีอาร์บี | ข้อมูลแฟ้มเอกสาร |
| บี_ไอดีอาร์ซี | ข้อมูล SUPER-Zap |
| บี_อิมเพกซ์พี | ตารางนำเข้า-ส่งออก |
| บี_ลิท | ตารางข้อมูลการโหลด |
| บี_แมป | ข้อมูลการทำแผนที่ |
- ข้อมูลตารางสัญลักษณ์ของไฟล์อ็อบเจ็กต์ SYM จากระเบียนรูปแบบไฟล์อ็อบเจ็กต์ 360 ไม่สามารถใช้งานได้กับไฟล์อ็อบเจ็กต์ GOFF ต้องใช้ระเบียน ADATA (ระเบียนย่อยของ TXT) แทน
ข้อจำกัดขนาด
ตามคู่มือผู้ใช้สำหรับz/OS XL C/C++ ระบุว่า "ขนาดสูงสุดของวัตถุ GOFF คือ 1 กิกะไบต์" [ 6 ]
ประเภทบันทึก
เช่นเดียวกับรูปแบบ OS/360 รุ่นเก่า ข้อมูลในไฟล์ออบเจ็กต์จะถูกแบ่งออกเป็น 6 ประเภท ได้แก่ ข้อมูลที่เพิ่มเข้ามา ข้อมูลที่ลบออก และข้อมูลที่แก้ไข:
- การบันทึก HDR (ซึ่งเป็นคุณสมบัติใหม่) จะต้องเกิดขึ้นก่อน เนื่องจากเป็นการกำหนดส่วนหัวของไฟล์ออบเจ็กต์
- ระเบียน ESD กำหนดโปรแกรมหลัก ซับรูทีน ฟังก์ชัน ส่วนดัมมี่ ฟอร์ทรานคอมมอน เมธอดและคุณสมบัติ และโมดูลหรือรูทีนใดๆ ที่สามารถเรียกใช้โดยโมดูลอื่นได้ ใช้เพื่อกำหนดโปรแกรมหรือส่วนของโปรแกรมที่ถูกคอมไพล์ในการทำงานของคอมไพเลอร์ครั้งนี้ และรูทีนภายนอกที่โปรแกรมใช้ (เช่น exit() ในภาษา C , CALL EXIT ในฟอร์ทราน ; new() และ dispose() ในภาษาปาสคาล ) ระเบียน ESD ควรอยู่ก่อนการอ้างอิงถึงสัญลักษณ์ ESD ใดๆ
- ระเบียน TXT ได้รับการขยายขอบเขต โดยนอกเหนือจากการบรรจุคำสั่งเครื่องหรือข้อมูลที่โมดูลเก็บไว้แล้ว ยังบรรจุระเบียนข้อมูลระบุตัวตน (IDR) (มากกว่า 20 ประเภท) ระเบียนข้อมูลที่เกี่ยวข้อง (ADATA) และข้อมูลเพิ่มเติมที่เกี่ยวข้องกับโมดูลอีกด้วย
- เรคอร์ด RLD ใช้สำหรับกำหนดตำแหน่งของแอดเดรสใหม่ ตัวอย่างเช่น โปรแกรมที่อ้างอิงแอดเดรสที่อยู่ภายในโมดูล 500 ไบต์ จะเก็บแอดเดรสไว้ภายในเป็น 500 แต่เมื่อโหลดโมดูลเข้าสู่หน่วยความจำ แอดเดรสนั้นอาจอยู่ที่ตำแหน่งอื่น ดังนั้นเรคอร์ด RLD จะแจ้งให้ตัวแก้ไขการเชื่อมโยงหรือตัวโหลดทราบว่าต้องเปลี่ยนแอดเดรสใดบ้าง นอกจากนี้ เมื่อโมดูลอ้างอิงถึงสัญลักษณ์ภายนอก โดยปกติแล้วจะตั้งค่าของสัญลักษณ์นั้นเป็นศูนย์ จากนั้นจึงเพิ่มรายการ RLD สำหรับสัญลักษณ์นั้นเพื่อให้ตัวโหลดหรือตัวแก้ไขการเชื่อมโยงสามารถเปลี่ยนแอดเดรสให้เป็นค่าที่ถูกต้องได้
- บันทึก LEN เป็นบันทึกใหม่ที่ระบุข้อมูลความยาวที่แน่นอน
- ระเบียน END ระบุจุดสิ้นสุดของโมดูล และอาจระบุจุดเริ่มต้นการทำงานของโปรแกรมด้วย ระเบียนนี้จะต้องเป็นระเบียนสุดท้ายในไฟล์
รูปแบบ
ระเบียน GOFF อาจมีความยาวคงที่หรือความยาวแปรผันได้ ความยาวขั้นต่ำเมื่อใช้ระเบียนความยาวแปรผันคือ 56 ตัวอักษร แม้ว่าระเบียนส่วนใหญ่จะยาวกว่านี้ก็ตาม ยกเว้นชื่อโมดูลและคลาส ตัวอักษรทั้งหมดอยู่ใน ชุดอักขระ EBCDICระบบที่ใช้ Unix ต้องใช้ระเบียนความยาวคงที่ (80 ไบต์) ระเบียนในไฟล์ความยาวคงที่ที่สั้นกว่าความยาวคงที่ควรเติมด้วยศูนย์ เพื่อแยกแยะระเบียน GOFF จากรูปแบบออบเจ็กต์ OS/360 รุ่นเก่า (ซึ่งไบต์แรกของระเบียนคือ X'02') หรือจากคำสั่งที่อาจมีอยู่ในไฟล์ ไบต์แรกของระเบียน GOFF แต่ละรายการจะเป็นค่าไบนารี X'03' เสมอ ในขณะที่คำสั่งต้องเริ่มต้นด้วยค่าอักขระอย่างน้อยช่องว่าง (X'40') ไบต์ถัดไป 2 ไบต์ของระเบียน GOFF ระบุประเภทระเบียน การต่อเนื่อง และเวอร์ชันของรูปแบบไฟล์ ไบต์ 3 ไบต์แรกนี้เรียกว่าฟิลด์ PTV
พีทีวี
ฟิลด์ PTV แสดงถึง 3 ไบต์แรกของทุกระเบียน GOFF
| ไบต์ | บิต | ค่า | วัตถุประสงค์ |
|---|---|---|---|
| 0 | ทั้งหมด | 03 | บ่งชี้จุดเริ่มต้นของบันทึก GOFF |
| 1 | 0-3 | 0 | บันทึก ESD (สัญลักษณ์ภายนอก) |
| 1 | บันทึก TXT (ข้อความ) | ||
| 2 | บันทึก RLD (การย้ายที่อยู่) | ||
| 3 | บันทึก LEN (ความยาว) | ||
| 4 | สิ้นสุด (End) บันทึก | ||
| X'5'-X'E' | ที่สงวนไว้ | ||
| เอ็กซ์เอฟ | บันทึก HDR (ส่วนหัว) | ||
| 4-5 | ที่สงวนไว้ | ||
| 6-7 | 00 | บันทึกเริ่มต้นที่ไม่ถูกบันทึกต่อในบันทึกถัดไป ค่านี้ควรเป็นค่าเดียวที่ใช้สำหรับบันทึก GOFF ที่มีความยาวแปรผันได้ | |
| 01 | บันทึกเริ่มต้นซึ่งจะต่อเนื่องไปยังบันทึกถัดไป | ||
| 10 | บันทึกต่อเนื่องไม่ได้ถูกบันทึกต่อในบันทึกถัดไป | ||
| 11 | บันทึกต่อเนื่องซึ่งจะปรากฏในบันทึกถัดไป | ||
| 2 | ทั้งหมด | 00 | หมายเลขเวอร์ชันของรูปแบบไฟล์วัตถุ ค่าทั้งหมด ยกเว้น X'00' เป็นค่าสงวนไว้ |
เอชอาร์ดี
จำเป็นต้องบันทึกภาพ HDR และต้องเป็นภาพบันทึกแรก
| ไบต์ | ขนาด | สนาม | ค่า | วัตถุประสงค์ |
|---|---|---|---|---|
| 0-2 | 3 | พีทีวี | X'03F000' | ค่าที่อนุญาตเท่านั้น; ขณะนี้ไม่สามารถบันทึก HDR ต่อได้ |
| 3-47 | 45 | 0 | ที่สงวนไว้ | |
| 48-51 | 4 | ระดับสถาปัตยกรรม | เลขฐานสอง 0 หรือ 1 | ระดับสถาปัตยกรรม GOFF; ค่าทั้งหมด ยกเว้น 0 และ 1 ถูกสงวนไว้ |
| 52-53 | 2 | ขนาดคุณสมบัติของโมดูล | ไบนารี | ความยาวของช่องคุณสมบัติโมดูล |
| 54-59 | 6 | 0 | ที่สงวนไว้ | |
| 60- | 0+ | คุณสมบัติของโมดูล | รายการคุณสมบัติของโมดูล (ไม่บังคับ) |
อีเอสดี
ระเบียน ESD ระบุชื่อสาธารณะสำหรับโมดูล โปรแกรมหลัก ซับรูทีน ขั้นตอน ฟังก์ชัน คุณสมบัติ หรือเมธอดในออบเจ็กต์ Fortran Common หรือจุดเริ่มต้นทางเลือก ระเบียน ESD สำหรับชื่อสาธารณะต้องมีอยู่ในไฟล์ก่อนที่จะมีการอ้างอิงถึงชื่อนั้นโดยระเบียนอื่นใด
| ไบต์ | ขนาด | สนาม | ค่า (หรือบิต) | วัตถุประสงค์ | |
|---|---|---|---|---|---|
| 0-2 | 3 | พีทีวี | X'030000' | บันทึก ESD ที่ไม่มีส่วนต่อขยาย | |
| X'030100' | บันทึก ESD ซึ่งจะต่อเนื่องในบันทึกถัดไป | ||||
| 3 | 1 | ประเภทสัญลักษณ์ | 00 | SD - คำจำกัดความของส่วน (Section Definition); ใช้สำหรับค่า SD, CM (Common) และ PC (Private Code ซึ่งเป็น SD ที่ไม่มีชื่อ) เดิม ค่า ESDID "Parent" ต้องเป็น 0 ใช้สำหรับกำหนดโปรแกรมหลัก โปรแกรมย่อย หรือฟังก์ชันที่โค้ดเป็นส่วนหนึ่งของไฟล์นี้ นอกจากนี้ยังใช้สำหรับ Fortran Common ด้วย | |
| 01 | ED - คำจำกัดความภายนอก (External Definition) ESDID "หลัก" ต้องไม่เป็นศูนย์ และต้องเป็นค่าของรายการ SD ที่อ้างอิงถึงสัญลักษณ์ภายนอกนี้ หากค่า RLD อ้างอิงถึงคลาสที่รายการนี้สังกัดอยู่ คลาสที่องค์ประกอบนี้อ้างอิงถึงจะต้องระบุไว้ในฟิลด์ชื่อภายนอก (External Name) ฟิลด์นี้ใช้สำหรับตั้งชื่อขั้นตอนหรือฟังก์ชันที่ถูกเรียกใช้ | ||||
| 02 | LD - การกำหนดป้ายกำกับ (Label Definition) ESDID "หลัก" ต้องไม่เป็นศูนย์ และเป็นค่าของรายการ SD ที่กำหนดสัญลักษณ์นี้ไว้ภายในตัวมันเอง สามารถใช้เพื่อสร้างชื่อแทนสำหรับโมดูล หรือเพื่อเปิดเผยส่วนหนึ่งของโมดูลเป็นรูทีนแยกต่างหาก ตัวอย่างเช่น ไลบรารีรันไทม์สำหรับภาษาโปรแกรมเฉพาะอาจมีคุณสมบัติบางอย่างที่ต้องใช้เอง แต่เป็นประโยชน์สำหรับโปรแกรมที่เขียนโดยใช้ภาษานั้น ดังนั้นจึงสามารถกำหนดป้ายกำกับให้กับคุณสมบัตินั้นเพื่อให้สามารถเรียกใช้ได้โดยตรง ตัวอย่างเช่น อาจมีแพ็คเกจคณิตศาสตร์ที่สมบูรณ์เป็นโมดูลเดียว และฟังก์ชันมาตรฐานทั้งหมด (ไซน์ โคไซน์ รากที่สอง ฯลฯ) สามารถตั้งชื่อเป็นจุดเริ่มต้นในโมดูลนั้นได้ | ||||
| 03 | PR - Part Reference หรือ Pseudo Register ระบุโดยฟิลด์ Name Space ID ESDID "Parent" ต้องไม่เป็นศูนย์ และต้องเป็นค่าของรายการ SD ที่กำหนดสัญลักษณ์นี้ไว้ภายในตัวมันเอง | ||||
| 04 | ER และ WX - การอ้างอิงภายนอก / การอ้างอิงภายนอกแบบอ่อน แตกต่างกันโดยค่า "ความแข็งแรงของการผูกมัด" ในช่อง "คุณลักษณะ" WX ใช้ในกรณีที่อาจไม่มีรูทีนภายนอก ตัวอย่างเช่น หากโปรแกรมเครื่องคิดเลขมีชุดฟังก์ชันทางคณิตศาสตร์ที่มีประสิทธิภาพสูงซึ่งเป็นตัวเลือกเสริม ก็สามารถเรียกใช้เป็น WX ได้ และหากไม่มีหรือใช้งานไม่ได้ โปรแกรมก็อาจลดระดับไปใช้ชุดฟังก์ชันทางคณิตศาสตร์ที่ด้อยกว่า | ||||
| 4-7 | 4 | เอสดีไอดี | ไบนารี | รหัส ESDID ที่ขึ้นต้นด้วย 1 โดย ESDID ใหม่แต่ละรหัสจะต้องสูงกว่ารหัสก่อนหน้าอยู่ 1 รหัสเสมอ | |
| 8-11 | 4 | ผู้ปกครอง ESDID | ไบนารี | นี่คือ ESDID ของวัตถุที่กำหนดรายการนี้ หากเป็นส่วนหนึ่งของวัตถุอื่น หากไม่มีวัตถุแม่ ค่าจะเป็น 0 | |
| 12-15 | 4 | 0 | ที่สงวนไว้ | ||
| 16-19 | 4 | ออฟเซ็ต | ไบนารี | ที่อยู่ของสัญลักษณ์นี้ภายใน ESDID หลักสำหรับรายการ LD หรือ ED; เป็นศูนย์สำหรับรายการอื่น ๆ | |
| 20-23 | 4 | 0 | ที่สงวนไว้ | ||
| 24-27 | 4 | ความยาว | ไบนารี | ความยาวของรายการนี้สำหรับประเภท ED และ PR; เป็นศูนย์สำหรับประเภทอื่น หากค่าความยาวจริงถูกเลื่อนออกไป ค่านี้จะถูกตั้งเป็น -1 | |
| 28-31 | 4 | คุณลักษณะเพิ่มเติม ESDID | ไบนารี | ESDID ขององค์ประกอบที่ประกอบด้วยข้อมูลคุณลักษณะเพิ่มเติมสำหรับประเภท ED และ LD โดยทั่วไปจะใช้ในกรณีที่ DLL รองรับสัญลักษณ์ที่ได้รับการแก้ไขในขณะรันไทม์ (เช่น เมธอดเสมือน) มิฉะนั้นจะเป็นศูนย์ | |
| 32-35 | 4 | ค่าชดเชยแอตทริบิวต์เพิ่มเติม | ไบนารี | ที่อยู่ซึ่งสามารถค้นหาคุณลักษณะเพิ่มเติมสำหรับฟิลด์ก่อนหน้าได้ ใช้สำหรับระเบียน ED และ LD ที่มีคุณลักษณะเพิ่มเติม มิฉะนั้นจะเป็นศูนย์ | |
| 36-39 | 4 | 0 | ที่สงวนไว้ | ||
| 40 | 1 | รหัสเนมสเปซ | ระบุเนมสเปซที่สิ่งนี้เป็นส่วนหนึ่ง | ||
| 0 | สงวนไว้สำหรับแฟ้มเอกสารการจัดการโครงการ | ||||
| 1 | ชื่อปกติ | ||||
| 2 | รีจิสเตอร์เสมือน | ||||
| 3 | ส่วนประกอบ (พื้นที่จัดสรรสำหรับรายการภายนอก รวมถึงรายการที่มีข้อมูลคงที่ที่ได้รับการเริ่มต้นแล้ว) | ||||
| 41 | 1 | ธง | |||
| เติมของขวัญ | บิต 0 | 0 | ไม่เติม | ||
| 1 | เติมไบต์ที่มีอยู่ (ใช้ได้เฉพาะกับประเภท ED เท่านั้น) | ||||
| บิดเบี้ยว | บิตที่ 1 | 0 | สัญลักษณ์ไม่ถูกบิดเบือน | ||
| 1 | สัญลักษณ์อาจถูกบิดเบือน | ||||
| เปลี่ยนชื่อได้ | บิต 2 | 0 | ไม่สามารถเปลี่ยนชื่อได้ (เช่นเดียวกับแฟล็ก 'mapped' ใน XOBJ) | ||
| 1 | สามารถเปลี่ยนชื่อสัญลักษณ์ได้ (สามารถเข้าร่วมในการเปลี่ยนชื่อประเภทสภาพแวดล้อมทางภาษา (LE)) | ||||
| คลาสที่ถอดได้ | บิต 3 | 0 | (ค่าเริ่มต้น) ไม่สามารถถอดออกได้ | ||
| 1 | สามารถลบคลาสนี้ได้โดยไม่ส่งผลกระทบต่อการทำงานของโปรแกรม (ใช้ได้เฉพาะกับประเภท ED เท่านั้น) | ||||
| บิต 4-6 | ที่สงวนไว้ | ||||
| จองพื้นที่เพิ่มเติม | บิต 7 | 0 | ไม่มีการสำรองพื้นที่เพิ่มเติม | ||
| 1 | สงวนพื้นที่ 16 ไบต์ไว้ที่ส่วนต้นของคลาส (เฉพาะคลาส MRG ประเภท ED เท่านั้น) | ||||
| 42 | 1 | ค่าเติม | ค่าของไบต์เติม หากตั้งค่าแฟล็ก Fill Present ไว้ | ||
| 43 | 1 | 0 | ที่สงวนไว้ | ||
| 44-47 | 4 | ข้อมูลที่เกี่ยวข้อง | ไบนารี | ใช้สำหรับระบุสภาพแวดล้อมหรือพื้นที่คงที่สำหรับอุปกรณ์ LD โดยใช้ XLINK | |
| 48-51 | 4 | ลำดับความสำคัญ | ไบนารี | ลำดับการจัดเรียงของรายการข่าวประชาสัมพันธ์ | |
| 52-59 | 8 | 0 | ที่สงวนไว้ | ||
| 60-69 | 10 | คุณลักษณะด้านพฤติกรรม | คุณลักษณะด้านพฤติกรรมสำหรับรายการนี้ (ดูตารางคุณลักษณะด้านพฤติกรรมด้านล่าง) | ||
| 70-71 | 2 | ชื่อ ความยาว | ไบนารี | ความยาวของชื่อรายการนี้ ต้องไม่เป็นศูนย์ | |
| 72- | ชื่อ | ข้อความ | ชื่อของรายการนี้ โดยตัดช่องว่างท้ายออก ต้องมีอย่างน้อยหนึ่งตัวอักษร รหัสส่วนตัวประกอบด้วยช่องว่างหนึ่งช่อง ชื่อต้องตรงตามตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก | ||
| REM | 0 | ส่วนท้าย: พื้นที่ว่างที่ไม่ได้ใช้งาน หากจำเป็นสำหรับระเบียนที่มีขนาดคงที่ ต้องเติมค่าเป็นศูนย์ ไม่จำเป็นสำหรับระเบียนที่มีความยาวแปรผัน | |||
ต่อเนื่อง
ในกรณีของระเบียนที่มีความยาวคงที่ซึ่งชื่อจำเป็นต้องมีระเบียนต่อเนื่อง จะใช้รูปแบบดังต่อไปนี้:
| ไบต์ | ขนาด | สนาม | ค่า | วัตถุประสงค์ | |
|---|---|---|---|---|---|
| 0-2 | 3 | พีทีวี | X'030200' | บันทึกการดำเนินการต่อของ ESD โดยไม่มีการดำเนินการต่อเพิ่มเติม | |
| X'030300' | บันทึกต่อเนื่องของ ESD ซึ่งจะต่อเนื่องไปยังบันทึกถัดไป | ||||
| 3- | ชื่อ | ข้อความ | ส่วนที่เหลือของชื่อหากระเบียนนี้ไม่ต่อเนื่อง หรือ 77 ไบต์ถัดไปของชื่อหากต่อเนื่องกัน | ||
| REM | 0 | ส่วนที่เหลือสำหรับระเบียนความยาวคงที่ที่ยาวกว่าข้อมูลที่ให้มา โดยจะเก็บไบต์ส่วนท้ายหากเป็นระเบียนสุดท้ายสำหรับชื่อนี้ และชื่อนั้นสั้นกว่าขนาดของระเบียน ต้องกรอกค่าเป็น 0 ฟิลด์นี้ไม่มีในระเบียนความยาวแปรผัน | |||
คุณลักษณะด้านพฤติกรรม
| ออฟเซ็ต | ขนาด (ไบต์) | บิต | สนาม | ค่า | วัตถุประสงค์ | |||||
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | การระบุที่อยู่ของอสังหาริมทรัพย์ | โหมดการกำหนดแอดเดรสที่เชื่อมโยงกับสัญลักษณ์ภายนอกนี้ ค่าเหล่านี้จะถูกใช้โดย ฟิลด์ AMODEของระเบียน END ด้วยเช่นกัน | |||||||
| 00 | ไม่ได้ระบุ AMODE (ค่าเริ่มต้นคือ AMODE (24)) | |||||||||
| 01 | โหมด(24) | |||||||||
| 02 | โหมด(31) | |||||||||
| 03 | โหมด (ใดๆ) (24 หรือ 31) | |||||||||
| 04 | โหมด(64) | |||||||||
| 10 | AMODE(MIN) (ใช้ค่า AMODE ที่น้อยที่สุดที่โมดูลทั้งหมดใช้) | |||||||||
| 1 | 1 | ที่พักพิง | โหมดที่อยู่อาศัยที่เกี่ยวข้องกับสัญลักษณ์ภายนอก | |||||||
| 00 | ไม่ได้ระบุ RMODE (ค่าเริ่มต้นคือ RMODE (24)) | |||||||||
| 01 | RMODE(24) | |||||||||
| 03 | RMODE(31) (เทียบเท่ากับ RMODE(ANY)) | |||||||||
| 04 | RMODE(64) | |||||||||
| 2 | 1 | 0-3 (4) | รูปแบบบันทึกข้อความ | รูปแบบข้อความสำหรับคลาสนี้ (เฉพาะประเภท ED และ PR) ข้อความทั้งหมดต้องใช้รูปแบบเดียวกัน | ||||||
| 0000 | เน้นไบต์ | |||||||||
| 0001 | ข้อมูลที่มีโครงสร้าง (เน้นการจัดเก็บในแฟ้มเอกสาร) | |||||||||
| 0010 | ข้อมูลที่มีโครงสร้าง (กำหนดโดยผู้ใช้) | |||||||||
| 4-7 (4) | อัลกอริทึมการผูกมัด | วิธีการผูกข้อมูล | ||||||||
| 0000 | นำรายการทั้งหมดมาต่อกันทีละรายการ | |||||||||
| 0001 | ผสาน (รายการที่มีชื่อเหมือนกันทั้งหมดจะถูกจัดวางไว้ในพื้นที่เดียวกัน โดยใช้ขนาดที่ใหญ่ที่สุดตามที่กำหนด และการจัดเรียงที่เข้มงวดที่สุด) รายการที่มีชื่อแตกต่างกันจะถูกรวมเข้าด้วยกัน นี่เป็นวิธีปฏิบัติปกติสำหรับประเภท CM และ PR | |||||||||
| 3 | 1 | 0-2 (3) | พฤติกรรมการมอบหมายงาน | ระบุว่าโมดูลนั้นสามารถเรียกซ้ำได้หรือไม่ และ/หรือสามารถนำกลับมาใช้ใหม่ได้หรือไม่ | ||||||
| 000 | ไม่ระบุ | |||||||||
| 001 | ไม่สามารถนำกลับมาใช้ใหม่หรือเข้าซ้ำได้ (NON-REUS) | |||||||||
| 010 | สามารถนำกลับมาใช้ซ้ำได้หลายครั้ง (REUS) | |||||||||
| 011 | ผู้เช่าที่กลับเข้ามาใหม่ (RENT) ยังหมายความถึง (REUS) ด้วย | |||||||||
| 3 | 0 | ที่สงวนไว้ | ||||||||
| 4 | อ่านอย่างเดียว | 0 | ไม่ใช่แบบอ่านอย่างเดียว | |||||||
| 1 | อ่านอย่างเดียว | |||||||||
| 5-7 (3) | ไฟล์ปฏิบัติการ | 000 | ไม่ได้ระบุ | |||||||
| 001 | ไฟล์นี้ไม่สามารถเรียกใช้งานได้ (มีเฉพาะข้อมูล) | |||||||||
| 010 | ไฟล์ปฏิบัติการ (โค้ด หรือโค้ดและข้อมูล) | |||||||||
| 4 | 1 | 0-1 (2) | 0 | ที่สงวนไว้ | ||||||
| 2-3 (2) | ความรุนแรงของสัญลักษณ์ซ้ำ | ระดับความคลาดเคลื่อนที่สัญลักษณ์ซ้ำควรแจ้ง (เฉพาะระเบียนประเภท PR เท่านั้น) | ||||||||
| 00 | สารยึดเกาะเป็นตัวกำหนดความรุนแรง | |||||||||
| 01 | ขั้นต่ำ 4 (คำเตือน) | |||||||||
| 10 | ขั้นต่ำ 8 (ข้อผิดพลาด) | |||||||||
| 11 | ที่สงวนไว้ | |||||||||
| 4-7 (4) | ความแข็งแรงในการยึดติด | การอ้างอิงแบบอ่อนจะไม่ค้นหาในไลบรารีอื่น การอ้างอิงแบบแข็งจะค้นหาสัญลักษณ์ในไลบรารีอื่น คำจำกัดความแบบแข็งสามารถระบุไปยังการอ้างอิงใดก็ได้ ซึ่งเป็นค่าเริ่มต้น | ||||||||
| 0000 | แข็งแกร่ง | |||||||||
| 0001 | อ่อนแอ | |||||||||
| 5 | 1 | 0-1 (2) | พฤติกรรมการโหลดคลาส | กำหนดว่าองค์ประกอบของคลาสจะถูกโหลดหรือไม่ ในกรณีที่ระบบปฏิบัติการใช้คำขอ LOAD กับอ็อบเจ็กต์ | ||||||
| 00 | โหลด - โหลดคลาสนี้ | |||||||||
| 01 | การโหลดแบบเลื่อนเวลา - คลาสนี้อาจจะถูกใช้งานและควรถูกโหลด | |||||||||
| 10 | NOLOAD - ห้ามโหลดคลาสนี้ | |||||||||
| 11 | ที่สงวนไว้ | |||||||||
| 2 | ธงทั่วไป | ถ้าเป็น 1 ให้ถือว่าเป็น CM-type COMMON แบบ "เก่า" โดยที่การอ้างอิงหลายรายการจะกำหนดขนาดให้เท่ากับพื้นที่ที่ใหญ่ที่สุดที่ใช้โดยการอ้างอิงใดๆ ประเภท SD ที่มีชื่อเดียวกันจะคงขนาดและข้อความไว้ ประเภทข้อความเดียวที่รองรับสำหรับกรณีนี้คือ B_TEXT | ||||||||
| 3 | การอ้างอิงโดยตรงเทียบกับการอ้างอิงโดยอ้อม | 0 | การอ้างอิงโดยตรง (เพื่อวัตถุประสงค์ในการจัดทำแฟ้มเอกสาร) | |||||||
| 1 | สำหรับประเภท PR นี่คือตัวอธิบายการเชื่อมโยง สำหรับประเภท ER นี่คือการอ้างอิงถึงตัวอธิบายการเชื่อมโยง XPLINK | |||||||||
| 4-7 (4) | ขอบเขตการผูกมัด | 0000 | ไม่ระบุ | |||||||
| 0001 | ขอบเขตของส่วน (“ท้องถิ่น”) | |||||||||
| 0010 | ขอบเขตของโมดูล (“ทั่วโลก”) | |||||||||
| 0011 | ขอบเขตของห้องสมุด | |||||||||
| 0100 | ขอบเขตการนำเข้า-ส่งออก | |||||||||
| 6 | 1 | 0-1 (2) | ที่สงวนไว้ | |||||||
| 2 | ประเภทการเชื่อมโยง | สำหรับประเภท ER, LD, PD และ PR | ||||||||
| 0 | การเชื่อมต่อ O/S มาตรฐาน (ค่าเริ่มต้น) | |||||||||
| 1 | การเชื่อมโยง XPLINK | |||||||||
| 3-7 (5) | การจัดแนว | การจัดเรียงโดยนัยของรายการนี้ | ||||||||
| 00000 | ไบต์ | |||||||||
| 00001 | ฮาล์ฟเวิร์ด | |||||||||
| 00010 | ฟูลเวิร์ด | |||||||||
| 00011 | ดับเบิลเวิร์ด | |||||||||
| 00100 | ควอดเวิร์ด | |||||||||
| 00101 | หน้าขนาด 4KB | |||||||||
| รูปแบบการจัดวางทั้งหมดที่แสดงไว้ สามารถใช้ได้กับทั้งแบบ ED และ PR ยกเว้นแบบ PR ที่ไม่สามารถใช้การจัดวางหน้าได้ | ||||||||||
| 7-9 | 3 | ที่สงวนไว้ | ||||||||
บันทึกข้อมูล ADATA
ระเบียน ADATA ("ข้อมูลที่เกี่ยวข้อง") ใช้สำหรับให้ข้อมูลสัญลักษณ์เพิ่มเติมเกี่ยวกับโมดูล โดยเข้ามาแทนที่ระเบียน SYM แบบเก่าในรูปแบบไฟล์ออบเจ็กต์ 360 ในการสร้างระเบียน ADATA
- สร้างระเบียน ESD ประเภท ED สำหรับชื่อคลาสที่ระเบียนเหล่านั้นเป็นส่วนหนึ่ง
- ตั้งค่าฟิลด์ทั้งหมดใน บันทึก คุณลักษณะพฤติกรรมเป็น 0 ยกเว้นฟิลด์ 0
- การโหลดคลาส (บิต 0-1 ของไบต์ 5) คือ X'10'
- อัลกอริทึมการผูกคือ 0
- รูปแบบบันทึกข้อความ (บิต 0-3 ของไบต์ 2) คือ X'0010'
- สามารถตั้ง ค่า แบบอ่านอย่างเดียว (บิตที่ 4 ของไบต์ที่ 3) และ แบบ ไม่สามารถเรียกใช้งานได้ (บิตที่ 5-7 ของไบต์ที่ 3) ได้ตามความเหมาะสม
- สร้างระเบียน TXT สำหรับแต่ละรายการใน ADATA
- Element ESDIDคือค่าของระเบียน ADATA ED สำหรับรายการ ADATA นั้นๆ
- ค่าออฟเซ็ตเป็นศูนย์
- ความยาวข้อมูลคือ ความยาวของระเบียนข้อมูล ADATA
- ช่อง ข้อมูลนี้ประกอบด้วยข้อมูลบันทึก ADATA จริง ๆ
ข้อมูลใน ADATA จะถูกเพิ่มต่อท้ายคลาสตามลำดับที่ประกาศไว้
ชื่อคลาสที่กำหนดให้กับระเบียน ADATA จะถูกแปลงโดยโปรแกรมของ IBM โดยการ แปลง ค่าไบนารีเป็นข้อความแล้วต่อท้ายชื่อC_ADATAดังนั้น รายการที่มีหมายเลข X'0033' จะกลายเป็นสตริงข้อความC_ADATA0033
| พิมพ์ | คำอธิบาย |
| X'0000' - X'7FFF' | บันทึกตัวแปล (โปรดทราบว่าค่าบางค่าในช่วง 0-X'0130' ถูกใช้งานโดยผลิตภัณฑ์ตัวแปลภาษาของ IBM บางตัว รวมถึง Assembler, CobolและPL/I ) |
| X'8000' - X'8FFF' | บันทึกการจัดการโครงการ |
| X'9000' - X'DFFF' | ที่สงวนไว้ |
| X'E000' - X'EFFF' | สงวนไว้สำหรับคอมไพเลอร์และแอสเซมเบลอร์ที่ไม่ได้เผยแพร่โดย IBM |
| X'F000' - X'FFFF' | มีให้สำหรับบันทึกข้อมูลผู้ใช้ IBM จะไม่นำค่าเหล่านี้ไปใช้ |
TXT
ระเบียน TXT ระบุคำสั่งรหัสเครื่องและข้อมูลที่จะวางไว้ในตำแหน่งที่อยู่เฉพาะในโมดูล โปรดทราบว่าทุกครั้งที่ต้องระบุ "ความยาว" สำหรับระเบียนนี้ ค่าความยาวจะต้องรวมส่วนต่อขยายใดๆ ของระเบียนนี้ด้วย
| ไบต์ | ขนาด | สนาม | บิต | ค่า | วัตถุประสงค์ | |
|---|---|---|---|---|---|---|
| 0-2 | 3 | พีทีวี | X'031000' | บันทึก TXT ที่ไม่มีส่วนต่อขยาย | ||
| X'031100' | บันทึก TXT ซึ่งต่อเนื่องไปยังบันทึกถัดไป | |||||
| 3 | 1 | 0-3 (4) | ที่สงวนไว้ | |||
| สไตล์ | 4-7 (4) | ค่าอื่นๆ ทั้งหมดสงวนไว้ | ||||
| 0000 | ข้อมูลเชิงไบต์ | |||||
| 0001 | ข้อมูลที่มีโครงสร้าง (ปัจจุบันรองรับเฉพาะข้อมูลที่มีโครงสร้างขนาด 19 ไบต์เท่านั้น โปรดดูตารางข้อมูล IDR ) | |||||
| 0010 | ข้อมูลที่ไม่มีโครงสร้าง | |||||
| 4-7 | 4 | องค์ประกอบ ESDID | เลขฐานสอง | ESDID ระบุว่าเนื้อหาในบันทึกนี้เป็นของ | ||
| 8-11 | 4 | ที่สงวนไว้ | ||||
| 12-15 | 4 | ออฟเซ็ต | ที่อยู่ไบนารี | ที่อยู่ภายใน ESDID ที่จะจัดเก็บข้อมูลนี้ ควรเป็น 0 สำหรับข้อมูลที่มีโครงสร้างและไม่มีโครงสร้าง | ||
| 16-19 | 4 | ความยาวจริงของช่องข้อความ | ค่าไบนารี: 0 หรือขนาดเต็มหลังจากขยาย | ถ้าช่อง Text Encoding เป็น 0 ค่าในช่องนี้ต้องเป็น 0 เช่นกัน มิฉะนั้น ค่าในช่องนี้จะเป็นขนาดเต็มของข้อความหลังจากการบีบอัดหรือคลายไฟล์ | ||
| 20-21 | 2 | การเข้ารหัสข้อความ | ค่าไบนารี | 0 หากข้อความไม่จำเป็นต้องทำซ้ำ แยก หรือถอดรหัส; ค่าที่ไม่ใช่ศูนย์เพื่อระบุว่าข้อความต้องได้รับการถอดรหัส แยก หรือขยาย; ดูตารางการบีบอัด | ||
| 22-23 | 2 | ความยาวข้อมูล | ค่าไบนารีมากกว่าศูนย์ | ความยาวทั้งหมดของข้อมูลในระเบียนนี้เป็นไบต์ในรูปแบบค่าที่ไม่ติดลบ และต้องไม่เป็นศูนย์ อย่างไรก็ตาม ค่านี้อาจไม่ถูกต้องทั้งหมด ดังที่ระบุไว้ด้านล่างในหัวข้อ ข้อ ควร ระวัง | ||
| 24- | ข้อมูล | รหัสเครื่องและ/หรือข้อมูลที่จะแทรก หากมีการรวมข้อมูล IDR จะต้องเป็นไปตามกฎและข้อกำหนดพิเศษ โปรดดูตารางข้อมูล IDR | ||||
| REM | ไม่มีในระเบียนที่มีความยาวแปรผัน ไบต์ที่เหลือสำหรับระเบียนคงที่ซึ่งยาวกว่าข้อมูลที่เหลือ ต้องเป็นเลขศูนย์ไบนารี | |||||
คำเตือน
ความยาวของข้อมูลในไบต์ที่ 22-23 ซึ่งเป็นค่าที่ไม่ติดลบ อาจไม่ถูกต้อง ตามคำอธิบายในส่วนของตัวสร้าง GOFF ในชุดคอมไพเลอร์ LLVM
- "จำนวนไบต์สูงสุดที่สามารถรวมอยู่ในเรคอร์ด RLD หรือ TXT และส่วนต่อขยายของเรคอร์ดเหล่านั้นคือจำนวนเต็ม 16 บิตแบบมีเครื่องหมาย แม้ว่าข้อกำหนดจะระบุไว้เป็นอย่างอื่นก็ตาม จำนวนไบต์ที่เราอนุญาตให้แนบกับการ์ดจึงถูกจำกัดโดยพลการไว้ที่ 32K-1 ไบต์" [ 7 ]
ต่อเนื่อง
| ไบต์ | ขนาด | สนาม | บิต | ค่า | วัตถุประสงค์ | |
|---|---|---|---|---|---|---|
| 0-2 | 3 | พีทีวี | X'031200' | บันทึกต่อเนื่องที่ไม่มีการบันทึกต่อเนื่องเพิ่มเติม | ||
| X'031300' | บันทึกต่อเนื่องซึ่งต่อเนื่องไปยังบันทึกถัดไป | |||||
| 3- | ข้อมูลต่อเนื่องจากบันทึกก่อนหน้า | |||||
| REM | ถ้าส่วนที่เหลือของบันทึกยาวกว่าข้อมูล ให้เติมด้วยเลขศูนย์ | |||||
ตารางการบีบอัด
จะใช้ตารางการบีบอัดข้อมูลหากไบต์ที่ 20-21 ของระเบียน TXT ไม่เป็นศูนย์ ค่า R ใช้เพื่อกำหนดจำนวนครั้งที่จะทำซ้ำสตริง ส่วนค่า L ระบุความยาวของข้อความที่จะทำซ้ำ "R" ครั้ง วิธีการนี้สามารถใช้สำหรับการกำหนดค่าเริ่มต้นให้กับตารางหรืออาร์เรย์เป็นค่าว่างหรือศูนย์ หรือเพื่อวัตถุประสงค์อื่นใดที่การแสดงข้อมูลที่ทำซ้ำเป็นจำนวนครั้งและค่ามีประโยชน์
| ไบต์ | ขนาด | สนาม | ค่า | วัตถุประสงค์ | |
|---|---|---|---|---|---|
| ถ้าค่าในไบต์ที่ 20-21 ของระเบียน TXT นี้คือ 0001 | |||||
| 0-1 | 2 | อาร์ | จำนวนครั้งที่ทำซ้ำ (Repeat Count) เป็นจำนวนเต็มที่ไม่ติดลบและมากกว่า 0 | จำนวนครั้งที่จะทำซ้ำสตริง โดยเริ่มต้นที่ไบต์ที่ 4 | |
| 2-3 | 2 | แอล | ความยาวไบนารี คือจำนวนเต็มที่ไม่ติดลบซึ่งมากกว่า 0 | ความยาวของสตริงเริ่มต้นที่ไบต์ที่ 4 | |
| 4- | สตริง | สตริงที่มีความยาว "L" ซึ่งจะต้องทำซ้ำ "R" ครั้ง | |||
| ค่าอื่นๆ ทั้งหมดสำหรับไบต์ที่ 20-21 ถูกสงวนไว้ | |||||
ตารางข้อมูล IDR
ตาราง IDR ซึ่งอยู่ที่ไบต์ที่ 24 ของระเบียน TXT จะระบุคอมไพเลอร์หรือแอสเซมเบลอร์ (และหมายเลขเวอร์ชัน) ที่สร้างไฟล์ออบเจ็กต์นี้
| ไบต์ | ขนาด | สนาม | ค่า | วัตถุประสงค์ | |
|---|---|---|---|---|---|
| 0 | 1 | x'00' | ที่สงวนไว้ | ||
| 1 | 1 | พิมพ์ | ประเภทของฟิลด์ IDR (โปรดทราบว่า การระบุตัวตนหลักและการระบุตัวตนรอง หมายถึง ฟิลด์การระบุตัวตนแรกและฟิลด์การระบุตัวตนที่สอง ตามลำดับ ที่ปรากฏบนการ์ด END ในรูปแบบไฟล์โมดูลออบเจ็กต์ OS/360 เดิม) | ||
| 00 | รหัสประจำตัวหลัก; รูปแบบ IDR เก่า 1 | ||||
| 01 | การระบุตัวตนรอง; รูปแบบ IDR เก่า 1 | ||||
| 02 | รหัสประจำตัวเพิ่มเติม; รูปแบบ IDR 2 | ||||
| 03 | รหัสประจำตัวหลัก; รูปแบบ IDR 3 | ||||
| 04 | การระบุตัวตนรอง; รูปแบบ IDR 3 | ||||
| 2-3 | 2 | ความยาว | เลขฐานสอง | ความยาวของข้อมูล IDR เป็นจำนวนเต็มที่ไม่ติดลบและมากกว่าศูนย์ | |
| 4+ | ข้อมูล IDR ตามรูปแบบที่ระบุในไบต์ที่ 1 ของฟิลด์นี้ โปรดดู ตาราง รูปแบบ IDR ที่เกี่ยวข้อง สำหรับรายละเอียดเพิ่มเติม | ||||
รูปแบบ IDR 1
โปรดทราบว่า ต่างจากค่าตัวเลขส่วนใหญ่ที่จัดเก็บในไฟล์ GOFF ค่า "version", "release" และ "trans_date" เป็นตัวเลขในรูปแบบข้อความ ไม่ใช่เลขฐานสอง
| ไบต์ | ขนาด | สนาม | ค่า | วัตถุประสงค์ |
|---|---|---|---|---|
| 0-9 | 10 | นักแปล | ข้อความใดๆ | ค่านี้คือค่าที่แอสเซมเบลอร์หรือคอมไพเลอร์ใช้ระบุตัวตนของมันเอง IBM เรียกค่านี้ว่า "ค่า PID" หรือ "ค่ารหัสโปรแกรม" ตามหมายเลขแคตตาล็อกของโปรแกรมต่างๆ ของ IBM เช่น คอมไพเลอร์ Cobol สำหรับ OS/VS1 เรียกว่า "IKFCBL00" |
| 10-11 | 2 | เวอร์ชั่น | สองหลัก | นี่คือหมายเลขเวอร์ชันของแอสเซมเบลอร์หรือคอมไพเลอร์ ซึ่งมีค่าตั้งแต่ 0 ถึง 99 |
| 12-13 | 2 | ปล่อย | สองหลัก | นี่คือหมายเลขรุ่นย่อยของหมายเลขเวอร์ชันด้านบน ซึ่งมีค่าตั้งแต่ 0 ถึง 99 |
| 14-18 | 5 | วันที่ทำรายการ | YYDDD | ประกอบด้วยอักขระข้อความ 5 ตัวที่ระบุปี 2 หลัก และวัน 3 หลักของปีที่โมดูลนี้ถูกคอมไพล์หรือประกอบขึ้น โดยปี 01-65 ถือว่าอยู่ในศตวรรษที่ 21 ขณะที่ปี 00 หรือปีที่มากกว่า 65 ถือว่าอยู่ในศตวรรษที่ 20 เช่น ปี 2000 หรือปี 1966-1999 วัน 3 หลักเริ่มต้นที่ 001 สำหรับวันที่ 1 มกราคม; 032 สำหรับวันที่ 1 กุมภาพันธ์; 060 คือวันที่ 1 มีนาคมในปีปกติและวันที่ 29 กุมภาพันธ์ในปีอธิกสุรทิน; และต่อเนื่องไปจนถึง 365 สำหรับวันที่ 31 ธันวาคมในปีปกติและ 366 สำหรับปีอธิกสุรทิน |
รูปแบบ IDR 2
โดยปกติแล้ว คอมไพเลอร์และแอสเซมเบลอร์จะไม่สร้างเรคอร์ดรูปแบบนี้ขึ้นมา โดยทั่วไปแล้วเรคอร์ดนี้จะถูกสร้างขึ้นโดยโปรแกรมผูกไฟล์ (binder)
| ไบต์ | ขนาด | สนาม | ค่า | วัตถุประสงค์ |
|---|---|---|---|---|
| 0-3 | 4 | วันที่ | รูปแบบเลขฐานสิบแบบแพ็ค YYYYDDDF | โมดูลวันที่ถูกประกอบหรือรวบรวม โดยระบุปีและวันของปี |
| 4-5 | 2 | ความยาวข้อมูล | ค่าไบนารี | ความยาวจริงของฟิลด์ถัดไป ซึ่งเป็นค่าที่ไม่ติดลบและไม่ใช่ศูนย์ |
| 6-85 | 80 | ข้อมูล IDR | รูปแบบของข้อมูลนี้ยังไม่ได้รับการเปิดเผย |
รูปแบบ IDR 3
ข้อความทั้งหมดในเอกสารนี้เป็นข้อมูลตัวอักษร ไม่มีการใช้ข้อมูลไบนารี
| ไบต์ | ขนาด | สนาม | ค่า | วัตถุประสงค์ |
|---|---|---|---|---|
| 0-9 | 10 | นักแปล | ค่าข้อความใดๆ ที่ผู้เขียนคอมไพเลอร์/แอสเซมเบลอร์ต้องการใช้เพื่อระบุตัวตน (ดูช่อง Translator ในรูปแบบ IDR เก่า 1ด้านบน) | |
| 10-11 | 2 | เวอร์ชั่น | 00 ถึง 99 | หมายเลขเวอร์ชันของแอสเซมเบลอร์หรือคอมไพเลอร์ |
| 12-13 | 2 | ปล่อย | 00 ถึง 99 | หมายเลขรุ่นของเวอร์ชันข้างต้น |
| 14=20 | 7 | วันที่คอมไพล์ | YYYYDDD | ปีและวันในรอบปีที่โปรแกรมถูกรวบรวมหรือประกอบขึ้น (รูปแบบจะเหมือนกับช่อง 'วันที่ทำรายการ' จากแบบฟอร์ม IDR รูปแบบที่ 1ด้านบน ยกเว้นปีจะเป็นปีแบบเต็ม 4 หลัก) |
| 21-29 | 9 | เวลาคอมไพล์ | เอชเอชเอ็มเอ็มเอสเอสทีทีที | ชั่วโมง นาที วินาที และเศษส่วนของวินาทีที่โปรแกรมถูกคอมไพล์หรือประกอบขึ้น |
อาร์แอลดี
ระเบียน RLD ช่วยให้โมดูลสามารถแสดงตำแหน่งที่อ้างอิงถึงที่อยู่ที่ต้องย้าย เช่น การอ้างอิงถึงตำแหน่งเฉพาะภายในตัวมันเอง หรือการอ้างอิงถึงโมดูลภายนอก
| ไบต์ | ขนาด | สนาม | ค่า | วัตถุประสงค์ |
|---|---|---|---|---|
| 0-2 | 3 | พีทีวี | X'032000' | บันทึกไม่ต่อเนื่อง |
| X'032100' | สถิติยังคงดำเนินต่อไปในสถิติถัดไป | |||
| 3 | 1 | ที่สงวนไว้ | ||
| 4-5 | 2 | ความยาว | เลขฐานสอง | ขนาดของข้อมูลการย้ายตำแหน่ง; ไม่มีเครื่องหมายและต้องมากกว่าศูนย์ |
| 6- | ข้อมูลการย้ายที่อยู่ | ข้อมูลการย้ายที่อยู่ โปรดดูตาราง ข้อมูลการย้ายที่อยู่ | ||
| REM | ไม่มีในระเบียนที่มีความยาวแปรผัน ส่วนที่เหลือของระเบียนหากระเบียนยาวกว่าข้อมูล จะต้องเติมด้วยเลขศูนย์ | |||
ข้อมูลการย้ายถิ่นฐาน
| ไบต์ | ขนาด | สนาม | ค่า | วัตถุประสงค์ |
|---|---|---|---|---|
| 0-5 | 6 | ธง | เครื่องหมายที่เกี่ยวข้องกับรายการนี้ โปรดดู ตาราง เครื่องหมายสำหรับค่าต่างๆ | |
| 6-7 | 2 | ที่สงวนไว้ | ||
| 8-11 | 4 | R_Pointer | รหัส ESDID ของโมดูล (ประเภท ED หรือ ER) ที่จะใช้เป็นเป้าหมายในการย้ายตำแหน่ง | นี่คือที่อยู่ "ระยะไกล" ซึ่งอาจอยู่ในโมดูลเดียวกันหรือต่างกัน ที่โปรแกรมต้องการให้ระบุ ฟิลด์นี้จะถูกละเว้นหากบิตที่ 0 ของไบต์ที่ 0 ใน ฟิลด์ Flagsเป็น 1 |
| 12-15 [A] | 4 | พี_พอยน์เตอร์ | ESDID ของโมดูลที่ต้องการย้ายที่อยู่ | นี่คือโมดูลที่ต้องการแก้ไขการอ้างอิงถึงตัวระบุระยะไกลให้เป็นค่าที่ถูกต้อง ฟิลด์นี้จะถูกละเว้นหากบิตที่ 1 ของไบต์ที่ 0 ใน ฟิลด์ Flagsเป็น 1 |
| 16-19 [B] | 4 | ออฟเซ็ต | ตำแหน่งภายในโมดูลที่ระบุโดย P_Pointer ซึ่งเป็นที่ตั้งของที่อยู่ที่จะทำการปรับเปลี่ยน | นี่คือที่อยู่ที่จะย้าย หากบิตที่ 2 ของไบต์ที่ 0 ใน ฟิลด์ Flagsเป็น 1 ฟิลด์นี้จะถูกละเว้น |
| 20-23 [C] | 4 | ที่สงวนไว้ | ||
| 24-27 [C] | 4 | ที่สงวนไว้ | ||
[A] หาก ละเว้นR_Pointer (บิตที่ 0 ของไบต์ที่ 0 ของ ฟิลด์ Flags เป็น 1) ฟิลด์นี้จะเริ่มต้นต่ำลง 4 ไบต์ ในไบต์ที่ 8-11 [B]หากละเว้น R_Pointerหรือ P_Pointer (บิตที่ 1 ของไบต์ที่ 0 ของ ฟิลด์ Flagsเป็น 1) ฟิลด์นี้จะเริ่มต้นต่ำลง 4 ไบต์ ในไบต์ที่ 12-15 หากละเว้นทั้งสอง ฟิลด์ ฟิลด์นี้จะเริ่มต้นต่ำลง 8 ไบต์ ในไบต์ที่ 8-11 [C]หากละเว้น R_Pointer, P_Pointerหรือ Offset (บิตที่ 2 ของไบต์ที่ 0 ของ ฟิลด์ Flagsเป็น 1) ฟิลด์นี้จะเริ่มต้นต่ำลง 4 ไบต์ หากละเว้นสองตัวใดตัวหนึ่ง ฟิลด์นี้จะเริ่มต้นต่ำลง 8 ไบต์ หากละเว้น ทั้งหมด ฟิลด์นี้จะเริ่มต้นต่ำลง 12 ไบต์
เพื่อความชัดเจน หากโมดูลในโปรแกรมภาษาซีชื่อ "Basura" เรียกใช้ฟังก์ชัน "exit" เพื่อยุติการทำงาน ที่อยู่ของ R_Pointer จะเป็น ESDID ของรูทีน "exit" ในขณะที่ P_Pointer จะเป็น ESDID ของ "Basura" หากที่อยู่ดังกล่าวอยู่ในโมดูลเดียวกัน (เช่น ซับรูทีนภายใน หรือการอ้างอิงถึงข้อมูลภายในโมดูลเดียวกัน) R_Pointer และ P_Pointer จะมีค่าเดียวกัน
ธง
| ไบต์ | ขนาด | สนาม | บิต | วัตถุประสงค์ |
|---|---|---|---|---|
| 0 | 1 | รหัส R เดียวกัน | 0 | 1. ถ้าค่า R_Pointer สำหรับรายการนี้เหมือนกับรายการก่อนหน้าในระเบียนนี้ ค่า R_Pointer จะถูกละเว้นจากรายการนี้ |
| รหัส P_ID เดียวกัน | 1 | 1. ถ้าค่า P_Pointer สำหรับรายการนี้เหมือนกับรายการก่อนหน้าในระเบียนนี้ ค่า P_Pointer จะถูกละเว้นจากรายการนี้ | ||
| ออฟเซ็ตเดียวกัน | 2 | 1. ถ้าค่า Offset สำหรับรายการนี้เหมือนกับรายการก่อนหน้าในระเบียนนี้ ค่า Offset จะถูกละเว้นจากรายการนี้ | ||
| 3-4 | ที่สงวนไว้ | |||
| 5 | ที่สงวนไว้ | |||
| ความยาวออฟเซ็ต | 6 | 0 เพื่อระบุความยาว 4 ไบต์ | ||
| ความไวของโหมดการกำหนดที่อยู่ | 7 | 0 ไม่มีความไว | ||
| 1. ตั้งค่าบิตสูงของแอดเดรสให้เหมือนกับโหมดการกำหนดแอดเดรสแบบ R ของแอดเดรส R_Pointer (ใช้ได้เฉพาะกับแอดเดรสประเภท V เท่านั้น) | ||||
| 1 | 1 | ตัวบ่งชี้ R_Pointer_Indicators | 0-3 | ประเภทข้อมูลของตัวดำเนินการที่สองของที่อยู่ย้ายถิ่นฐาน |
| 0 - ที่อยู่ R | ||||
| 1 - ค่าออฟเซ็ตจากจุดเริ่มต้นของแอดเดรส R | ||||
| 2 - ความยาว R (0 สำหรับสินค้า LD) | ||||
| 6 - ความสัมพันธ์โดยตรงแบบสัมพัทธ์ (เพื่ออนุญาตให้คำสั่งอ้างอิงถึงสัญลักษณ์ภายนอก) | ||||
| 7 - ค่าคงที่ R (พื้นที่ข้อมูลที่ไม่ใช้ร่วมกัน) | ||||
| ที่อยู่การเลื่อนตำแหน่งยาว 9-20 บิต | ||||
| ค่าอื่นๆ ทั้งหมดสงวนไว้ | ||||
| 4-7 | ประเภทของรายการที่อ้างอิงถึงมูลค่าที่ต้องย้ายที่ตั้ง | |||
| 0 - ป้ายกำกับ, R-ID ถูกจำกัดไว้เฉพาะ LD | ||||
| 1 - องค์ประกอบ R-ID ถูกจำกัดไว้เฉพาะ ED | ||||
| 2 - คลาส R-ID ถูกจำกัดไว้เฉพาะ ED เท่านั้น คลาสไม่มีชื่อภายนอก ดังนั้นจึงไม่มี ESDID | ||||
| 3 - ส่วน R-ID จำกัดเฉพาะ PR เท่านั้น | ||||
| ค่าอื่นๆ ทั้งหมดสงวนไว้ | ||||
| 2 | 1 | การกระทำหรือการดำเนินการ | 0-6 | ประเภทของการดำเนินการที่จะใช้กับตัวถูกดำเนินการตัวที่สอง (ตัวถูกดำเนินการตัวแรกจะเป็น 0) ผลลัพธ์ที่ได้คือค่าแบบมีเครื่องหมาย 32 บิต ซึ่งจะแทนที่ตัวถูกดำเนินการตัวแรก |
| 0 - เพิ่มตัวถูกดำเนินการตัวที่สองเข้ากับตัวแรก | ||||
| 1 - ลบตัวถูกดำเนินการตัวที่สองออกจากตัวแรก | ||||
| ค่าอื่นๆ ทั้งหมดสงวนไว้ | ||||
| แก้ไขการดึง/จัดเก็บเป้าหมาย | 7 | ระบุว่าจะใช้หรือละเว้นค่าเป้าหมาย | ||
| 0 - ใช้ฟิลด์ fixup/target เป็นตัวดำเนินการตัวแรก | ||||
| 1 - ไม่สนใจค่าของฟิลด์เป้าหมาย ใช้ค่าที่แก้ไขแล้วเป็นตัวดำเนินการตัวแรก หากไม่มีค่าที่แก้ไขแล้ว ให้ใช้ 0 | ||||
| 3 | 1 | ที่สงวนไว้ | ||
| 4 | 1 | ความยาวเป้าหมาย | ความยาวของฟิลด์เป้าหมาย (หน่วยเป็นไบต์) ที่ไม่มีเครื่องหมาย | |
| 5 | 1 | ที่สงวนไว้ | ||
เลน
ระเบียน LEN ใช้สำหรับประกาศความยาวของโมดูลในกรณีที่ไม่ทราบความยาวในขณะที่สร้างระเบียน ESD เช่น สำหรับคอมไพเลอร์แบบผ่านครั้งเดียว
| สนาม | ออฟเซ็ต | ขนาด | คำอธิบาย |
| พีทีวี | 0-2 | 3 | ประเภทบันทึก X'033000' |
| 3-5 | 3 | ที่สงวนไว้ | |
| ความยาว | 6-7 | 2 | ความยาวของรายการที่อยู่ถัดจากช่องนี้ ค่าต้องไม่ใช่ศูนย์ |
| องค์ประกอบ | 8- | ข้อมูลความยาวขององค์ประกอบ โปรดดูตาราง องค์ประกอบ ด้านล่าง | |
| REM | ข้อมูลส่วนท้ายสุดของระเบียนสำหรับระเบียนที่มีความยาวคงที่ ต้องมีเลขฐานสองเป็นศูนย์ แต่จะไม่มีในระเบียนที่มีความยาวแปรผัน |
องค์ประกอบ
ไม่สามารถต่อหรือแบ่งรายการองค์ประกอบที่มีความยาวที่กำหนดไว้ล่วงหน้าได้
| สนาม | ออฟเซ็ต | ขนาด | คำอธิบาย |
| เอสดีไอดี | 0-3 | 4 | ESDID ขององค์ประกอบที่ค่านี้ใช้บังคับ |
| 4-7 | 4 | ที่สงวนไว้ | |
| ความยาว | 8-11 | 4 | ความยาวของรายการที่อ้างอิง |
จบ
END ต้องเป็นเรคอร์ดสุดท้ายสำหรับโมดูล 'จุดเริ่มต้น' (Entry Point) ใช้เมื่อต้องการใช้ที่อยู่ที่ไม่ใช่จุดเริ่มต้นของโมดูลเป็นจุดเริ่มต้นในการดำเนินการ อาจใช้เนื่องจากโปรแกรมมีข้อมูลที่ไม่สามารถเรียกใช้งานได้ปรากฏอยู่ก่อนเริ่มต้นโมดูล (พบได้บ่อยในโปรแกรมเมอร์ภาษาแอสเซมบลีรุ่นเก่า เนื่องจากแอสเซมเบลอร์เวอร์ชันเก่าทำงานช้ากว่ามากในการประกอบข้อมูลที่เก็บไว้ในโปรแกรมเมื่อมีการระบุคำสั่งแล้ว)
| สนาม | ออฟเซ็ต | ขนาด | บิต | คำอธิบาย |
| พีทีวี | 0-2 | 3 | X'034000' - ไม่ต่อ | |
| X'034100' - ต่อในบันทึกถัดไป | ||||
| 3 | 0-5 | 6 | ที่สงวนไว้ | |
| ธง | 6-7 | 2 | คำประกาศเกี่ยวกับการมีหรือไม่มีจุดทางเข้า | |
| 00 - ไม่ได้ระบุจุดเริ่มต้น; ค่าอื่นๆ ทั้งหมดในระเบียนนี้ไม่ถูกต้อง | ||||
| 01 - จุดเข้าที่ระบุโดย ESDID | ||||
| 10 - จุดเริ่มต้นที่ระบุด้วยชื่อ | ||||
| 11 - สำรองที่นั่ง | ||||
| โหมด | 4 | 1 | ค่าโหมดการกำหนดที่อยู่ของจุดเริ่มต้น; ค่าต่างๆ จะเป็นไปตามที่ระบุไว้ในช่อง 0 ของ ตาราง คุณลักษณะพฤติกรรมในบันทึก ESD | |
| 5-7 | 3 | ที่สงวนไว้ | ||
| จำนวนบันทึก | 8-11 | 4 | จำนวนระเบียน GOFF ในโมดูลนี้ (นี่คือจำนวนระเบียน "เชิงตรรกะ" กล่าวคือ ไม่นับรวมส่วนต่อขยาย) | |
| เอสดีไอดี | 12-15 | 4 | ค่าของ ESDID หากจุดเริ่มต้นถูกอ้างอิงโดย ESDID; ค่าศูนย์ไบนารีหากถูกอ้างอิงโดยชื่อ | |
| 16-19 | 4 | ที่สงวนไว้ | ||
| ออฟเซ็ต | 20-23 | 4 | ค่าชดเชยที่อยู่ของจุดเริ่มต้นโมดูล; ไม่สามารถระบุค่านี้สำหรับจุดเริ่มต้นภายนอก (ER) ได้ | |
| ชื่อ ความยาว | 24-25 | 2 | ความยาวของชื่อ ต้องเป็นศูนย์หากจุดเริ่มต้นถูกระบุโดย ESDID | |
| ชื่อ | 26- | ชื่อของสัญลักษณ์ภายนอกที่ใช้เป็นจุดเริ่มต้นสำหรับโมดูลนี้ จะเป็นเลขศูนย์ไบนารีหากจุดเริ่มต้นถูกระบุโดย ESDID หากบันทึกนี้ต่อเนื่องกัน นี่คืออักขระ 54 ตัวแรกของชื่อ นี่เป็นค่าที่ไม่ใช่ไบนารีเพียงค่าเดียวในบันทึก ซึ่งจะเป็นช่องข้อความที่แสดงชื่อสาธารณะสำหรับจุดเริ่มต้น | ||
| REM | ส่วนท้ายของข้อมูลควรเป็นเลขศูนย์ไบนารีจนถึงท้ายข้อมูลสำหรับข้อมูลที่มีความยาวคงที่ และละเว้นสำหรับข้อมูลที่มีความยาวแปรผัน |
ต่อเนื่อง
หากชื่อจุดเริ่มต้นที่ระบุในระเบียน END ที่มีความยาวคงที่นั้นยาวเกิน 54 ไบต์ หรือ (หากระเบียนนี้มีการต่อเติมด้วย) ยาวเกิน 77 ไบต์เพิ่มเติม จะใช้ระเบียนต่อเติมถัดไป
| สนาม | ออฟเซ็ต | ขนาด | คำอธิบาย |
| พีทีวี | 0-2 | 3 | X'034200' - บันทึกต่อเนื่องนี้ไม่ต่อเนื่อง |
| X'034300' - บันทึกต่อเนื่องนี้ต่อเนื่องไปยังบันทึกถัดไป | |||
| ชื่อ | 3- | ส่วนที่เหลือของชื่อจุดเริ่มต้น เว้นแต่ว่าระเบียนนี้จะถูกสานต่อ ในกรณีนั้นจะเป็นอักขระ 77 ตัวถัดไปของชื่อ | |
| REM | หากข้อมูลนี้ไม่ต่อเนื่อง ส่วนนี้จะเป็นส่วนท้ายของข้อมูลสำหรับข้อมูลที่มีความยาวคงที่ และควรเป็นเลขศูนย์ไบนารี ส่วนข้อมูลที่ไม่มีในส่วนนี้จะเป็นส่วนท้ายของข้อมูลที่มีความยาวแปรผัน | ||
หมายเหตุ
- ^การใช้งานนี้แตกต่างจากการใช้งานของ IBM ซึ่งโมดูลออบเจ็กต์ (หน่วยการคอมไพล์) อาจประกอบด้วยซับรูทีนหลายตัว เป็นต้น และโมดูลโหลดอาจประกอบด้วยซับรูทีน เป็นต้น จากโมดูลออบเจ็กต์หลายตัว
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ กอฟฟ์
ข้อกำหนด GOFF (Generalized Object File Format) ได้รับการพัฒนาสำหรับ ระบบปฏิบัติการ MVS ของ IBM เพื่อแทนที่ IBM OS/360 Object File Format เพื่อชดเชยจุดอ่อนในรูปแบบเก่า [ 1 ]
พื้นหลัง
รูปแบบไฟล์อ็อบเจ็กต์ IBM OS/360 ดั้งเดิมได้รับการพัฒนาขึ้นในปี 1964 สำหรับ คอมพิวเตอร์เมนเฟรม IBM System/360 รุ่นใหม่ รูปแบบนี้ยังถูกใช้โดยผู้ผลิต เมนเฟรม แบบเสียบปลั๊กเข้ากันได้ และแบบทำงานคล้ายกัน รวมถึง Univac 90/60, 90/70 และ 90/80 และ Fujitsu B2800...
อนุสัญญา
บทความนี้จะใช้คำว่า "โมดูล" เพื่ออ้างถึงชื่อหรือสัญลักษณ์ที่เทียบเท่าใดๆ ที่ใช้เป็นตัวระบุสำหรับส่วนของโค้ดหรือข้อมูลที่อยู่นอก ขอบเขต ที่อ้างอิงถึง [ ก ] โมดูลอาจอ้างถึงซับรูทีน ฟังก์ชัน ข้อมูล Fortran Common หรือ Block Data อ็อบเจ็กต์หรือคลาส...
ข้อกำหนดและข้อจำกัด
รูปแบบนี้คล้ายกับรูปแบบไฟล์ออบเจ็กต์ OS/360 แต่เพิ่มข้อมูลเพิ่มเติมเพื่อใช้ในการสร้างแอปพลิเคชัน [ 4 ]