• 締切済み

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. ちょっと手間かも分かりませんが、どなたか詳しい方いらっしゃいましたら、お答え頂けると有難いです。 よろしくお願いします。 .

みんなの回答

回答No.3

No2です。 上記コードのクロスリファレンスをつけてやると、こたえやすいと思います。 あと私、COBOLの命令はほぼ頭に入ってますけど、コードが変です。 何COBOLですか? COBOLって、小文字使えないはずだし。 文字リテラルは、普通 ダブルクォーテーションのはずだし。 その他にも以下に変な記述あるし。 wk-err-code-9 pic 9(05) 412. の後ろの412って何? 05 wk-e-code コロン無い 10 wk-err-mdl-9 pic 9(40) value space. 数字タイプで指定できる最大桁数は30桁までだと思ったけど 拡張された? 数字タイプなのに、初期値空白っておかしくない? 10 wk-no pic 9(03) value xero xero って何 ZEROの記述ミス? ぱっと見て、おかしいのこんなにあるよ!

回答No.2

っていうか、上記コーディング おかしいよ!

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

はっきり言うと完全には書けません。 関数と組み合わせて良いなら似た動作をさせることは出来ますが、変数だけでは同じ動作をさせることは不可能です。C++であればクラスを使って同じ動作をするものを作ることは出来ます。

関連するQ&A

  • COBOLの定義について

    COBOLの定義で PIC S9 (07) COMP-3 というデータがあってこれを自分で書かなくてはなりませんが、どんなにやってもデータ例外が出てしまします。自分ではHEX状態で ------- 001 00C ------- みたいなものかと思っていますが、違うようです。 どなたかわかるかたいましたら教えていただけませんか。 よろしくお願しまSう。

  • COBOLでのチェックデジット算出

    COBOL初心者です。 01 印刷領域. 03 Aコード PIC X(03). 03 Bコード PIC X(04). 03 Cコード PIC X(02). 03 チェックデジット PIC X(01). と定義した変数のA,B,Cコードだけをサブルーチンに渡して、チェックデジットを受け取りたいと思います。 このときチェックデジットを抜いた"印刷領域"を渡すことは可能でしょうか? 例) Aコード 102 Bコード 2001 Cコード 03 渡すデータ102200103 受け取るチェックデジット7 印刷領域 1022001037 という具合にしたいんですが… あと、A,B,Cコードは数字に変換しなければなりません。 すみませんがおしえてください(ToT)/~~~

  • 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). に代入したいのですがうまく出来ません。 どうすればよいのでしょうか?

  • 富士通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での可変長定義について

    unix環境下でCOBOL85を使用しています。 あるデータを可変長でWRITEしていくのですが、 データにヘッダー情報みたいなものが付加されてしまい困っています。 ヘッダー情報を付加しないようにするにはどうすればいいのでしょうか? 定義:  FD Aファイル RECORD IS VARYING 1 TO 100 DEPENDING ON A-CNT.  01 A-DATA PIC X(100). とか  FD Aファイル RECORD IS VARYING IN SIZE DEPENDING ON A-CNT.  01 A-DATA PIC X(100). というパターンで試しています。 Aファイルにaaaという3バイトデータをWRITEすると、 COBOL85020315020304・・・・・aaaというデータが出力されます。 あるコボラーに聞くと「定義がおかしいからでしょう」と言ってたのですが、 どうおかしいかは本人もわからないようです。 どうすればヘッダー情報(COBOL85020315020304・・・・・)がつかず、 可変長でWRITEできるのでしょうか?教えて下さい。

  • COBOLについて

    COBOL初心者なのですが。 COBOLで 01 A.   03 B PIC 9(02).   03 C PIC X(02). MOVE  SPACE  TO  A. とした時、基本項目であるBには何が入っているのでしょうか? 数字項目にSPACEというのはありえないですよね。 どなたかわかる方、教えていただけませんか?

  • COBOLでのランダムアクセス

    すみませんCOBOL初心者です。 FILE-CONTROL. SELECT URIAGE-MOKUHYOU ASSIGN TO "c:\dat\mokuhyou.dat" ORGANIZATION IS INDEXED ACCESS MODE IS RANDOM RECORD KEY IS UM-SHITEN-CODE. DATA DIVISION.   FILE SECTION.   FD URIAGE-MOKUHYOU.   01 UM-REC.    05 UM-SHITEN.     10 UM-SHITEN-CODE PIC X(4).     10 UM-SHITEN-MEI PIC X(20).    05 UM-KINGAKU PIC 9(10) OCCURS 12. WORKING-STORAGE SECTION.   01 TSUKI PIC 9(2).   01 WK-SHITEN-CODE PIC X(4). PROCEDURE DIVISION.   DISPLAY "支店コードを入力してください --> : "   ACCEPT WK-SHITEN-CODE   OPEN INPUT URIAGE-MOKUHYOU   READ URIAGE-MOKUHYOU    INVALID KEY     DISPLAY "ERROR; 支店コード = " WK-SHITEN-CODE    NOT INVALID KEY     DISPLAY WK-SHITEN-CODE " の売上げ目標は " UM-REC   END-READ.   STOP RUN. というプログラムを作成し、"mokuhyou.dat"という入力ファイルに正しくデータが格納されているのですが、コンパイルは問題なく、実行すると、 JMP0310I-U OPEN ERROR FILE=mokuhyou.dat. 'ACC-METHOD'. PGM=TEST046 ADR=00401258 とまず画面にでて、OKを押すと、 JMP0099I-U FORCED TERMINATION CODE=0310 というエラーになります。 おそらくファイルが正常に読み込めないものと推測されますが、解決法を教えてください。お願いします。

  • c言語で定義する変数のアドレス

    c言語の超初心者です。追いえてください。 c言語で2つの変数を定義しています。 char *a; char *b; この2つの変数に値をいれた際の動作で以下のようなことって発生しますか? a="1111" b="2222" aをprintfするとbにいれた値"2222"が表示される。

  • COBOL初心者です。

    COBOL初心者です。 プログラミング自体初めて1か月です。 いかんせん本当に初心者なので どう質問したらイイのか分からないんですがヨロシクです。 実行したらなんか固まってしまう?んです。 記述がおかしいんでしょうけど、何がおかしいのか分からなくて… どう書けばイイのか分からないのでソースをそのまま貼り付けます。 IDENTIFICATION DIVISION. PROGRAM-ID. 000. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-FILE ASSIGN TO "x.txt". DATA DIVISION. FILE SECTION. FD IN-FILE. 01 IN-REC. 03 X PIC X(10). WORKING STORAGE SECTION. 01 WORK. 03 WK-X PIC X(10). 01 END-FLAG PIC 9 VALUE 0. PROCEDURE DIVISION. MAIN-SEC SECTION. MAIN-010. OPEN INPUT IN-FILE. PERFORM UNTIL END-FLAG = 1 READ IN-FILE AT END MOVE 1 TO END-FLAG NOT AT END MOVE X TO WK-X DISPLAY WK-X END-PERFORM. CLOSE IN-FILE. STOP RUN. MAIN-SEC-END. EXIT. なんしか、"x.txt"を読み込みたいんです。 勉強中なのでとりあえず読み込みたいデータはちっちゃくしました。 うーんどう伝えたらイイんでしょう~ よろしくお願いします。

専門家に質問してみよう