• ベストアンサー

COBOL仕様確認

COBOLの仕様確認ですが、 AのプログラムからBを呼ぶ場合、 Bで何らかの値をセットし、Aへ一旦、戻ります。 再度、AからBを呼んだ場合、 前回、Bを呼んだときにセットした値を このときに参照可能でしょうか? それともセットした値が初期化されているのでしょうか? 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • watch-lot
  • ベストアンサー率36% (740/2047)
回答No.1

呼ばれるプログラムBにもよりますが、通常は初期化されます。 アッセンブラなどを使えば残値させる方法もありますが、わざわざそんな手法を採る必要があるのでしょうか? メンテナンスのことも考えれば、基本的には毎回呼び出す度にパラメータとして受け渡しすべきです。

その他の回答 (2)

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.3

そう言う場合はAからBを呼ぶ時に引数を渡して、BではAからの引数に値を設定します。 Aはその値を保存しておいて、次にBを呼ぶ時に、その値を設定します。 始めてBを呼び出すときには、その値は初期化しておきます。 プログラムは、自分の中の初期値を設定していない変数の値を参照してはいけません。 COBOLに限定した問題ではありません。

回答No.2

どこのメーカーの何というCOBOLの話ですか? OSは? メインフレームであれば、リエントラント、リユーザブルなどの属性で話が違ってきます。

