• ベストアンサー

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

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

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

  • ベストアンサー
  • jun-rr
  • ベストアンサー率49% (33/67)
回答No.3

こんばんは。 タイプの違う項目は、直接 MOVE しない方が良いと思います。 たとえば、こんなやり方はいかがでしょうか。 01 A PIC S9. 01 B-X.   03 B PIC 9. と定義しておいて、A を B に MOVE 後、B-X を見ると "0" だと思うのですが。 ちなみに、B を 9(2) としますと、B-X は "00"となり、 B を Z9 とすれば、" 0" になると思います。 COBOL もホストメーカーが違うと、拡張機能の関係で微妙に違ったりするので、不安なんですが。 ご参考までに。

hiroro_227
質問者

お礼

回答ありがとうございます。 1度、9、9999、zzzz等でためしましたが、だめでした;

hiroro_227
質問者

補足

本日、知人から耳にした回答でこのようなものがありました。 S9はやはり 符号がビットに反映されているため、 1度、COMPUTEで1をかけてやる必要があるそうです。 試してみたところ、’@’が出なくなりました。 確かな解決かどうかはわかりませんが、 これで上手くデータ移行が出来たとおもいます。 みなさんのご協力感謝いたします。

その他の回答 (2)

  • Ryocchi
  • ベストアンサー率38% (38/98)
回答No.2

S9タイプの値がNullになっているのでは? まず、 0  → S9(MOVE) S9 → X (MOVE) でどうでしょう?

hiroro_227
質問者

お礼

回答ありがとうございます。 S9には、もともとゼロのデータが入っているのは確認 しました。Display をかけると、+0 とでてきます。 どうやら、この符号がなんらかのかたちでビットに反映されているようなのです;

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

S9→9→X の順でMOVE

hiroro_227
質問者

お礼

回答ありがとうございます。 最初私もそれでやってみましたが、無理でした;

関連するQ&A

  • 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タイプ ご指導よろしくお願いいたします。

  • COBOL で組まれたシステムのデータに関して

    8年程前に組まれた、COBOLベースのシステムからデータを抽出したくて困っています。 データの実体は、見つけておりそれがバイナリデータである事までは確認出来ています。 そのデータを変換して、データの中身を確認したいのです。 バイナリデータ⇒16進数データ(.hex)にまでは変換出来たのですが、 それ以降、どうすれば良いのかがわかりません。 別途、COBOLプログラムを組んでデータを抽出する事も考えましたが、 COBOLの知識が皆無で、それをやるのは最終手段だと考えています。 仮に上記のような要件を満たす為に他にどのような情報が必要かもよく分かりませんので、 その辺も含めて教えて頂ければと思います。

  • COBOLのデータ型

    こんばんわ。 現在研修をしており、COBOLの勉強をしております。 COBOLを他言語に置き換える作業を後に担当することになるようです。何の言語かは聞いておりません。勉強している中いくつかわからない点がでました。ご教授いただければと思います。 S9(6)というデータ型は符号ありの整数ということは調べました。 ファイルレコード内に上記のデータ型が存在し、出力ファイルを調べると「00000A」 という値が出力されていました。 ここでふと思ったのがAって何だ?と思いました。そもそも10進数なのか?という疑問が出て 調べるとゾーン10進数という特殊な数値のようです。 ゾーン10進数を調べても全然意味がわかりません。ゾーン部を○○とする!とかゾーン10進数の説明している記載がありますがCOBOLにはそんな記述ないし・・・ とまぁ私が知りたいのはS9(6)というデータ型をどう他言語(C言語)でどう実現しようかという内容がしりたいです。また「00000A」は実際の10進数ではどういう数値かというのも知りたいです。 以上、お手数ですがどうかよろしくお願い致します。

  • COBOL PICTUREで X,S,Vの意味

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

  • COBOLを最近はじめたのですが

    COBOLを最近はじめたのですが データの定義のところで A PIC 9(10)S. B PIC S9(10). とあったのですがSの意味がわかりません。 左にあったり右にあったりします。 どちらも同じ意味なのでしょうか

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

  • AndroidからiPhone5sへデータ移行

    AndroidからiPhone5sへデータ移行について オンラインストレージで、バックアップしても、画像の作成日時が更新されないオンラインストレージはありますでしょうか? AndroidスマホからiPhone5sへ移行思っています。 (アップルから教えてもらった、move to iosではうまくいきませんでした) 試に、ヤフーのあずけーるで、バックアップした所、作成日時は更新されていました。 DropBoxや Google ドライブや その他 オンラインバックアップの比較 会社比較→ http://freesoft-100.com/topic/online-storage.html 沢山ありますが、作成日時が更新されないオンラインストレージの会社ありますでしょうか? また、外付けHDDに普通にバックアップしてから、iPhone5sに復元した場合は、作成日時は更新されてしまうでしょうか? ご教授お願いいたします。

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

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

  • MacOS X(10.2)から10.3へ移行

    MacOS X(10.2)から10.3へ移行しようとしているのですが、うまくいかずに困っています。 はじめはアップデートインストールで行ったのですが、アップデート後、起動できなくなってしまったので、仕方なく元のデータをすべて削除後、10.3を新規インストールし直しました。 とりあえず元の10.2環境のバックアップはバックアップソフトで完全な形でとってあります。 そこで質問なのですが、iTunes や メールソフト(Microsoft Entourageを使用)などなど、これらなどのソフトを10.2の時の設定など、ほぼ元の形で使用するにはどうしたらよいのでしょうか? もしよろしければご教授ください。よろしくお願いします。

    • 締切済み
    • Mac
  • COBOL 9(02)で定義した変数にマイナス値をセットすると?

    COBOLについて教えてください。 現在、既存のシステム(COBOL)を机上でチェックしているのですが、 関数からの戻り値変数を (例)RC 9(02) で定義して、 異常発生時に、MOVE -1 で値セットしているロジックがありました。 S9タイプではないので、誤動作を起こすと思うのですが、 実際このような処理を行うと、変数RCにはどんな値がセットされるのでしょうか? 実行環境が無いので、動作確認ができず、困っています。(バグかと思うのですが、該当のロジックは幸いにも今まで実行されていなかったようです) よろしくお願いします。