COBOL (IBM Ana Bilgisayarı)
ID DIVISION.
PROGRAM-ID. USELESS.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 W-WHEN-COMPILED PIC X(8)BX(8) VALUE SPACE.
PROCEDURE DIVISION.
IF W-WHEN-COMPILED EQUAL TO SPACE
NEXT SENTENCE
END-IF
MOVE SPACE TO W-WHEN-COMPILED.
MOVE WHEN-COMPILED TO W-WHEN-COMPILED
DISPLAY W-WHEN-COMPILED " HELLO WORLD!"
GOBACK
.
Yukarıdaki programı çalıştırırsanız (COBOL II’den bu yana herhangi bir IBM Mainframe COBOL’u çalıştırırsanız (ilk IBM derleyici 1985 standardına, muhtemelen diğer IBM COBOL’lerine de) çıktı:
02/22/14 13.11.02 HELLO WORLD!
Ancak, üç işe yaramaz çizgisini kaldırırsanız "YERLEŞTİRİLMESİ GEREKEN YERLEŞTİR". (alan bir başlangıç boşluğuna sahiptir ve bir sonraki komutun içine yerleştirilmiş başka bir içeriğe sahiptir ve yine de dallanmıştır) program çıktı vermez ve aslında Abends (U4038) (bu mesaj çöker) ile aşağıdaki mesajı izler. :
IGZ0037S The flow of control in program USELESS proceeded beyond the
last line of the program. From compile unit USELESS at entry
point USELESS at compile unit offset +000003AC at entry offset
+000003AC at address 119003AC.
(mesaj kodu ve metin derleyiciler arasında değişecektir, ofsetler kullanılan gerçek derleyiciye ve derleme seçeneklerine bağlı olacaktır, adres EXECuted olduğunda programın nereye yüklendiğine bağlıdır).
Sebebidir NEXT SENTENCE
. Bu bir Secret GO TO
. Derleyici kaynaktaki bir sonraki tam durak / dönemi yakalar ve aşağıdaki talimat için bir dal oluşturur. COBOL II'den itibaren tam durak / dönem kullanımı gevşetildi. Bir program tam durma / süre ile bitmelidir. Bu durumda, dal programın dışındadır.
Her iki program da% 100 temiz derler (teşhis mesajları yok, Sıfırlama Kodu).
Bu davranış, COBOL için aptal bir "IBM Uzantısı" dır. 1985 Standardı, / NEXT SENTENCE
içine izin vermez ( bunun yerine kullanılır, ki bu işlem yapılmaz). IBM buna izin verdi - zaman zaman korkunç Gotcha'lara neden oldu.IF
END-IF
CONTINUE