プロが教えるわが家の防犯対策術!

基本的な事なので、大変申し訳ありませんが教えて下さい。

ex)  A = 5 
    B = 1
    C = 0 と定義しているとします。

    MOVE B(A) TO C と定義すると、Cには何が移送されるのでしょうか?

    あと、B(A)はどう言う意味?働き?になるのでしょうか?
    教えて下さい。よろしくお願いします。
    解りにくい説明で大変申し訳ないです。
 

A 回答 (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へ設定するという意味になります。

ご参考までに・・・
    • good
    • 2

補足にお書きのプログラムだと、B(W-A) のところでコンパイルエラーになると思います。


変数名の後にカッコが来るのは、#1の方がお書きの配列のn番目の参照か、文字列の部分参照ですが、後者だとB(W-A:)のようにコロンが必要ですし、Bの長さが1なので部分参照も出来ません。
何か勘違いがあるのだと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/07 22:13

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されるのでしょうか?
   それ以前に最初に質問した内容と同じでしたらすみません。。。
   本トに、初歩的な事が解っていないのでご迷惑をお掛けします。。。

補足日時:2005/02/03 00:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A