![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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、項目末尾に空白がある場合削除の方法その他
その他(プログラミング・Web制作)
-
COBOLのMOVEで桁数が異なる場合
その他(プログラミング・Web制作)
-
COBOLの計算方法
その他(プログラミング・Web制作)
-
-
4
S9タイプからXタイプにデータは移行できるのか。(COBOL)
その他(プログラミング・Web制作)
-
5
COBOLで文字タイプを数字タイプに変換する方法
その他(プログラミング・Web制作)
-
6
COBOLのS9タイプからXタイプへ変換する過程
その他(プログラミング・Web制作)
-
7
COBOLの改行
その他(プログラミング・Web制作)
-
8
COBOLのCOMP形式について
その他(プログラミング・Web制作)
-
9
COBOLの桁落ち
その他(プログラミング・Web制作)
-
10
COBOLのINVALID KEYが理解できません
その他(プログラミング・Web制作)
-
11
COBOLの文法
その他(プログラミング・Web制作)
-
12
COBOLの基本的な事なのですが。。。
その他(プログラミング・Web制作)
-
13
COBOLの数字チェック
その他(プログラミング・Web制作)
-
14
COBOL数値転記の仕様
その他(プログラミング・Web制作)
-
15
EBCDIC⇒SJIS変換の方法
その他(プログラミング・Web制作)
-
16
COBOL OCCURSで指定したデータの参照の仕方
その他(プログラミング・Web制作)
-
17
カーソル0件の時にエラーを発生させる
Oracle
-
18
COBOL FILLER
その他(プログラミング・Web制作)
-
19
COBOLでのNOT = の AND条件
その他(プログラミング・Web制作)
-
20
COBOLで集団項目から符号付き数字項目へのMOVEの結果は?
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスのデータ型。数値型に...
-
COBOL 9(02)で定義した変数にマ...
-
クロックサイクル時間の求め方
-
IEEEの浮動小数点表現
-
Excelで符号の変化をカウントす...
-
5ビット誤り訂正符号の符号語間...
-
浮動小数表記方式
-
加算器を使った乗算器の回路図...
-
看護情報の教科なんですが計算...
-
2ビットの全加算器
-
ACCESS 宛名ラベル(レポート...
-
浮動小数点についての質問なの...
-
指数部(8ビット)を2進数、負の...
-
テーブルに小数点以下の値を入...
-
情報技術の問題についてです。 ...
-
10分の1は「10/1 それとも1/10...
-
5進法を10進法への直し方
-
「最大300字程度」
-
実績を積むという表現
-
1億x1億はいくらでしょうか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FP4という浮動小数点演算4桁の...
-
8ビットのグレイ符号10110110お...
-
アクセスのデータ型。数値型に...
-
COBOL 9(02)で定義した変数にマ...
-
PN9によるBER測定
-
浮動小数点の正規化方法について
-
救難信号SOSの打電について
-
Excelで符号の変化をカウントす...
-
浮動小数点についての質問なの...
-
テーブルに小数点以下の値を入...
-
浮動小数点
-
調剤薬局での夜間・休日等加算...
-
固定小数点数、浮動小数点数に...
-
中高年の寡婦加算について
-
FORTRANでfloat(a)
-
昨今で使われる通信路符号化?
-
携帯電話 通信方式 第三世代...
-
基本情報技術者試験の過去問で...
-
日曜日の診察料
-
基本情報の浮動小数点について
おすすめ情報