코볼
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로 변경할 때 COMP 9999는 십진수 네 자리에 불과하지만 COMP-5는 모든 비트 값을 사용할 수있는 2 바이트 바이너리이므로 VALUE 절은 더 이상 허용되지 않습니다.
MOVE의 값은 문자 쌍을 제공하는 2 진 값을 제공하는 10 진수 값입니다.
COMP 필드에 네 자리 숫자가 있고 네 자리 이상의 VALUE 절을 허용하지 않더라도 해당 시점에서 잘리지 않고 리터럴 값의 MOVE에서 더 많은 숫자를 사용할 수 있습니다. 그 이유를 묻지 마십시오. 컴파일러 옵션 DIAGTRUNC (사용 안함)는 이에 대한 경고 진단을 생성합니다.
컴파일러 옵션 TRUNC (BIN)을 사용하여 COMP를 COMP-5로 처리 할 수 있지만 MOVE를 사용하는 또 다른 방법입니다.
COBOL이므로 출력은 대문자로되어 있어야합니다 (거짓말이지만 재미를 위해).
HELLO WORLD!
OK, reented, 이제 다음을 생성합니다 :
Hello, World!
홀수 개의 문자 인이 컴파일러에는 홀수 바이트 바이트 이진 필드를 가질 수 없으므로 추가 변경이 필요했습니다. 13 X의 라인을보십시오! 일반적으로 X (13)으로 작성되지만 내가 보여준 것처럼 될 수 있습니다 ...
OR은 컴파일러에 예약 된 단어이기 때문에 이름으로 ORTEXT가 필요합니다 (또는 OR이 아님). 물론 OR도 의미합니다.
이는 EBCDIC 인식 및 Big Endian 상자에서 실행되므로 ASCII가 아닌 EBCDIC 값입니다.
아, 코볼에는 많은 정차 / 정지 기간이 필요합니다. 나는 그것들을 버렸고 (금지되었다) 많은 컴파일 메시지를 받았다. 어쨌든 컴파일러에게 코드를 생성하도록 지시했습니다 (메시지 중 어느 것도 객체 코드와 관련이 없습니다).
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".