- 締切済み
COBOLの基本的な事なのですが。。。
基本的な事なので、大変申し訳ありませんが教えて下さい。 ex) A = 5 B = 1 C = 0 と定義しているとします。 MOVE B(A) TO C と定義すると、Cには何が移送されるのでしょうか? あと、B(A)はどう言う意味?働き?になるのでしょうか? 教えて下さい。よろしくお願いします。 解りにくい説明で大変申し訳ないです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- emily128
- ベストアンサー率33% (15/45)
その後、解決されましたか? 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)
補足にお書きのプログラムだと、B(W-A) のところでコンパイルエラーになると思います。 変数名の後にカッコが来るのは、#1の方がお書きの配列のn番目の参照か、文字列の部分参照ですが、後者だとB(W-A:)のようにコロンが必要ですし、Bの長さが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) とします。
補足
回答して頂いてありがとうございます。 私の質問の仕方が悪かったみたいです。。。 たぶん、私が質問したい内容とは別の様です。 大変、申し訳ありません。 改めて記入させて頂きます。 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されるのでしょうか? それ以前に最初に質問した内容と同じでしたらすみません。。。 本トに、初歩的な事が解っていないのでご迷惑をお掛けします。。。
お礼
回答ありがとうございました。返事が遅くなり大変申し訳ありません。私の勘違いなのでしょうか。結局、無知過ぎて理解できなかったので、もっと調べてみます。大変ご迷惑をおかけしました。ご協力、ありがとうございました。