ภาษาโคบอล
ID DIVISION
DATA DIVISION
01 HELLOWORLDBINARY
05 HE COMP PIC 9999
05 LL COMP PIC 9999
05 OCOMMA COMP PIC 9999
05 SPACEW COMP PIC 9999
05 ORTEXT COMP PIC 9999
05 LD COMP PIC 9999
05 EXCLAMATION COMP PIC 9999
01 FILLER REDEFINES HELLOWORLDBINARY
05 HELLOWORLDTEXT PIC XXXXXXXXXXXXX
05 FILLER PIC X
PROCEDURE DIVISION
MOVE 51333 TO HE
MOVE 37779 TO LL
MOVE 38507 TO OCOMMA
MOVE 16614 TO SPACEW
MOVE 38553 TO ORTEXT
MOVE 37764 TO LD
MOVE 23104 TO EXCLAMATION
DISPLAY HELLOWORLDTEXT
GOBACK
ต้องการการเปลี่ยนแปลงบางอย่างเพื่อให้เป็นแหล่งที่มาของตัวอักษรและตัวเลขอย่างแท้จริงเท่านั้น
สามารถลบ PROGRAM-ID ได้ คุณได้รับชื่อโปรแกรมที่สร้างขึ้น (ดูข้อความ)
การทำงาน - การจัดเก็บสามารถลดลงได้ คอมไพเลอร์ครางอีกครั้ง
เนื่องจากทั้งสองบรรทัดก่อนหน้านี้ไม่มีการหยุด / หยุดแบบเต็มระยะเวลาซึ่งไม่เกี่ยวข้องอีกต่อไปในขณะนี้ที่รายละเอียดหายไปทั้งหมดจำนวนข้อความแสดงข้อผิดพลาดเหมือนเดิมมาก่อนและยังไม่ส่งผลกระทบต่อรหัสที่สร้างขึ้นสำหรับโปรแกรม
ในการเปลี่ยน COMP-5 เป็น COMP คำสั่ง VALUE จะไม่ได้รับอนุญาตอีกต่อไปเนื่องจาก COMP 9999 เป็นเพียงตัวเลขสี่หลักเท่านั้นในขณะที่ COMP-5 เป็นไบนารีแบบสองไบต์พร้อมด้วยค่าบิตทั้งหมด
ค่าใน MOVEs คือค่าทศนิยมที่ให้ค่าไบนารี่ซึ่งให้คู่ของอักขระ
แม้ว่าฟิลด์ COMP จะมีตัวเลขสี่หลักและไม่อนุญาตให้ VALUE clauses มีตัวเลขมากกว่าสี่หลักคุณสามารถใช้ตัวเลขเพิ่มเติมใน MOVE ของค่าตัวอักษรโดยไม่ต้องตัดทอนที่จุดนั้น ... อย่าถามฉันว่าทำไม ตัวเลือกคอมไพเลอร์ DIAGTRUNC (ซึ่งฉันปิดไปแล้ว) จะสร้างคำวินิจฉัยสำหรับคำเตือนเหล่านี้
ตัวเลือกคอมไพเลอร์ TRUNC (BIN) สามารถใช้ในการปฏิบัติต่อ COMP ในฐานะ COMP-5 แต่ MOVEs เป็นอีกวิธีในการทำ
เนื่องจากมันคือภาษาโคบอล, เอาต์พุตจึงต้องอยู่ในที่สูงกว่า (เป็นเรื่องโกหก แต่เพื่อความสนุก)
HELLO WORLD!
ตกลงผ่อนปรนตอนนี้ผลิต:
Hello, World!
ซึ่งเป็นตัวละครที่มีจำนวนคี่จำเป็นต้องมีการเปลี่ยนแปลงเพิ่มเติมเนื่องจากเราไม่สามารถมีฟิลด์ไบนารีคี่จำนวนไบต์ด้วยคอมไพเลอร์นี้ ดูบรรทัด 13 Xs นั้น! ปกติแล้วมันจะถูกเขียนเป็น X (13) แต่อาจจะเป็นอย่างที่ฉันได้แสดง ...
และจำเป็นต้องมี ORTEXT (หรือไม่หรือต่อไป) เป็นชื่อเพราะหรือเป็นคำที่สงวนไว้สำหรับคอมไพเลอร์ (หมายถึงหรือแน่นอน)
เหล่านี้คือค่า EBCDIC ไม่ใช่ ASCII เนื่องจากกำลังทำงานบนกล่อง EBCDIC-aware และ Big Endian
โอ้ COBOL ต้องการการหยุดแบบเต็ม / รอบจำนวนมาก ฉันออกไป (พวกเขาถูกแบน) จึงได้รับข้อความที่รวบรวมจำนวนมาก เพิ่งบอกคอมไพเลอร์เพื่อสร้างรหัสต่อไป (ไม่มีข้อความที่เกี่ยวข้องกับรหัสวัตถุ)
แม้ไม่มี DIAGTRUNC ข้อความจะสูงถึง 17 ...
1 IGYDS1003-E A "PROGRAM-ID" paragraph was not found.
Program-name "CBLNAM01" was assumed.
2 IGYDS1082-E A period was required. A period was assumed
before "DATA".
3 IGYDS1082-E A period was required. A period was assumed
before "01".
Same message on line: 11
3 IGYDS1040-E A data item was found in the "DATA DIVISION"
before a section header was encountered.
"WORKING-STORAGE SECTION" was assumed.
4 IGYDS1082-E A period was required. A period was assumed
before "05".
Same message on line: 5 6 7 8
9 10 12 13
14 IGYDS1082-E A period was required. A period was assumed
before "PROCEDURE".
15 IGYPS2145-E A period was required. A period was assumed
before "MOVE".
23 IGYSC1082-E A period was required. A period was assumed
before "END OF PROGRAM".