COBOL (IBM Mainframe)
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
.
Jika Anda menjalankan program di atas (setiap IBM Mainframe COBOL sejak COBOL II (kompiler IBM pertama hingga standar 1985, mungkin juga COBOL IBM lainnya) hasilnya adalah:
02/22/14 13.11.02 HELLO WORLD!
Namun, jika Anda menghapus baris tidak berguna yang tidak berguna "PINDAHKAN RUANG KE W-SAAT DICAMPUR." (bidang memiliki nilai awal ruang, dan memiliki konten lain yang ditempatkan di dalamnya dalam instruksi berikutnya, dan itu bercabang pula) program tidak menghasilkan output dan benar-benar Abends (U4038) (yang berarti crash) dengan pesan berikut :
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.
(kode pesan dan teks akan bervariasi di antara kompiler, offset tergantung pada kompiler yang sebenarnya digunakan dan kompilasi opsi, alamat tergantung di mana program dimuat ketika DIKECUALIKAN).
Alasannya adalah NEXT SENTENCE
. Ini adalah Secret GO TO
. Compiler memburu full-stop / periode berikutnya dalam sumber, dan menghasilkan cabang dengan instruksi berikut. Dari COBOL II, penggunaan full-stop / menstruasi menjadi santai. Suatu program harus diakhiri dengan periode penuh. Dalam hal ini, cabang tidak aktif pada akhir program.
Kedua program mengkompilasi 100% bersih (tidak ada pesan diagnostik, Kode Pengembalian nol).
Perilaku ini adalah "IBM Extension" yang bodoh untuk COBOL. Standar 1985 tidak mengizinkan NEXT SENTENCE
dalam IF
/ END-IF
( CONTINUE
digunakan sebagai gantinya, yang merupakan no-op). IBM mengizinkannya - menyebabkan Gotcha mengerikan dari waktu ke waktu.