• ベストアンサー

COBOLでハーフバイト数値を読むには?

chie65536の回答

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

   WORKING-STORAGE     SECTION.  *    01 SRC-DATA      PIC 9(2) COMP-3.    01 SRC-DATA-R     REDEFINES SRC-DATA.     03 SRC-DATA-BYTE   PIC X(1).  *    01 DST-DATA      PIC 9(2).    01 DST-DATA-R     REDEFINES DST-DATA.     03 DST-DATA-BYTE1  PIC 9(1).     03 DST-DATA-BYTE2  PIC 9(1).  *   PROCEDURE      DIVISION.  *   START.     MOVE  1バイトの何か  TO  SRC-DATA-BYTE.     MOVE  SRC-DATA     TO  DST-DATA.     MOVE  DST-DATA-BYTE1  TO  上の桁(0~9)     MOVE  DST-DATA-BYTE2  TO  下の桁(0~9)   *     STOP RUN.   *

uchi38
質問者

お礼

まだ試してはいないのですが、ロジックを拝見したところできそうな気がします。 ありがとうございました。

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

  • 4バイト型数値の解析(年度)

    dbMajicで構築されたDBをAccessでインポートしましたが、4バイトの数値の項目のみが内容がインポートできませんでした。元データのBtrieveファイルの該当4バイトを切り出して4バイト整数を数値に変換するプログラムを通すと内容値は727929 とか 728294という大きな数字になってしまいます。本来の内容値は 2006とか 2005になって欲しいのですが、期待する数値が得られません。4バイトのバイナリーデータを数値に変える方法は他にもありますか? あるいは727929から西暦年を導き出す数式があるのでしょうか?

  • EXCELで 一桁の数値を二桁に

    教えてください。 エクセルで、入っているデータを編集しているのですが A列には、一桁の数値が B列には、1桁から2桁の数値が C列には、1桁から2桁の数値が D列には、文字データが入っています。 D列のデータに対する対応表を作るために このA~C列のデータを CONCATENATE関数を使って合体させたいのですが、 (合体させると、数値がダブらない為) B列とC列に入っている1桁の数値を 2桁に変換したいのですが、 何かよい方法はありませんでしょうか? 手打ちで変換するには、かなり多いデータなのです。 どなたか、助けてください。

  • 数値データの一括変換方法について

    「EXCEL」または「ACCESS」でのデータ変換について質問です。 下記のような「0」と「1」からなる10桁の数値があり、 それを特定のルールに従い一括変換する方法があれば教えて下さい。 例(1))0000000000 →0 例(2))1111111111 →1|2|3|4|5|6|7|8|9|10 例(3))1010110000 →1|3|5|6 例(4))0000110010 →5|6|9 例(5))0000000001 →10 10桁の数値の左側から順に「1」になっていれば、その桁の数値に置き換える。(1桁目は「1」、3桁目は「3」、10桁目は「10」) また置き換えた数値が2個以上ある場合は、「|」の記号で区切る。 上記のような数値データが数万個あり、それらを一括で変換できる方法があれば教えて頂けると助かります。 お忙しい所 大変恐縮ではございますが、何卒宜しくお願い致します。    

  • ACCESSで数値の1をテキスト型の0001にするには?

    初心者でよくわからないので教えて下さい。 ACCESSで数値型の"1"をテキスト型の"0001"に、数値型の"10"をテキスト型の "0010"のように数値を4桁のテキスト型に変換するにはどのようにしたらよい のでしょうか? なお、表示だけでなくデータ自体を変換したいと思っています。 よろしくお願いします。

  • 数値地図(MEM)をDEMに変換したい

     国土地理院から発行されている数値地図 50mメッシュの標高データはMEMですが、このMEMデータをDEMに変換したいのです。  随分昔にやったことがあるのですが、ツールの名称を忘れてしまい、どなたかツールをご存じありませんでしょうか?  ちなみに、フリーのソフトとかありますでしょうか?  

  • 数値データの最後尾の値から判定し一括変換する

    「EXCEL」または「ACCESS」でのデータ変換について質問です。 下記のような「0」と「1」からなる10桁の数値があり、 値の末尾からみて数値を以下のように括変換する方法があれば教えて下さい。 (本来は10桁の数値なのですが、EXCELの仕様で先頭の「0」は非表示) 例(1)0      →0 例(2)1111111111 →1|2|3|4|5|6|7|8|9|10 例(3)1010110000 →1|3|5|6 例(4)110010   →5|6|9 例(5)1000000010 →1|9 例(6)1      →10 10桁の数値の左側から順に「1」になっていれば、その桁の数値に置き換える。(末尾1桁目は「10」、末尾3桁目は「7」、末尾10桁目は「1」) また置き換えた数値が2個以上ある場合は、「|」の記号で区切る。 上記のような数値データが数万個あり、それらを一括で変換できる方法があれば教えて頂けると助かります。 お忙しい所 大変恐縮ではございますが、何卒宜しくお願い致します。

  • 数値をASCII文字にする方法についての質問です。

    数値をASCII文字にする方法についての質問です。 PICマイコンのプログラミングをするために、C言語を使用しています。LCDに数値を表示するには変数を数値ではなく文字で渡してやらないといけないようなのですが、その変換のしかたがわからず調べていると、あるサイトで二桁の数字(suuji)の1の位をASCII文字(hensu)にするために、 hensu = (suuji % 10) + '0'; のようにコードを記載していました。実際にこの通りプログラミングしてみるとLCDに表示されたのですが、なぜこのようにするとASCII文字に変換できるのかがわかりません。('0'を加えるとアスキー文字になるのでしょうか?)どなたか教えて頂ければと思います。

  • 数値型への変換関数

    ASPで5桁の数値を、CIntで変換したいんですけど、CIntは4桁までしか変換出来ないみたいなんで、他に何か最適な関数を教えて下さい!

  • エクセルの数値変換ですについて!!!

    エクセルの数値の変換で、 「456」→「45.6」→「4.56」→「0.456」 のように、数字の桁を下げていきたいのですが、どうしたらよいのでしょうか? 桁を上げていくことはできるのでが、下げ方がわかりません…。 どなたかわかる方いらしたら、教えてください…