• 締切済み

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

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

みんなの回答

  • emily128
  • ベストアンサー率33% (15/45)
回答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へ設定するという意味になります。 ご参考までに・・・

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

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

luna55
質問者

お礼

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

noname#9268
noname#9268
回答No.1

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)  とします。

luna55
質問者

補足

回答して頂いてありがとうございます。 私の質問の仕方が悪かったみたいです。。。 たぶん、私が質問したい内容とは別の様です。 大変、申し訳ありません。 改めて記入させて頂きます。 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