Christian124 Geschrieben 14. Juni 2009 Teilen Geschrieben 14. Juni 2009 Hallo alle, nachdem ich schon im COBOL-Forum gefragt hatte und dort leider keine Antwort kam, da das Forum wohl kaum besucht wird, versuche ich hier nochmal mein Gück: ich bin seit heute dabei mich in Cobol einzuarbeiten. Ich habe schon ein paar einfache Bespiele (Hello-World usw.) nachvollzogen. Nun sitze ich an einem Programm, das den Namen des Nutzers per Eingabeaufforderung einliest und ihm dann einen Begrüßungssatz auf dem Bildschirm ausgibt. Das Problem ist jedoch, dass der eingegeben String (wenn man es bei Cobol so nennen kann) immer eine feste Länge haben muss. Genauer gesagt: wenn ich bei der Deklaration der Variablen eine Länge von z.B. 10 Zeichen angebe, muss ich in der Eingabeaufforderung auch genau 10 Zeichen eingeben, damit sie beendet wird und der Satz mit der Begrüßung erscheint. Gebe ich weniger Zeichen ein, wechselt ein Enter nur in eine neue Zeile und die Eingabeaufforderung wartet weiter auf meine Eingaben, bis ich 10 Zeichen eingegeben habe. Ich kann aber manuell mit Strg+Z ein Zeilenende-Zeichen machen und dann wird ACCEPT auch beendet. In den Beispielen die ich gefunden habe, wurde es mit der ACCEPT-Anweisung aber genauso gemacht. Ich arbeite mit NetCOBOL for .NET 3.1 und dem Microsoft Visual Studio 2005 unter Windows XP. Weiß hier jemand, woran es liegen könnte? Hier mein Sourcecode: 000001 IDENTIFICATION DIVISION. 000003 PROGRAM-ID. MAIN AS "salutationname.Main". 000004 000005 ENVIRONMENT DIVISION. 000006 000007 CONFIGURATION SECTION. 000008 SPECIAL-NAMES. 000009 REPOSITORY. 000010 000011 DATA DIVISION. 000012 WORKING-STORAGE SECTION. 000013* Variables000020 01 WAITER PICTURE IS X. 000021 01 THE-NAME PIC X(10). 000022 000023 PROCEDURE DIVISION. 000024 PROGRAMM-BEGIN. 000026 DISPLAY "Enter your name:". 000027 ACCEPT THE-NAME.000028 000029 DISPLAY "Hallo " THE-NAME. 000030 000031 ACCEPT WAITER. 000032 PROGRAM-END. 000033 000034 END PROGRAM MAIN. Sicherlich fällt bei dem Programm sofort die unterschiedliche Deklaration der Variablen auf: "PICTURE IS X" scheint die alte Form zu sein. in neueren Beispielen habe ich PIC X(x) gesehen. Vielen Dank im voraus Christian Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 15. Juni 2009 Teilen Geschrieben 15. Juni 2009 (bearbeitet) Du kannst dem accept noch irgendwie mitgeben das es bei Enter die Eingabe beendet wenn ich mich richtig erinnere. Frag mich aber nicht wie das genau war, bin froh das alles erfolgreich verdrängt zu haben PS: Wenn man nach "Cobol accept" googelt erscheint der Thread hier schon auf der ersten Ergebnisseite Bearbeitet 15. Juni 2009 von Guybrush Threepwood Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 15. Juni 2009 Teilen Geschrieben 15. Juni 2009 Ich habe eben nochmal eine COBOL Unterlagen entstaubt. Da steht aber auch nur drin dass das Programm solange angehalten wird bis die gewünschten Daten eingeben wurden und Return gedrückt wurde. Als Optional wir in meine Dokumentation noch die From Klausel angeben. ACCEPT Bezeichner FROM CONSOLE Ansonsten schau dir mal deine Konsole wo die Ausgabe drin erscheint an ob hier mit dem Return wirklich ein Zeilenende Zeichen gesetzt wird. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Christian124 Geschrieben 17. Juni 2009 Autor Teilen Geschrieben 17. Juni 2009 Hallo Ihr, danke für die Antworten. Ich das Ganze nochmal unter Linux mit dem Compiler OpenCobol getestet. Da ist es kein Problem mit dem Return und funktioniert so wie es auch soll. Der Hinweis von Schiller256 mit dem ACCEPT Bezeichner FROM CONSOLE hat funktioniert. Vielen Dank an Schiller und Guybush für eure Mühe. Viele Grüße Christian. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.