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