
COBOLについて教えてください。
現在、既存のシステム(COBOL)を机上でチェックしているのですが、
関数からの戻り値変数を (例)RC 9(02) で定義して、
異常発生時に、MOVE -1 で値セットしているロジックがありました。
S9タイプではないので、誤動作を起こすと思うのですが、
実際このような処理を行うと、変数RCにはどんな値がセットされるのでしょうか?
実行環境が無いので、動作確認ができず、困っています。(バグかと思うのですが、該当のロジックは幸いにも今まで実行されていなかったようです)
よろしくお願いします。
No.6
- 回答日時:
何か意味を誤解されているようです。
符号付を文字として扱えば文字化けするのは当然です。
だから、そういう用途で使うのが間違っているといっているだけです。
つまり、画面や帳票の表示項目に「S9(2)」なんて使いません。
符号付なら、「-9」と使うのがあたりまえということです。
>質問にある関数がどういう目的のものか分かりませんが、関数のリターンコードを表示等をする目的があるなら、表示できる変数等にMOVEしてから行う必要があります。
>符号付のまま表示すると、既に書いている通り文字化けしてしまいます。
当然そうです。
問題になっているのは、「戻り値の変数」というのを忘れているのでは
ないでしょうか?
質問内容から、符号付の「戻り値の変数」をそのまま表示項目として使っている
可能性はほとんどゼロに近いと思います。
(普通そんな使い方はしませんから)
それを、表示に使用するとも書いていないのに、「化けるから意図的に」
という理論に無理があると思います。
作成者の意図は知りませんが、バグの可能性の方が高いと思いますよ。
現実に-1が発生すると誤動作の可能性があるわけですから。
No.5
- 回答日時:
No4さんは、COBOLを知っている人でしょうか?
数値項目を端末に表示したり帳票出力する場合、COBOLでは編集項目(=文字)か外部10進(=文字であるが、数値としても扱える)にMOVEするのが一般的です。
元の数値項目は、2進数、内部10進でも同じことです。
編集項目を使わず外部10進を出力するとき、符号付になっていると最終桁に符号情報も持っているために文字化けします。
質問にある関数がどういう目的のものか分かりませんが、関数のリターンコードを表示等をする目的があるなら、表示できる変数等にMOVEしてから行う必要があります。
符号付のまま表示すると、既に書いている通り文字化けしてしまいます。
普通、リターンコードは2進で2バイトか4バイトにする場合が多いでしょうが、この質問では関数の内容まで触れられていないので、その辺はなんとも答えられません。
No.3
- 回答日時:
#2回答者です。
一箇所訂正します。
<訂正前>
ところが受け取り側を符号付きにすると、'F0D1'という内部形式
<訂正後>
ところが受け取り側を符号付きにすると、X'F0D1'という内部形式
No.2
- 回答日時:
汎用機なのかPC環境なのか、どこのメーカーの何というコンパイラなのかが分からないと、適切な回答はできません。
私が知っているのは某汎用機メーカーのCOBOL85ですが、その場合について回答します。
「S」がないので、MOVEすると符号は欠落します。
「PIC 9(02)」の後ろには、COMP、COMP-3などは指定されていないのですね?
そうすると外部10進になります。
EBCDICやEBCDIKといったコードなら、'F0F1'という内部形式になります。
これは、文字で'01'と書いた場合と同じです。
ところが受け取り側を符号付きにすると、'F0D1'という内部形式になり、これは表示すると'0J'という文字になります。
つまり、符号付で表示すると、最少の桁が
+n→X'Cn'=文字'A'~'I'
-n→X'Dn'=文字'J'~'R'
に文字化けしてしまうのです。
したがって、バグではなく、COBOLを知っている人が文字化けを避けるためにそうしているのだと思います。
出張でお礼が遅くなり、申し訳ありません。
ご教示ありがとうございました。
(ちなみに、使用しているのは某汎用機メーカのCOBOL85です)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- Visual Basic(VBA) vba Sleep関数について教えてください 1 2023/01/18 10:18
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Visual Basic(VBA) VBA ユーザーフォームからSubプロージャ―に値を引き渡す方法 3 2023/04/09 01:54
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- その他(プログラミング・Web制作) COBOL数値転記をCOPY句内での仕様 6 2022/06/15 18:48
- 統計学 確率統計の問題です。 3 2022/04/07 04:39
- その他(プログラミング・Web制作) COBOL計算 2 2022/11/18 14:35
このQ&Aを見た人はこんなQ&Aも見ています
-
いちばん失敗した人決定戦
あなたの「告白」での大失敗を教えてください。
-
泣きながら食べたご飯の思い出
泣きながら食べたご飯の思い出を教えてください。
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
スタッフと宿泊客が全員斜め上を行くホテルのレビュー
スタッフも宿泊客も、一流を通り越して全員斜め上なホテルのレビューにありがちな内容を教えて下さい
-
人生で一番お金がなかったとき
人生で一番お金がなかったときって、どんなときでしたか?
-
COBOLのCOMP形式について
その他(プログラミング・Web制作)
-
S9タイプからXタイプにデータは移行できるのか。(COBOL)
その他(プログラミング・Web制作)
-
COBOLで文字タイプを数字タイプに変換する方法
その他(プログラミング・Web制作)
-
-
4
COBOLの改行
その他(プログラミング・Web制作)
-
5
【COBOL】read文でエラー
その他(プログラミング・Web制作)
-
6
COBOLでのNOT = の AND条件
その他(プログラミング・Web制作)
-
7
COBOLについて
その他(プログラミング・Web制作)
-
8
COBOLのMOVEで桁数が異なる場合
その他(プログラミング・Web制作)
-
9
COBOL数値転記の仕様
その他(プログラミング・Web制作)
-
10
EBCDIC⇒SJIS変換の方法
その他(プログラミング・Web制作)
-
11
変数が選択リストにありません
Oracle
-
12
COBOLで集団項目から符号付き数字項目へのMOVEの結果は?
その他(プログラミング・Web制作)
-
13
COBOLの基本的な事なのですが。。。
その他(プログラミング・Web制作)
-
14
COBOL、項目末尾に空白がある場合削除の方法その他
その他(プログラミング・Web制作)
-
15
COBOLのS9タイプからXタイプへ変換する過程
その他(プログラミング・Web制作)
-
16
COBOLのINVALID KEYが理解できません
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FP4という浮動小数点演算4桁の...
-
PN9によるBER測定
-
COBOL 9(02)で定義した変数にマ...
-
VBAでのINT関数の計算結果について
-
アクセスのデータ型。数値型に...
-
10分の1は「10/1 それとも1/10...
-
50以下は“50”も入るのですか?
-
1億x1億はいくらでしょうか?
-
実績を積むという表現
-
言葉遣いについて ○○を取りに行...
-
「充足に達しましたので」これ...
-
【機械図面】 最大値・最小値...
-
エクセル関数で源泉徴収額を計...
-
「最大300字程度」
-
16進小数0.Cを10進数小数に変換...
-
5進法を10進法への直し方
-
0.1と0.10の違いを教えて下さい。
-
HEX2BIN関数の使い方。
-
エクセルで60進法計算の仕方...
-
10進数の50を2進数で表すといく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスのデータ型。数値型に...
-
COBOL 9(02)で定義した変数にマ...
-
FP4という浮動小数点演算4桁の...
-
PN9によるBER測定
-
浮動小数点
-
8ビットのグレイ符号10110110お...
-
固定小数点数、浮動小数点数に...
-
テーブルに小数点以下の値を入...
-
救難信号SOSの打電について
-
浮動小数点の正規化方法について
-
浮動小数点形式の問題
-
情報技術の問題についてです。 ...
-
日曜日の診察料
-
VBAでのINT関数の計算結果について
-
基本情報の浮動小数点について
-
32bitの浮動小数点数表現につい...
-
基本情報技術者 午後
-
FORTRANでfloat(a)
-
『剰余(-10,3)は2を返...
-
Accessクエリの整数型と単精度...
おすすめ情報