2017-12-31 101 views
1

Ich habe versucht, mir COBOL beizubringen. Beim Versuch, dies zu tun, bin ich auf ein Problem gestoßen, das ich nicht herausfinden kann.Open-COBOL Uknown seg Fehler

Ich bin Ubuntu 16.04, und mit GnuCOBOL (Open-COBOL) zu kompilieren. Ich dachte, dies könnte ein Problem mit der Open-COBOL-Version aus dem Repository gewesen sein, so dass ich aus der Quelle kompiliert habe und das gleiche Problem erhalte.

Beim Versuch, diesen Code auszuführen:

IDENTIFICATION DIVISION. 
PROGRAM-ID. Multi. 

DATA DIVISION. 
WORKING-STORAGE SECTION. 
*> Group Value 
    01 VALS. 
*> Elementary Value 
     05 VAL-1 PIC 9(03) VALUE 4. 
     05 VAL-2 PIC 9(03) VALUE 3. 
     05 RESULT PIC 9(06). 


PROCEDURE DIVISION. 
    MULTIPLY VAL-1 BY VAL-2 GIVING RESULT. 
    DISPLAY "Result is =" RESULT. 
    DISPLAY 'GROUP DATA ITEM = ' VALS. 

I erhalten:

Segmentation fault (core dumped) 

ich mit kompiliert:

cobc -free -o Multi.o ./Multi.cob 

Ich kann nicht scheinen, um herauszufinden, was ich tat falsch, und was verursacht den Seg Fehler. Irgendwelche Ideen? Danke im Voraus!

+0

Welchen Befehl verwenden Sie, um Ihr Programm auszuführen? –

+0

Einfach ./Multi.o, Das sollte nach den GnuCOBOL-Beispielen funktionieren. –

+2

Das funktioniert nur, wenn Sie mit '-x' kompilieren. Standardmäßig kompiliert GnuCOBOL zu Modulen (die Sie mit 'cobcrun' ausführen), nicht zu ausführbaren Dateien. –

Antwort

3

Aus Ihrem Kommentar sieht es so aus, als hätten Sie das Modul Multi.o als ausführbare Datei verwechselt. Die Art, das Programm Multi vom Modul auszuführen, ist cobcrun Multi.

Alternativ können Sie eine normale ausführbare Datei mit cobc -x erstellen.