• 締切済み
  • すぐに回答を!

COBOLの基本的な事なのですが。。。

基本的な事なので、大変申し訳ありませんが教えて下さい。 ex)  A = 5      B = 1     C = 0 と定義しているとします。     MOVE B(A) TO C と定義すると、Cには何が移送されるのでしょうか?     あと、B(A)はどう言う意味?働き?になるのでしょうか?     教えて下さい。よろしくお願いします。     解りにくい説明で大変申し訳ないです。  

共感・応援の気持ちを伝えよう!

みんなの回答

  • 回答No.3

その後、解決されましたか? B(A)は多分、配列ですよ。配列(テーブル)とは同じ型のデータを連続的に並べたデータ形式のことです。 例えば・・・ ワークに以下のように定義します 01 W-A PIC9(01) 01 W-B PIC9(01) 01 W-C PIC9(01) これは同じ型と桁数が連続しているので配列にできます。 01 W-TBL PIC9(01) OCCURS 3  ⇒W-TBLという項目で9(1)の属性で3連続で定義 ↓ つまり・・ W-TBL(1) = W-A W-TBL(2) = W-B W-TBL(3) = W-C のことです。 (1)は配列1つ目、(2)は配列2つ目・・って事です。 また、部分参照であれば書き方としては (定義) 01 W-A PICX(08) 01 W-B PICX(01)  MOVE W-A(3:1) TO W-B です。 W-Aの3桁目から1桁のみW-Bへ設定するという意味になります。 ご参考までに・・・

共感・感謝の気持ちを伝えよう!

  • 回答No.2
  • notnot
  • ベストアンサー率47% (4794/10134)

補足にお書きのプログラムだと、B(W-A) のところでコンパイルエラーになると思います。 変数名の後にカッコが来るのは、#1の方がお書きの配列のn番目の参照か、文字列の部分参照ですが、後者だとB(W-A:)のようにコロンが必要ですし、Bの長さが1なので部分参照も出来ません。 何か勘違いがあるのだと思います。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございました。返事が遅くなり大変申し訳ありません。私の勘違いなのでしょうか。結局、無知過ぎて理解できなかったので、もっと調べてみます。大変ご迷惑をおかけしました。ご協力、ありがとうございました。

  • 回答No.1
noname#9268
noname#9268

ex)  A = 5      B = 1     C = 0 と定義しているとします ですでに勘違いされているようです。 (B=1とは定義できません) B(A)は配列(テーブル)です。 B(1)とかB(2)とかで表します。 COBOLで言うと 01 B PIC X(03) OCCURS 5 これは3文字入る領域を5つ定義したことになります。 MOVEの仕方は MOVE "ABC" TO B(1) MOVE "DEF" TO B(2)  とします。

共感・感謝の気持ちを伝えよう!

質問者からの補足

回答して頂いてありがとうございます。 私の質問の仕方が悪かったみたいです。。。 たぶん、私が質問したい内容とは別の様です。 大変、申し訳ありません。 改めて記入させて頂きます。 ex)  01 W-A PIC9(01) VALUE 2     ワークに定義したものとします。(定義の仕方が間違えていたらすみません。)     01 B PIC9(01) VALUE 3     01 C PIC9(01) VALUE 5 IF B(W-A) = C     DISPLAY '***'   ELSE     DISPLAY '@@@' END-IF  と定義すると、どちらがDISPLAYされるのでしょうか?    それ以前に最初に質問した内容と同じでしたらすみません。。。    本トに、初歩的な事が解っていないのでご迷惑をお掛けします。。。

関連するQ&A

  • COBOLについて

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

  • コボル!!!!!

    今コボルを習い始めています! 分からないことがあったので教えてください! IF (フラグ-終了-A   =   "END") AND  (フラグ-終了-B   =   "END") MOVE "END" TO フラグ-終了 END IF. とはどう言う意味ですか? 後、 COMPUTE    A  =  B  -  C どの様な動きをしているのか教えてください、よろしくお願いします。

  • 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について

    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 2次元配列について

    COBOL の2次元配列(?)について質問です。 例えば 01 A ...03 B OCCURS 5 ......05 C .........07 D OCCURS 10 ............09 E ............09 F とある場合、個々の E,F にアクセスするには どのように記述すればいいのでしょうか。。 MOVE 1 TO E(1,1) や、 MOVE 1 TO A(1,1) ではダメでした…。 よろしくお願いします。

  • COBOL OCCURSで指定したデータの参照の仕方

    IBM COBOL でプログラムを作成しています。 初歩的な質問で恥ずかしいのですが、どなたか教えていただけますか。 まず、以下のようなTABLEを定義しました。 01 A-TABLE. 03 B OCCURS 100. 05 C PIC X(08) VALUE SPACE. 05 D PIC X(02) VALUE SPACE. 05 E PIC X(08) VALUE SPACE. 05 F PIC X(05) VALUE SPACE. 05 G PIC X(05) VALUE SPACE. 05 H PIC X(05) VALUE SPACE. その後に、INPUTファイルからREADしたデータのうち、必要な部分だけを 該当のTABLEに添え字を使用して代入していく処理を作成したいと思っています。 その場合に、上記の「C」~「H」に代入するにはどうすればよいでしょうか? また後続の処理で直接その値を参照したいのですが、どうすれば良いでしょうか? 私の考えられる範囲で以下のようにプログラムしましたが、 実行時に「OUTSIDE THE REGION OF THE TABLE.」というようなエラーが出力されてしまいました。 MOVE I TO C(IDX1) MOVE J TO D(IDX1) MOVE K TO E(IDX1) MOVE L TO F(IDX1) MOVE M TO G(IDX1) MOVE N TO H(IDX1) どなたかよろしくお願いします。

  • 関数の基本

    (1)b=f(a),d=g(c)(a≧1)(a,b,c,dは変数) という関数があるとします。g・f(x)=g(f(x))を考えるとき、 xという文字に条件はないからこの関数の定義域は全ての実数でしょうか? それとも、x≧1となるのでしょうか? (2)y=f(x)(x≧1)、b=f(a)(a≧2)という違う文字で定義されていて定義域が異なる関数はありえるのでしょうか? 定義域の意味はあくまでもその関数(f())の独立変数の取りうる値の範囲ということでしょうか? それとも変数ごとに固有というものでしょうか?

  • 数学基本教えて下さい

    基本的な事だと思いますが、 (a-b)(a-c)(b-c) =イコール -(a-b)(c-a)(b-c) で、マイナスが真ん中の(c-a)だけにかかって左右の括弧にかからないのはなぜでしょうか?

  • 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の(お堅い規格を書き写しただけでない)解説のサイトなどあれば、ご紹介いただけますでしょうか。

  • COBOLを最近はじめたのですが

    COBOLを最近はじめたのですが データの定義のところで A PIC 9(10)S. B PIC S9(10). とあったのですがSの意味がわかりません。 左にあったり右にあったりします。 どちらも同じ意味なのでしょうか