関連するQ&A

  • COBOLについて

    COBOLで以下のような仕様の場合、どのようなロジックにするのが良いでしょうか? ・仕様  A項目=値A または  B項目=値B または  (C項目=値C かつ D項目=値D ) または  E項目=値E 上記の場合、何も処理しない(以降の処理もせずに、次レコードを読みに行く  上記以外の場合、処理1を行い、次処理以降の処理を継続する。 (ロジック1) IF A項目=値A OR B項目=値B OR (C項目=値C かつ D項目=値D ) OR E項目=値E THEN CONTINUE ELSE 処理1を行う END-IF. (ロジック2) IF A項目=値A MOVE '1' TO 該当フラグ END-IF. IF B項目=値B MOVE '1' TO 該当フラグ END-IF. IF (C項目=値C かつ D項目=値D ) MOVE '1' TO 該当フラグ END-IF. IF E項目=値E MOVE '1' TO 該当フラグ END-IF. IF 該当フラグ='1' CONTINUE ELSE 処理1 END-IF. 自分は仕様に沿ってロジック1で組むべきだと思うのですが、 ロジック1は分かりずらいのとメンテが大変なのでロジック2で組むべきだと言われました。 どちらで組むのが普通でしょうか?どなたか教えて下さい!

  • COBOL

    こんにちわ。COBOLプログラムの解析をしています。 現状不可解な問題に直面しています。 IF A=189 AND B=200 or 201 or 202 プログラム内に上記のような判定文があります。 プログラムを実行するとこの判定分が真になる場合があります。 真になった際の変数A及び変数Bの中身を見てると以下の2通りでした。 (1)A=189 B = 200 (2)A= 299 B= 202 (1)は正しいと思いますが、(2)の場合に真になるということがありえるのでしょうか? いや実際に、なったのですがどういう原因が考えられるしょうか? 注:会社で使用しているプログラムの為本文は出せません。

  • COBOL

    すごい簡単な問題なんで恐縮します。COBOL超初心者です。 通信学習で学んでるのですが、テキストに詳しく載っていないので行き詰っています。 下記A, B, Cの値を求めなさい。 MOVE 9 TO A. COMPUTE B = A / 3 COMPUTE C = A + B COMPUTE A = A * 2 で、私が考えた答は、 A = 18 B = 3 C = 12     です。 自分の出した答に全く自信がありません。 どなたか、合っているか教えて下さいませんか? そして、間違っている場合、答の求め方を教えて下されば幸いです。 宜しくお願いいたします。

  • COBOLでMS-DOSコマンドの発行は?

    言語は日立系COBOL85なんですが、COBOLプログラム内で、 MS-DOSコマンド(例.MOVE A,TXT B.TXT)等のコマンド発行は可能でしょうか? コマンド発行でなくてもテキストファイル名操作が出来れば可です。 オンラインプログラムでは、サービスプログラム?を使用し、 確認できたのですが、バッチプログラムでは、 そのサービスプログラム?は、使用できない様な事を言われました。 SHELL等でではなく、直接COBOLからコマンド発行等が可能な方法は、ありませんでしょうか? できれば 具体的に教えて頂ければと思います。

  • COBOLについて

    COBOL初心者なのですが。 COBOLで 01 A.   03 B PIC 9(02).   03 C PIC X(02). MOVE  SPACE  TO  A. とした時、基本項目であるBには何が入っているのでしょうか? 数字項目にSPACEというのはありえないですよね。 どなたかわかる方、教えていただけませんか?

  • cobolの関連ソースについて

    今、触ったこともないcobolのソースの管理をやれ、と言われてます。 で、cobolの実行プログラム、拡張子は、*****.so 見たいな感じなのですが、それをコンパイルするのに、多くのソースがいるみたいなのです、その関連を調べろ、と言われました。たとえば、cobolのmakefileと呼ばれているものを、unix上でviで開いてみると、「ヘッダープログラム」なるコメント文が書いていたり、オブジェクトとか書いていたり、、そして、そのヘッダーの部分をみると、たしかにプログラムの名称が書いているので、今度はそのプログラムの中身を見てみると、同じように、また違うプログラムを参照しているようなのです。ひとつの実行ファイルを生成するのに、ソースがツリー構造になっていて、それをすべて理解する必要があるのですが、中身をみたときに、どういうコマンド等を参照していけばいいのかわかりません。 分かりやすく整理すると、ある実行プログラムを生成するのに、ソースが必要なのですが、そのソースの全てを洗い出すには、どうすればいいのか?ということなのですが、 詳しい方、ぜひよろしくお願いします!

  • COBOLで文字変数Aと絶対に一致しない特殊値は?

    COBOLでプログラミングをしています。ある変数AとBがあり、どちらも領域はPIC X(1)です。 この変数Aを、いかなるときでも変数Bと一致させたくないとき、Bに入れる「END OF FILE」のような特殊な値って無いのでしょうか? そのような値が存在するならば、AかBにその特殊な値を入れておけばいいと思うのですが、 もし無いとすれば、以下のような処理をスマートにCOBOLで作るには、どのように作るのが一般的ですか? PERFORM文を用いて終了条件がA=Bのとき、 最初の処理では必ずPERFORMの中の処理を行い、 2回目からは終了条件で実行するかどうかを判定するような処理 よろしくお願いします。

  • COBOL 9(02)で定義した変数にマイナス値をセットすると?

    COBOLについて教えてください。 現在、既存のシステム(COBOL)を机上でチェックしているのですが、 関数からの戻り値変数を (例)RC 9(02) で定義して、 異常発生時に、MOVE -1 で値セットしているロジックがありました。 S9タイプではないので、誤動作を起こすと思うのですが、 実際このような処理を行うと、変数RCにはどんな値がセットされるのでしょうか? 実行環境が無いので、動作確認ができず、困っています。(バグかと思うのですが、該当のロジックは幸いにも今まで実行されていなかったようです) よろしくお願いします。

  • COBOL数値転記の仕様

    このたび、まったくの未経験のCOBOLをやることになりました。 で、数値データの表し方になんやかやとやたら方法があるようなのですが、それらを互いに「転記」したときに、どういう結果になるものか、皆目わからないんです(環境はCOBOL85でWindows上での開発です)。 テクニックとしては基本だと思うのですが、それでいてどこにも説明されていな~い!フリーのCOBOLツールは見つけてきましたが、使い方が???なもので…。  たとえば、  01 X1 PIC XX (数値が入ってるとします)  01 N1 PIC 99  01 D1 PIC 99 COMP  01 B1 PIC 1(16) BIT な場合、X1とN1は直接  MOVE N1 TO X1 などとやってもデータは失われないと思うんですが、他の形式での操作は(桁あふれとか無視して)ちゃんと転記できるのでしょうか。 いま特に、D1からX1へというパターンが多いです。1バイトの2進データを、数値の文字列として使おう、というんです。いわば、1バイトを3バイトに展開してやるんです。何も考えずに書けば、  01 D2 PIC 9(4) COMP VALUE 97  01 X2 PIC X(3)  MOVE D2 TO X2 でしょうけど、たぶん'a△△'になるだけのような気がします…。  それとも、  01 N2 PIC 9(4)  MOVE D2 TO N2  MOVE N2 TO X2 などとやっていけたりするのでしょうか。 いったいどうなるのでしょう、いろいろ書いちゃいましたけど、各々の転記の仕組みを教えてください。 また、COBOLの(お堅い規格を書き写しただけでない)解説のサイトなどあれば、ご紹介いただけますでしょうか。

  • CシェルとCOBOLについて

    初めて質問させて頂きます。 初心者の為、あまりうまく質問が出来るかどうかわかりませんが宜しくお願い致します。 今、 CシェルからCOBOLを呼び 呼ばれたCOBOLの内部で処理をしています。 そこで、 COBOLの内部で処理した値を呼び元のシェルに返すことは 出来るのでしょうか? 返す項目は、複数あり数値項目、文字項目両方あります。 プログラムのほうもあまり詳しくはありませんので、 初歩的な質問かも知れませが、 何方かご教授願いませんでしょうか。

専門家に質問してみよう