• ベストアンサー

COBOLの変数

COBOLの勉強をしているのですが、下記の記述がありました。 たとえば、-1000を代入する場合、 PIC 99999.なら、00100になる PIC ZZZZZ.なら、 10000になる とありました。 なぜ、桁がずれているかわかりません。 予想では PIC 99999.なら、01000になる PIC ZZZZZ.なら、 1000になる なのですが、間違えなんですよね? どなたか、理由を教えてください。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

サイトの記載ミスですね。 提示されたサイトは、特定メーカーの特定の環境でのCOBOL、しかも古いCOBOLの仕様に基づいたものばかりなので、これから勉強するなら、利用しない方がいいでしょう。

goouser20
質問者

補足

サイトの記載ミスとわかってよかったです。 私の予想であってるでしょうか? -1000を代入する場合、 PIC 99999.なら、01000になる PIC ZZZZZ.なら、 1000になる 教えていただけるとありがたいです。 よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

>間違えなんですよね? 提示された範囲で分かる部分では、そうです。 しかし、間違った使い方をしている可能性が高いのでは? >どなたか、理由を教えてください。 次のような事項を明示してください。 (1)どこのメーカーの何というCOBOLコンパイラか? (2)変数をどのように宣言しているか? (3)代入の方法

goouser20
質問者

補足

サイトのCOBOL入門で勉強しています。 URL: http://www.aufheben.info/kouza/beginner/kouza_cobol.html 変数のタイプを指定します。 で検索していただければ、説明文をそのまま読んでいただけると思います。ただ、私が書いた内容と相違ないです。 間違った使い方をしている可能性が高いというのは どういうことなのでしょうか? サイトの記述間違いでしょうか? よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • COBOLとCの変数定義

    いつもお世話になってます。 今回は、COBOLとC言語の変数定義の事で質問させていただきます。 以下のCOBOLの変数定義をC言語で記述するとどのようになるでしょうか? 01 wkarea. 05 wk-code. pic s9(03) comp. 05 wk-err-code. 10 filler. pic x(01) value '0'. 10 wk-err-code-9 pic 9(05) 412. 05 wk-err-mdl. 10 filler pic x(01) value '0'. 10 wk-err-mdl-9 pic 9(40) value space. 05 wk-e-code 10 filler pic x(01) value 'A'. 10 filler pic x(01) value 'B'. 10 wl-id pic x(02). 10 wk-no pic 9(03) value xero 10 wk-level pic x(01) value low-value. ちょっと手間かも分かりませんが、どなたか詳しい方いらっしゃいましたら、お答え頂けると有難いです。 よろしくお願いします。 .

  • COBOLについて

    今高校でCOBOLの勉強をしています。 教科書の練習問題が宿題に出されたのですが、わからないところがありました。 (1)数字項目2桁、テーブル名SUUJI-TBL、データ名SUUJI、要素数20個のテーブルを確保しなさい。 (2)手続き部で、(1)で確保したテーブルに、先頭から1,3,5・・・の値を転記しなさい。ただし、PERFORM文を用いること。 という問題です。 (1)は、 01 SUUJI-TBL.   02 SUUJI PIC X(2) OCCURS 20. と書けたのですが、(2)がさっぱりわかりません。 わかる方、教えてもらえますか?

  • 富士通COBOLの画面定義について

    何年か前にはNECでプログラムを組んでいたのですが、最近は富士通のCOBOLでプログラムを組んでいます。富士通のCOBOLで画面の定義がよく わかりません。例えば下記の記述で FD DSP-F. 01 GM-REC. 03 GRP001. 05 GM-SYORI-K-COM PIC X(03). 05 GM-SYORI-K PIC 9(01). 上記のGM-SYORI-K-COM PIC X(03)の3バイトは何を定義しているのですか?それとこの3バイトを使ってどんな事ができるのですか? 富士通のマニュアルを見ても説明しているところがなくて困っています。 基本的な質問で申し訳ありませんが、よろしくお願いします

  • COBOL

    COBOLから.NETへ移す作業をしております。 以下の点で詰まりました。 1、pic X(03) COLUMN 7. このうち、COLUMNは何をしているのでしょうか? 調べてもわかりませんでした。 2、 MOVE ZEROとイニシャライズの違いについて MOVE R-TBL TO ZEROとINITIALIZE R-TBL 実際に何が違うのでしょうか? R-TBL内にname pic X(08)という変数と number pic 9(2)という変数があったとすると ZEROの方は name⇒"00000000" で number⇒0 INITHLIZEの方は name⇒""  で number ⇒ 0 でしょうか? 3、HIGH-VALUEについて HIGH-VALUEが取りうる最大値を表すことはわかりました。 VBでもC#でもchar.MAXVALUEみたいに取れます。 name pic X(10)にHIGH-VALUEを入れるとすると.NETで実現しようとすると string name = char.MAXVALUEとなります。 これを 01 R-TBL. 02 box PIC 9(5). 02 id PIC 9(5). に代入したいのですがうまく出来ません。 どうすればよいのでしょうか?

  • PRO*COBOLのSQLCTXの桁数変更

    COBOLの組み込みSQLについて質問があります。 Oracle 8.1.5 のPRO*COBOL でプリコンパイルしたところ、 "SQLCTX" が書き加えられています。 符号付の9桁の数字項目であるはずなのに、 10けたの数字が初期値として与えられてしまいます。 01 SQLCTX GLOBAL PIC S9(9) COMP-5 VALUE +1000107995. ↑ コンパイルすると、ここでエラーになってしまいます。   解決法知っている方、どうか教えてください。   先週は正常の値(9桁)が入っていました。 ----------------------------------------------------------------------

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

  • 変数の一括代入

    VBをはじめたばかりなんですが、COBOLだと例えば、 01 DATA-AREA.   03 DATA-1     PIC 9(02).   03 DATA-2     PIC X(02).   03 DATA-3     PIC 9(02). 01 WORK-AREA.   03 WORK-DATA   PIC X(06). ..... というレコードがあるとすると   MOVE WORK-DATA  TO DATA-AREA. で、DATA-1からDATA-3まで代入できると思いますが、VBではこういうことはできるのでしょうか?

  • COBOLソースに記述するホスト変数を使用したSELECT INSER

    COBOLソースに記述するホスト変数を使用したSELECT INSERT分に関する質問です。 COBOLのソースに下記のようなSQL分を記述した際、どのような制御でホスト変数にはどのような値が代入されるのでしょうか? SELECT MAX(columnA) INTO :H1010:H2020 FROM A_TABLE WHERE …(以下抽出条件) ※H1010及びH2020はホスト変数定義しているものとします。 SELECTを行った項目数とINTO句にて指定した変数の数が異なる場合、エラーとなる記憶があります。 また、複数のホスト変数を使用する場合、カンマ区切りが必要だった記憶もあります。 実際に実行したところ、エラー等無く実行されました。結果を見るとH1010には値が代入され、H2020は初期値のままでした。 どのような制御でこの結果になっているのでしょうか? 参考までに、DBMSは「symfoware」です。 もしご存知の方がいらっしゃいましたら、ご教授頂けると助かります。よろしくお願いします。

  • 初心者に一番分かりやすいCOBOLの参考書教えてください!!

    まだ働かないのですが来年にはCOBOLを使った仕事をすることに なっています。学校では基礎の基礎でCとJAVAは一通り習いました。 しかしCOBOLは記述が全く違うということなので勉強がしたいです。 本屋に行ってもなかなかCOBOLの参考書はありません。 ネットで買いたいと思っているのですが 一番分かりやすい本があったら経験者の方教えていただけないでしょうか??

  • pro*cobol ⇔ oracle のデータ型の扱い

    お世話になります。 pro*cobolで、テーブルの作業領域を定義し、 データの編集後、oracleのテーブルへ出力している のですが、cobol側の定義はpic9タイプで oracleの項目定義ではCHAR型になっております。 この状態で、cobol側のpic9タイプの項目に "A00001"等文字を含む値を設定した所、 ABENDせずにoracleテーブルに"A00001"の 項目値を出力しています。 cobolだけに限れば、属性エラーなのですが、 この場合、oracleの項目定義が優先されるのでしょうか? よろしくご教授の程、お願い申し上げます。