• ベストアンサー

COBOLでのBIT操作

質問です。 COBOL(COBOL85)でBITを扱うことはできるのでしょうか? 例えば、PL/IではBIT属性があり DCL xxx BIT(n) のような定義ができますが、 COBOLでは、BIT属性の定義ができるのでしょうか? また、合わせてCOBOL2002(?)では、 上記のようなことができるのでしょうか? COBOL2002のマニュアル本で、 xxx PIC 1(m) BIT(n) の定義文をみたことがありますが。。。

noname#119141
noname#119141

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

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

>COBOL(COBOL85)でBITを扱うことはできるのでしょうか? 出来ないと思います。 少なくとも私は知りません。 昔、ビット反転しているデータを使って作業するような 場面に出くわし、苦労した覚えがあります。 >また、合わせてCOBOL2002(?)では、 >上記のようなことができるのでしょうか? ビット操作については機能追加されるようですね。 上に書いたようなビット反転も容易に出来るようになるみたいですね。

参考URL:
http://www.cobol.gr.jp/knowledge/next_standard/standard0002/chap03.pdf
noname#119141
質問者

お礼

早速のご回答ありがとうございます。 そうですか。現在、他の言語で作られたプログラムを COBOLに一括変換するツールを作成中ですが、 BIT操作については、簡単にはいかないようですね。

関連するQ&A

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

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

  • 富士通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をやることになりました。 で、数値データの表し方になんやかやとやたら方法があるようなのですが、それらを互いに「転記」したときに、どういう結果になるものか、皆目わからないんです(環境は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のPERFORM文

    COBOL初心者です。 COBOL97使用で、 02 VAL OCCURS 15 TIMES PIC 9(4). と定義して、 PERFORM TEST BEFORE VARYING COUNTER FROM 1 BY 1 UNTIL COUNTER > 15 のPERFORM文を書きました。 エラーもなく起動したのですが、 15回過ぎても永遠処理が終わりません。 無限ループというのでしょうか? 15回目でバチッと終わるにはどういたらよいでしょうか? どなたかお助け下さい。

  • 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) どなたかよろしくお願いします。

  • ALGOL・PL/Iのフリーのコンパイラ、学習向けサイトを教えて下さい

    ALGOL・PL/Iのフリーのコンパイラ、学習向けサイトを教えて下さい。 はじめまして。よろしくお願いします。 ALGOL・PL/Iのフリーのコンパイラ、学習向けサイトを教えて下さい。 現在、仕事の都合でPL/Iのを勉強しています。 PL/IはCOBOL・FORTRAN・ALGOLを組み合わせたものということで、3つの言語も勉強しています。 ネットで探したところ、COBOL・FORTRANはコンパイラと学習向けサイトがありましたが、PL/I・ALGOLは芳しい情報はありませんでした。(IBMのPL/Iのマニュアルくらいでした…。) コンパイラについては、Windows環境(Windows XP)、Linux環境(fedora10)どちらでもいいです。 どうか宜しくお願いします。

  • COBOLのCALL文がいまいちつかめません。

    いつもお世話になっています。 WINDOWSでCOBOL85を使いながら、COBOLの勉強をしています。 JAVAを基本情報試験のために勉強したくらいの初心者です。 シーケンシャルファイルでマッチング処理を行う、 小さなプログラムを課題としている途中、 CALL文を使ってサブプログラムを作ってみてくださいと言われました。 そこで質問なのですが、 メインプログラムの集団項目をUSING指定で引数として、 サブプログラムで受け取り、処理をするまではいいのですが、 戻り値をどのようにして受け取ればいいのかが イメージがつかめません。 ・戻り値を受け取るための命令 ・戻り値は1つだと思うのですが、どの変数?に返ってくるのか (集団項目ごと返ってくる?) など、何かあればご助言をいただけないでしょうか? ソースは次の通りです。 よろしくお願いいたします。 ■メイン IDENTIFICATION DIVISION. PROGRAM-ID. MACHING_TEST. (省略) WORKING-STORAGE SECTION.   01 JUDGE_F.    03 KEY_F     PIC 9(01).    03 CHANGE_F     PIC X(06).    03 EXCEP_M     PIC 9(01). (省略) CALL "JUDGE_FEMALE" USING JUDGE_F ON EXCEPTION   DISPLAY N"エラーです。プログラムを終了します"   STOP RUN   NOT ON EXCEPTION    IF EXCEP_M = 9 THEN MOVE "ERRER!" TO FEMALE_OUT ELSE  IF EXCEP_M = 1 THEN MOVE CHANGE_F TO  FEMALE_OUT  END-IF    END-IF    END-CALL. (以下略) ■サブ IDENTIFICATION DIVISION. PROGRAM-ID. JUDGE_FEMALE. DATA DIVISION. LINKAGE SECTION. 01 JUDGE_F.  03 KEY_F PIC 9(01).  03 CHANGE_F PIC X(06).  03 EXCEP_M PIC 9(01). PROCEDURE DIVISION USING JUDGE_F. IF KEY_F = 1  THEN   MOVE "オトコ" TO CHANGE_F   MOVE 1 TO EXCEP_M  ELSE   IF KEY_F = 2 THEN  MOVE "オンナ" TO CHANGE_F  MOVE 1 TO EXCEP_M ELSE  MOVE 9 TO EXCEP_M END-IF END-IF. PROGRAM-END.  STOP RUN.

  • 2次元配列について

    VB6.0で開発しています。 以前COBOLをしていて、VBではどのように定義するかがわからなかったので質問します! ----------- COBOL ----------------- 01 TBL-AREA. 03 TBL OCCURS 6. 05 TBL-IX OCCURS 16. 07 TBL-IX PIC 9(07). 07 TBL-NAME PIC N(20). と定義した場合はVBではどのように記述するのですか? Public Type TBL_AREA TBL_TEXT As Integer TBL_Caption As String End Type Public TBLArray() As TBL_AREA ReDim TBLArray(6,16) と記述してみたものはいいものの、処理の記述方法がわかりません(恥)

  • GeForce6600は、WUXGAを32bitで表示できない?

    はじめまして。 Dell製の24"モニター(WUXGA)、UltraSharp(TM)2405FPW HASの購入を機会にビデオカードも買い換えようとしています。 GigabyteのGeForce6600(or GT)を考えているのですが、マニュアルを読むとWUXGA(1900x1200)では、16bitまでしか表示出来ないとあります。 ただ、この上の解像度1920x1440では可能とあります。 どういう事なのでしょうか? 欄外に、データは参考であり使用のモニターによると あります。 実際、上記モニターで表示出来ているかたいらっしゃいますでしょうか? また、特にGeforceにこだわりがあるわけではなく、 ゲームもするつもりがないのですが、何かおすすめ の様なカードがありますでしょうか? 使用用途は、DVD、撮影したデジカメ映像の鑑賞 ほんのちょっとだけ、CAD(AutoCad Inventor) です。 現在使用しているカードはGeForce4 MX440 128M このカードでもUXGAまで(32bitカラーで)対応出来るのでしょうか? 使用環境 OS win xp pro + sp2 CPU pentium 4 2.4GHz BUS AGP GeForce6600で確認した資料 それぞれ、GigabyteのHPより落としました。 1.GV-66128DP/66256DP(GeForce6600) 2.GV-N66T128D/VP のユーザーマニュアル (GeForce6600GT) です。

  • 自然対数eについて次の公式の証明お願いします。

    自然対数eについてよく知られた定義   e=(1+1/n)^(n乗) 上記定義の証明をお願いしますm(-_-)m できるだけ早くしていただければ、幸いです。

専門家に質問してみよう