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も見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
メモのコツを教えてください!
メモを取るのが苦手です。 急いでメモすると内容がごちゃごちゃになってしまったり、ひどいときには全く読めない時もあります。
-
ちょっと先の未来クイズ第4問
11月ごろに発表される、2024年の「新語・流行語大賞」にノミネートされる言葉を書けるだけ書いてください。
-
「お昼の放送」の思い出
小学校から中学校、ところによっては高校まで お昼休みに校内放送で、放送委員が音楽とかおしゃべりとか流してましたよね。 最近は自分でもラジオができるようになって、そのクオリティもすごいことになっていると聞きます。
-
COBOLのCOMP形式について
その他(プログラミング・Web制作)
-
COBOLの改行
その他(プログラミング・Web制作)
-
COBOLで文字タイプを数字タイプに変換する方法
その他(プログラミング・Web制作)
-
-
4
S9タイプからXタイプにデータは移行できるのか。(COBOL)
その他(プログラミング・Web制作)
-
5
COBOLのS9タイプからXタイプへ変換する過程
その他(プログラミング・Web制作)
-
6
【COBOL】read文でエラー
その他(プログラミング・Web制作)
-
7
COBOLについて
その他(プログラミング・Web制作)
-
8
COBOLのMOVEで桁数が異なる場合
その他(プログラミング・Web制作)
-
9
COBOLの数字チェック
その他(プログラミング・Web制作)
-
10
COBOL、項目末尾に空白がある場合削除の方法その他
その他(プログラミング・Web制作)
-
11
COBOLでのNOT = の AND条件
その他(プログラミング・Web制作)
-
12
COBOLの計算方法
その他(プログラミング・Web制作)
-
13
COBOL数値転記の仕様
その他(プログラミング・Web制作)
-
14
【COBOL】文字列から数値項目に転記するにあたって
その他(プログラミング・Web制作)
-
15
変数が選択リストにありません
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
COBOL 9(02)で定義した変数にマ...
-
アクセスのデータ型。数値型に...
-
救難信号SOSの打電について
-
FP4という浮動小数点演算4桁の...
-
10分の1は「10/1 それとも1/10...
-
実績を積むという表現
-
【機械図面】 最大値・最小値...
-
50以下は“50”も入るのですか?
-
5進法を10進法への直し方
-
「最大300字程度」
-
1億x1億はいくらでしょうか?
-
小数点が混じった2進数を8進数...
-
エクセル関数で源泉徴収額を計...
-
HEX2BIN関数の使い方。
-
16進小数0.Cを10進数小数に変換...
-
100以下の自然数のうち、次のよ...
-
偏微分の記号をタイプするため...
-
Excel 16進数
-
dBm/HzからdBm/MHzへの単位変換
-
言葉遣いについて ○○を取りに行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスのデータ型。数値型に...
-
COBOL 9(02)で定義した変数にマ...
-
8ビットのグレイ符号10110110お...
-
FP4という浮動小数点演算4桁の...
-
浮動小数点
-
PN9によるBER測定
-
テーブルに小数点以下の値を入...
-
FORTRANでfloat(a)
-
浮動小数点の正規化方法について
-
CDMA通信システムがわからない...
-
リハビリを受けたのに、外来管...
-
救難信号SOSの打電について
-
Excelで符号の変化をカウントす...
-
中高年の寡婦加算について
-
加算器を使った乗算器の回路図...
-
「々」の読み方を教えてください。
-
クロックサイクル時間の求め方
-
2ビットの全加算器
-
ACCESS 宛名ラベル(レポート...
-
日曜日の診察料
おすすめ情報