プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。
まったくのCOBOLビギナーで困っています。
私がしたいことは、
S9タイプのデータを、Xタイプに移すということです。
元データには'40'(16進数)というデータが入っています。
これは +0 という意味だとおもいます。

これを、Xタイプにムーブして、
'0'と出したいわけです。

'0'を出す為には、'30'(16進数)であればいいことは
バイナリで確認しています。

単純にMOVEを書けても、これは、'@'になってしまいます。
S9→X への移行ってできるものなのでしょうか?

知っている方がいらっしゃったらご教授ください。

A 回答 (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 もホストメーカーが違うと、拡張機能の関係で微妙に違ったりするので、不安なんですが。
ご参考までに。

この回答への補足

本日、知人から耳にした回答でこのようなものがありました。

S9はやはり 符号がビットに反映されているため、
1度、COMPUTEで1をかけてやる必要があるそうです。

試してみたところ、’@’が出なくなりました。
確かな解決かどうかはわかりませんが、
これで上手くデータ移行が出来たとおもいます。

みなさんのご協力感謝いたします。

補足日時:2004/08/24 10:31
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

1度、9、9999、zzzz等でためしましたが、だめでした;

お礼日時:2004/08/24 10:30

S9タイプの値がNullになっているのでは?


まず、
0  → S9(MOVE)
S9 → X (MOVE)
でどうでしょう?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

S9には、もともとゼロのデータが入っているのは確認
しました。Display をかけると、+0 とでてきます。

どうやら、この符号がなんらかのかたちでビットに反映されているようなのです;

お礼日時:2004/08/24 10:29

S9→9→X


の順でMOVE
    • good
    • 1
この回答へのお礼

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

お礼日時:2004/08/23 20:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています