• 締切済み

cobol コンソールからの入力

accept文でコンソールからの入力を受け付け、通常は20文字を受け付けるが、EXITの4文字が入力された時にはstop runが実行される、という プログラムを作りたいのですが、EXITの4文字を入力後、残り16文字分の無駄打ちをさせずに済ませる方法はないでしょうか?

みんなの回答

回答No.3

acceptする変数側をpic x(20)で定義していれば、最大20文字の文字列で受け取れませんか? (無条件に20回acceptする仕組みにしているため、残りの回数分を考慮しなくてはならないだけでは??) 最大文字列以下の文字数で入力が終わるなら、入力完了のキーが何かしらあると思いますけど。 (ENTERキーとか実行キーとか送信キーとか、環境によりますけど)

全文を見る
すると、全ての回答が全文表示されます。
  • notnot
  • ベストアンサー率47% (4856/10272)
回答No.2

普通、無駄打ちしなくても空白になると思いますけど、無駄打ちしないとどうなります?LOW-VALUEが入る?? いずれにせよ、COBOL一般の話と言うより、環境依存の話ですので、実行環境を書かないと。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

現状、どういう処理にしているのですか?

DFD
質問者

補足

現状は、PIC X(1) OCCURS 20の配列を用意し、この配列に 直接 ACCEPT 配列名 で受け取ります。 その後、EXITが入力されたかの判定をするのですが、ここで IF 配列名 = "EXIT"でSTOP RUNです。 このため、コンソール入力者に無駄な空白を打たせなければならず、 この点を改善したいのですが・・・。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • COBOLの入力チェックについて

    COBOL初心者です。 コンソールから入力した文字列の桁数チェックをしたいのですが、どのようにコーディングすればよいですか? ACCEPT命令を使ってコンソールから入力しています。 是非よろしくお願いします。

  • コンソールでの日本語入力について

    コンソールアプリケーションのプログラムを組んでいるのですが,実行後の画面で日本語は出力されますが,入力ができません.どのようにすれば日本語入力できるのでしょうか? 環境はWinXP,VC++ 6.0です. よろしくお願いします.

  • COBOL

    以下のソースに「指定外の数値です。」になったらプログラムを終了するにしたいのです。ソースを教えてください。 IDENTIFICATION DIVISION. PROGRAM-ID. TEST-001. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 01 W-NUM PIC 9(3). 88 NUM-RANGE VALUE 128 129 130 . PROCEDURE DIVISION. MAIN. DISPLAY "開始(START)". DISPLAY "3桁の数値を入力してください" ACCEPT W-NUM. IF NUM-RANGE THEN DISPLAY "指定の数値です。" ELSE DISPLAY "指定外の数値です。" END-IF. STOP RUN.

  • 回復コンソールが進まない

    教えてください。 XPが通常機動しなくなり、セーフモードで機動しようとした所 \WINDOWS\SYSTEM32\CONFIG\SYSTEM が存在しない又は壊れていると言われました。 WindowsCDを入れ、修復作業をしようとしたのですが Windows XP 回復コンソールにて ------------------------------------- 回復コンソールはシステムの修復と回復機能を提供します。 EXITと入力すると、回復コンソールを終了し、コンピュータを再起動します。 1 D:WINDOWS どの Windows インストールにログオンしますか? ------------------------------------- この項目で1を入力しEnter押してから変化が無く、 うんともすんともいいません、、、 詳しい方この先どうしたらいいか教えてください お願いします。

  • 回復コンソールでも修復できない場合は?

    マイクロソフトからDLした回復コンソールを CDに焼いたものを使って Windowsの回復を試みているのですが、 うまく先に進む事ができません。 以下のように Microsoft Windows XP(TM) 回復コンソール。 回復コンソールはシステムの修復と回復機能を提供します。 EXITと入力すると、回復コンソールを終了し、コンピューターを再起動します。 1: C:\WINDOWS どのWindowsインストールにログオンしますか?(取り消すにはEnterキーを押してください)_ と出たあと、 1と入力し、Enterを押すのですが、 C:\WINDOWS>1 認識できないコマンドです。HELPと入力すると、 サポートされているコマンドの一覧が表示されます。 C:\WINDOWS>_ と表記されてしまい、何度1を入力しても同じ表示が出るだけで先に進めません。 通常はここでパスワード入力を促される表示になると思うのですが・・・ 色々調べてみたのですが、どうしてもわからないので、 どなたかその先へ進む方法、もしくは、この状態の意味を教えて頂けますでしょうか? やはり回復コンソールでの修復は無理なのでしょうか・・・ どうぞよろしくお願い致します。

  • COBOL わかりません。。。

    質問を書き直しました。テキストを読めば読むほどわからなくなります。 どなたか教えてくださいませんか?。。。 1月~6月の売上高の合計と、 半年の売上高の合計に対する各月の割合を表示するプログラムを作成しろという課題が出たのですが、実行してみたら合計の数字が違うのです。。。。 WORKING-STORAGE以下を貼り付けました。 01 1月 PIC 9(8). 01 2月 PIC 9(8). 01 3月 PIC 9(8). 01 4月 PIC 9(8). 01 5月 PIC 9(8). 01 6月 PIC 9(8). 01 半年合計 PIC 9(9). 01 表示半年合計 PIC Z(9)9. 01 1月割合 PIC Z(2)9.99. 01 2月割合 PIC Z(2)9.99. 01 3月割合 PIC Z(2)9.99. 01 4月割合 PIC Z(2)9.99. 01 5月割合 PIC Z(2)9.99. 01 6月割合 PIC Z(2)9.99. PROCEDURE DIVISION. DISPLAY "各月の売上高を入力してください。" AT 0505. DISPLAY "1月の売上高" AT 0705. ACCEPT 1月 AT 0718. DISPLAY "2月の売上高" AT 0805. ACCEPT 2月 AT 0818. DISPLAY "3月の売上高" AT 0905. ACCEPT 3月 AT 0918. DISPLAY "4月の売上高" AT 1005. ACCEPT 4月 AT 1018. DISPLAY "5月の売上高" AT 1105. ACCEPT 5月 AT 1118. DISPLAY "6月の売上高" AT 1205. ACCEPT 6月 AT 1218. COMPUTE 半年合計 = 1月 + 2月 + 3月 + 4月 + 5月 + 6月. MOVE 半年合計 TO 表示半年合計. DISPLAY "合計売上高は" AT 1405. DISPLAY 表示半年合計 AT 1428. DISPLAY "円です。" AT 1436. COMPUTE 1月割合 = 100.00 * (1月 / 半年合計). COMPUTE 2月割合 = 100.00 * (2月 / 半年合計). COMPUTE 3月割合 = 100.00 * (3月 / 半年合計). COMPUTE 4月割合 = 100.00 * (4月 / 半年合計). COMPUTE 5月割合 = 100.00 * (5月 / 半年合計). COMPUTE 6月割合 = 100.00 * (6月 / 半年合計). DISPLAY "半年間の売上高に対する各月の割合は" AT 1605. DISPLAY "1月:" AT 1905. DISPLAY 1月割合 AT 1912. DISPLAY "%" AT 1918. DISPLAY "2月:" AT 2005. DISPLAY 2月割合 AT 2012. DISPLAY "%" AT 2018. DISPLAY "3月:" AT 2105. DISPLAY 3月割合 AT 2112. DISPLAY "%" AT 2118. DISPLAY "4月:" AT 2205. DISPLAY 4月割合 AT 2212. DISPLAY "%" AT 2218. DISPLAY "5月:" AT 2305. DISPLAY 5月割合 AT 2312. DISPLAY "%" AT 2318. DISPLAY "6月:" AT 2405. DISPLAY 6月割合 AT 2412. DISPLAY "%" AT 2418. STOP RUN. 実行結果 例えば、1月 00000100       ・       ・       ・     6月 00000100 と各月すべて100と入力したら、合計は6円です。という具合に実行結果が出ます。 どのように直せばよいでしょうか?

  • 回復コンソールについて教えてください。

    HDDがおかしくなったようで、XPが立ち上がりません。このサイトで回復コンソールを試みたら?という答えをいくつか見ましたが、そこで教えてください。 私のPCは 電源投入後 verifiyring pool date ....のような文字が出て、それ以上進まないという状況です。CDーROMでのブートは可能ですので回復コンソールまではたどり着けます。 たどり着いた後、fixmbr, fixboot, chkdskの3種を試してみようとおもいますが、どの順番で試すのがよいでしょうか? 一番恐れているのはHDDのデータが読めなくなること。fixmbrなどを実行することによって、事態がよけい悪くなることはあるのですか?(上記の3コマンドはノーリスクですか?) それぞれの実行コマンドですが chkdsk c: /r はわかるのですが後の2個のコマンド入力がわかりません。最後までどのように入れたらよいか教えてください。 よろしくお願いいたします。

  • JP1でCOBOLからの返り値を取得したい

    COBOL(NetExperess5.0)で作成したプログラムをexe形式にしてJP1のAJS2で動くようにしています。 このときJP1AJS2でCOBOLの実行結果を返り値として取得して、その後の処理の判定に使用したいと考えてるのですが、どのように設定すればよいのでしょうか。 COBOL側でのコーディング例とJP1での設定例を教えていただけませんか。 ちなみにCOBOLのコーディングでSTOP RUN 99 といった感じで終了させると、異常終了になってしまうのでJP1で次処理へ進めないのです。 STOP RUNで操作するわけではないのかなとも思っていますが、他の方法とかご存知の方教えてください。

  • Eclipseコンソール表示を、リセットするには?

    よろしくお願いします。Eclipse上でJava勉強をしているものです。 実行後にコンソール・ウィンドウに処理結果が表示されますが、 ここである入力を行えば、表示されている文字を消して、次の入力または 出力状態を表示させることは可能なのでしょうか? 可能であれば、どのような処理を行わせれば良いのか、 是非ご教授をお願いします。 例) 実行↓    ngと入力   画面クリア  次の入力待ち ┏━━━┓ ┏━━━┓ ┏━━━┓ ┏━━━┓ ┃hello ┃→┃hello  ┃→┃    ┃→┃入力:┃  ┃    ┃ ┃ng   ┃ ┃     ┃ ┃    ┃ ┗━━━┛ ┗━━━┛ ┗━━━┛ ┗━━━┛

  • emacsとコンソールでのどっちつかずの文字化け

    linux初心者です。 少々ややこしい話なのですが、当初、OpenSUSE11がインストールされているコンピュータに、teratermでログインしてプログラムを作成していました。このときはエディタにはemacsを使っていました。emacs上での日本語表示、コンパイル実行後のコンソール上での日本語表示どちらも正しく日本語が表示されていました。 この後、linuxの勉強をしようと思って、OSにFedora8をインストールし、teraterm上から作成したソースをこちらのPCに移すと、実行後のコンソール画面で文字化けしました。これを直すためにコンソール画面の文字コードを変更してコンソールでの日本語が正しく表示されるように修正すると、今度はemacs上での日本語が文字化けしました。 多分、文字コードが合っていないためだと思うんですが、これを回避する方法をご存知の方はいないでしょうか? もし対処法をご存知の方が居られたら、教えていただきたく思います。よろしくお願いします。