2016-06-09 10 views
-1

Ich möchte ein Key-Press-Ereignis in COBOL mit dem isCOBOL-Compiler erkennen. Wie geht das?Wie funktioniert while (! Kbhit()) COBOL?

EX in C:

if(time==despert_time){ while(!kbhit()){ Beep(500,500); } }

+0

Vermutlich haben Sie ein Handbuch? –

+0

Da COBOL ursprünglich ohne viel Mittel zur Interaktion mit Menschen entwickelt wurde, haben die Compiler-Hersteller die eigenen DISPLAY- und ACCEPT-Funktionen mit ihren eigenen Erweiterungen erweitert. Sie müssen herausfinden, * ob * und * wie * isCOBOL ermöglicht Ihnen, das zu tun. Das 'Do' ist eine einfache Inline-' PERFORM'. –

+0

GUI oder nicht GUI? Von der Konsole aus können Sie möglicherweise mit dem Aufruf von Java System.in.Available() fortfahren (wenn das Terminal nicht auf Leitungen zwischenspeichert). Wenn Grafiken beteiligt sind, schreiben Sie eine kleine Klasse auf, um einen ActionListener und einen Handler für keyPressed, keyReleased oder keyTyped hinzuzufügen (je nachdem, wie Sie damit umgehen wollen). Kurz gesagt, dies wird wahrscheinlich einfacher von Java als COBOL sein. Wenn Sie dies wirklich von COBOL aus tun müssen, schauen Sie auf "CALL" SYSTEM "mit" stty raw "', dann '" stty cooked "', nachdem Sie einen Tastendruck (unter GNU/Linux) akzeptiert haben. Die Windows-Konsole hat eine andere Reihenfolge. –

Antwort

1

Es sieht aus wie Sie eine Interaktion mit dem Benutzer von der Konsole erhalten möchten. Wenn es nicht innerhalb eines Zeitrahmens geschieht: Piep

PERFORM FOREVER *> or UNTIL EXIT or UNTIL 0 = 1, depending on the available extensions 
    ACCEPT OMITTED *> or ACCEPT DUMMY [which you'd define as 77 DUMMY PIC X.], depending on the available extensions 
     BEFORE TIME 500 *> [or WITH TIMEOUT 500] this is a more or less common extension, with most vendors using a different time scale --> may need to change the 500 
    END-ACCEPT 
    IF keypressed NOT = timeout *> the actual var to be checked and the timeout value need to be checked in the docs 
     EXIT PERFORM 
    END-IF 
    CALL x'E5' 
     ON EXCEPTION *> the system call x'E5' for beep may not be available 
     DISPLAY SPACE AT 2080 WITH BEEP *> may not be available, too... 
    END-CALL 
END-PERFORM 

Überprüfen Sie die Online-Dokumentation, die mit Ihrem Compiler („nur für Kunden verfügbar“ ist, deshalb können wir nicht überprüfen).

+0

Wenn Sie eine Antwort nicht akzeptieren (oder ablehnen): Bitte hinterlassen Sie immer einen Kommentar. Vielen Dank. –

+0

Vielen Dank für die Antwort !!! – Jonas

+0

@ Jonas, funktioniert die bereitgestellte Antwort für Sie? Wenn ja: Bitte als Antwort markieren, falls nein: Bitte kommentieren Sie die Antwort, die Sie vermissen. –