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
Yalnızca gerçekten alfasayısal bir kaynak olması için bazı değişiklikler yapılması gerekiyor.
PROGRAM kimliği bırakılabilir. Üretilen bir program adı elde edersiniz (mesajlara bakınız).
ÇALIŞMA-DEPOLAMA bırakılabilir. Yine derleyici inliyor.
Bu satırların her ikisinde de daha önce tam duraklar / süreler eksik olduğundan, artık açıklamaların tamamen eksik olduğu için artık geçerli değildir, hata mesajlarının sayısı öncekiyle aynıdır ve yine de program için oluşturulan kodu etkilemez.
COMP-5 ila COMP değiştirilirken, COMP 9999 sadece dört ondalık basamak olduğundan COMPAL 5 değerlerine artık izin verilmez, COMP-5 ise tüm bit değerleri olan iki bayt bir ikilidir.
MOVE'lerdeki değerler, karakter çiftlerini veren ikili değerleri veren ondalık değerlerdir.
COMP alanlarının dört basamağı olmasına rağmen ve dört basamaktan fazla VALUE yan tümcesine izin vermemesine rağmen, bu noktada kesilmeden değişmez bir değerin MOVE'inde daha fazla basamak kullanabilirsiniz ... nedenini sorma. Derleyici seçeneği DIAGTRUNC (kapattığım) bunlar için uyarı diyagnostiği üretecektir.
Derleyici seçeneği TRUNC (BIN), COMP-COMP'ı 5 olarak ele almak için kullanılabilir, ancak MOVE'ler bunu yapmanın başka bir yoludur.
COBOL olduğundan, çıkışın UPPER CASE (bir yalan, ama sadece eğlence için) olması gerekir.
HELLO WORLD!
Tamam, şimdiden, şimdi:
Hello, World!
Tek sayıda karakter olması nedeniyle, daha fazla değişiklik yapılması gerekiyor; çünkü bu derleyicide tek sayı baytlık ikili alanlara sahip olamıyoruz. Şu 13 X çizgisine bak! Normalde X (13) olarak yazılır, ancak gösterdiğim gibi olabilir ...
ORTEXT bir isim olarak gereklidir (ya da değil), çünkü OR derleyiciye ayrılmış bir sözcüktür (tabii ki OR anlamına gelir).
Bunlar, EBCDIC uyumlu ve Big Endian kutusunda çalıştığından ASCII değil EBCDIC değerleridir.
Oh, COBOL çok fazla durma / süre gerektirir. Onları dışarıda bıraktım (yasaklandılar) bu yüzden birçok derleme mesajı aldım. Sadece derleyiciye yine de kodu oluşturmasını söyledim (iletilerin hiçbiri nesne koduyla ilgili değil).
DIAGTRUNC olmadan bile, mesajlar şimdi 17'ye ...
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".