COBOL
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
Diperlukan beberapa perubahan untuk menjadi sumber yang benar-benar alfanumerik saja.
PROGRAM-ID dapat dihapus. Anda mendapatkan nama program yang dihasilkan (lihat pesan).
STORAGE KERJA bisa dijatuhkan. Lagi-lagi rintihan kompiler.
Karena kedua baris ini sebelumnya telah berhenti penuh / periode, yang tidak lagi relevan sekarang karena deskripsi sepenuhnya hilang, jumlah pesan kesalahan sama dengan sebelumnya, dan masih tidak mempengaruhi kode yang dihasilkan untuk program.
Dalam mengubah COMP-5 menjadi COMP, klausa VALUE tidak lagi diizinkan, karena COMP 9999 hanya empat digit desimal sedangkan COMP-5 adalah biner dua byte dengan semua nilai bit tersedia.
Nilai dalam MOVE adalah nilai desimal yang memberikan nilai biner yang memberikan pasangan karakter.
Meskipun bidang COMP memiliki empat digit, dan tidak membolehkan klausa VALUE dengan lebih dari empat digit, Anda dapat menggunakan lebih banyak digit dalam MOVE nilai literal tanpa pemotongan pada saat itu ... jangan tanya mengapa. Opsi kompiler DIAGTRUNC (yang telah saya matikan) akan menghasilkan diagnostik Peringatan untuk ini.
Opsi kompiler TRUNC (BIN) dapat digunakan untuk memperlakukan COMP sebagai COMP-5, tetapi MOVE adalah cara lain untuk melakukannya.
Karena COBOL, hasilnya harus dalam KASUS UPPER (bohong, tapi hanya untuk bersenang-senang).
HELLO WORLD!
OK, mengalah, sekarang menghasilkan:
Hello, World!
Yang, sebagai jumlah ganjil karakter, memerlukan beberapa perubahan lebih lanjut, karena kita tidak bisa memiliki bidang biner ganjil-angka-byte dengan kompiler ini. Lihat baris 13 X itu! Biasanya akan ditulis sebagai X (13), tetapi bisa seperti yang saya tunjukkan ...
Dan ORTEXT diperlukan (atau bukan ATAU, bagaimanapun) sebagai nama karena ATAU adalah kata yang disediakan untuk kompiler (itu berarti ATAU, tentu saja).
Ini adalah nilai-nilai EBCDIC, bukan ASCII, karena ini berjalan pada kotak yang sadar-EBCDIC, dan Big Endian.
Oh, COBOL membutuhkan banyak penghentian / periode penuh. Saya meninggalkan mereka (mereka dilarang) sehingga mendapat banyak pesan kompilasi. Hanya mengatakan kepada kompiler untuk menghasilkan kode (tidak ada pesan yang berhubungan dengan kode objek).
Bahkan tanpa DIAGTRUNC, pesannya sekarang hingga 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".