• ベストアンサー

COBOLのS9タイプからXタイプへ変換する過程

はじめましてCOBOL初心者です。 COBOLプログラムにおいて、S9タイプをXタイプに変換するためにはどのようにしたらよいでしょうか。 自分なりに2つの方法を考えてみたのですが、いずれかで可能でしょうか? (1) MOVE S9タイプ TO 9タイプ MOVE 9タイプ  TO Xタイプ (2) COMPUTE 9タイプ = S9タイプ * 1 MOVE 9タイプ TO Xタイプ ご指導よろしくお願いいたします。

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

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

どちらでも可能です。 が、(1)の方が他の方が当該プログラムを読む上では理解しやすいでしょう。

sk010910
質問者

お礼

ありがとうございます! COBOLを実際に使える環境を持合わせていなかったので大変参考になりました! ありがとうございました!

関連するQ&A

  • S9タイプからXタイプにデータは移行できるのか。(COBOL)

    こんにちは。 まったくのCOBOLビギナーで困っています。 私がしたいことは、 S9タイプのデータを、Xタイプに移すということです。 元データには'40'(16進数)というデータが入っています。 これは +0 という意味だとおもいます。 これを、Xタイプにムーブして、 '0'と出したいわけです。 '0'を出す為には、'30'(16進数)であればいいことは バイナリで確認しています。 単純にMOVEを書けても、これは、'@'になってしまいます。 S9→X への移行ってできるものなのでしょうか? 知っている方がいらっしゃったらご教授ください。

  • 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初心者なのですが。 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 VB 変換

    自分の通っているある先生がCOBOLに詳しいのですが、やはりVBにしようと考えているらしくCOBOLからVBへ変換するソフトを探しています。 しかしグーグル等で検索してみても見つからないため困っています。 なにか方法はあるでしょうか。 ご存じの方よろしくお願いします。

  • 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 PICTUREで X,S,Vの意味

    COBOL PICTUREで X(03) S9(01) とか V9(02)とか記載されているのマトリックス表があるのですが、この意味を教えてください。

  • COBOL初心者です

    COBOL初心者です。 1月~6月の売上高の合計と、 半年の売上高の合計に対する各月の割合を表示するプログラムを作成しろという課題が出たのですが、実行してみたら合計の数字が違うのです。。。。 01 1月 PIC 9(8). 01 2月 PIC 9(8). 01 3月 PIC 9(8). 01 4月 PIC 9(8). 01 5月 PIC 9(8). 01 6月 PIC 9(8). 01 半年合計 PIC 9(9). 01 表示半年合計 PIC Z(9)9. 01 1月割合 PIC Z(2)9.99. 01 2月割合 PIC Z(2)9.99. 01 3月割合 PIC Z(2)9.99. 01 4月割合 PIC Z(2)9.99. 01 5月割合 PIC Z(2)9.99. 01 6月割合 PIC Z(2)9.99. ・  ・  ・ 合計を求めるCOMPUTE文  COMPUTE 半年合計 = 1月 + 2月 + 3月 + 4月 + 5月 + 6月. MOVE 半年合計 TO 表示半年合計. DISPLAY "合計売上高は" AT 1405. DISPLAY 表示半年合計 AT 1428. DISPLAY "円です。" AT 1436.  ・  ・  ・ 割合を求めるCOMPUTE文。 COMPUTE 1月割合 = (1月 / 半年合計) * 100. COMPUTE 2月割合 = (2月 / 半年合計) * 100. COMPUTE 3月割合 = (3月 / 半年合計) * 100. COMPUTE 4月割合 = (4月 / 半年合計) * 100. COMPUTE 5月割合 = (5月 / 半年合計) * 100. COMPUTE 6月割合 = (6月 / 半年合計) * 100. 実行結果 例えば、1月 00000100 ・  ・  ・  6月 00000100 と各月すべて100と入力したら、合計は6円です。という具合に実行結果が出ます。 どのように直せばよいでしょうか?

  • COBOLのプログラムで・・。

    現在COBOLプログラムを作ってまして以下のプログラムで表示結果が「EQUAL」となるようにしたいのですがどうやったらいいでしょうか?回答のほうよろしくお願いします、以下がプログラムです。 IDENTIFICATION DIVISION. PROGRAM-ID. TEST9. DATA DIVISION. * WORKING-STORAGE SECTION. * 01 GR01. 02 DATA1 PIC N(2). * 01 DATA2 PIC N(2). 02 SPACE TO DATA2 * PROCEDURE DIVISION. * MOVE SPACE TO GR01. * MOVE SPACE TO DATA2. IF DATA1 = DATA2 THEN DISPLAY "EQUAL" ELSE DISPLAY "NOT EQUAL" END-IF. * * STOP RUN. * END PROGRAM TEST9.

  • COBOL

    COBOLで INIT-SEC. OPEN INPUT IN-FILE. OUTPUT OUT-FILE. DISPLAY " 学番 名前     国 数 英 合計". MOVE ZERO TO CTR-IN CTR-OUT. PERFORM READ-SEC. の部分に「開始メッセージを表示する」を追加したいのですがプログラムソースを教えてください。

専門家に質問してみよう