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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
COBOLで文字タイプを数字タイプに変換する方法
その他(プログラミング・Web制作)
-
COBOL、項目末尾に空白がある場合削除の方法その他
その他(プログラミング・Web制作)
-
S9タイプからXタイプにデータは移行できるのか。(COBOL)
その他(プログラミング・Web制作)
-
-
4
COBOLのMOVEで桁数が異なる場合
その他(プログラミング・Web制作)
-
5
COBOLの計算方法
その他(プログラミング・Web制作)
-
6
COBOLの数字チェック
その他(プログラミング・Web制作)
-
7
COBOLの桁落ち
その他(プログラミング・Web制作)
-
8
COBOLの文法
その他(プログラミング・Web制作)
-
9
COBOL数値転記の仕様
その他(プログラミング・Web制作)
-
10
COBOLの改行
その他(プログラミング・Web制作)
-
11
COBOLのS9タイプからXタイプへ変換する過程
その他(プログラミング・Web制作)
-
12
COBOLのINVALID KEYが理解できません
その他(プログラミング・Web制作)
-
13
COBOLの基本的な事なのですが。。。
その他(プログラミング・Web制作)
-
14
COBOLのCOMP形式について
その他(プログラミング・Web制作)
-
15
EBCDIC⇒SJIS変換の方法
その他(プログラミング・Web制作)
-
16
COBOLによる全角・半角混在→全角に
その他(プログラミング・Web制作)
-
17
続・ZZZ,ZZZ,ZZ9形式の金額形式変換の件
Java
-
18
COBOLのデータ型
その他(プログラミング・Web制作)
-
19
COBOLで集団項目から符号付き数字項目へのMOVEの結果は?
その他(プログラミング・Web制作)
-
20
COBOLについて
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
浮動小数点
-
PN9によるBER測定
-
FORTRANでfloat(a)
-
FP4という浮動小数点演算4桁の...
-
COBOL 9(02)で定義した変数にマ...
-
2ビットの全加算器
-
基本情報技術者試験の過去問で...
-
アクセスのデータ型。数値型に...
-
Accessクエリの整数型と単精度...
-
平成16年第10問です。
-
n進法の計算について
-
1億x1億はいくらでしょうか?
-
10分の1は「10/1 それとも1/10...
-
5進法を10進法への直し方
-
実績を積むという表現
-
50以下は“50”も入るのですか?
-
100以下の自然数のうち、次のよ...
-
【機械図面】 最大値・最小値...
-
16進小数0.Cを10進数小数に変換...
-
「最大300字程度」
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
COBOL 9(02)で定義した変数にマ...
-
アクセスのデータ型。数値型に...
-
8ビットのグレイ符号10110110お...
-
FP4という浮動小数点演算4桁の...
-
PN9によるBER測定
-
Excelで符号の変化をカウントす...
-
浮動小数点
-
救難信号SOSの打電について
-
『剰余(-10,3)は2を返...
-
FORTRANでfloat(a)
-
中高年の寡婦加算について
-
クロックサイクル時間の求め方
-
2ビットの全加算器
-
テーブルに小数点以下の値を入...
-
基本情報の浮動小数点について
-
ACCESS 宛名ラベル(レポート...
-
VBAでのINT関数の計算結果について
-
基本情報技術H21問12アセンブ...
-
浮動小数点表示と固定小数点表示
-
浮動小数表記方式
おすすめ情報