長いブランクの後、不定期にCOBOLのソースを読むこともある仕事に就いた者です。
本日見た、
IF 区分1 NOT = "001" AND "002"
という記述について質問致します。
区分1は3桁の数字(でも文字列)が入っているのですが、「区分1が、001かつ002でない場合」ということですよね?
何だかこれって変じゃないですか?
どう変かは、うまく表現できないのですが…これだと、全ての入力レコードがELSEに流れてしまう気がします。
でも、実際はそうではありません。不思議です。
(他にも論理演算子で条件判断をしている箇所がありますので、上記のセクションの判断とは無関係なレコードもあると思います)
どなたか、このモヤモヤを解決して頂けないでしょうか。
No.3ベストアンサー
- 回答日時:
>IF 区分1 NOT = "001" AND "002"
>ではなく
>IF 区分1 NOT = '001' AND '002'
>でした。(エクセル関数と混同していました)
私の使用していたCOBOLコンパイラでは、引用符をコンパイラオプションで、「'」と「"」のどちらでも使用できたので、あまり気になりませんでした。
>区分が文字列なら、
>IF 区分1 NOT = '001' AND '002'
>IF 区分1 NOT = '001' OR '002'
>どちらも同じ意味になるという事でしょうか?
IF 区分1 NOT = '001' AND '002'
→IF 区分1 NOT = '001' AND 区分1 NOT = '002'
→'001'は偽、'002'も偽、'003'等は真
IF 区分1 NOT = '001' OR '002'
→IF 区分1 NOT = '001' OR 区分1 NOT = '002'
→'001'は真、'002'も真、'003'等も真
と意味のない条件になってしまいます。
No.2
- 回答日時:
#1です。
>区分1は3桁の数字(でも文字列)が入っている
データ型は、外部10進なのですよね?
そうであれば、数値の0~9は、文字の'0'~'9'と同じ文字コードになります。
普通は外部10進の定数を、"001"といった書き方はしないと思いますが、質問者さんのお使いのコンパイラでは許されているのでしょう。
#1で説明した通りなら、「IF 区分1 NOT = "001" AND "002"」は、「区分1が、"001"でもなく、"002"でもないなら」ということで、"003"等は真になります。
こんばんは、ご回答ありがとうございます。
すみません、
IF 区分1 NOT = "001" AND "002"
ではなく
IF 区分1 NOT = '001' AND '002'
でした。(エクセル関数と混同していました)
区分が文字列なら、
IF 区分1 NOT = '001' AND '002'
IF 区分1 NOT = '001' OR '002'
どちらも同じ意味になるという事でしょうか?
No.1
- 回答日時:
どこのメーカーのなんと言うCOBOLコンパイラでしょうか?
私が使っていたH社のCOBOL85では、「A = a1 or a2」という書き方は、「A = a1 or A = a2」の簡略表記として許されていました。
そのコンパイラのマニュアルでは、標準COBOLと異なる部分は、「このコンパイラによる拡張仕様」と明記されていますが、この部分に関しては明記がなかったので、標準COBOLでもそうなのかも知れません。
>どこのメーカーのなんと言うCOBOLコンパイラでしょうか?
聞いていないのですが、おそらくH社だと思います。
>「A = a1 or a2」という書き方は、「A = a1 or A = a2」の簡略表記として許されていました。
はい、私も「or」なら意味がわかるのですが、今回「and」なもので、ちょっと途方に暮れています。。。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- 訴訟・裁判 行政取消訴訟(労災不支給):出訴期間を過ぎてしまった場合、審理するかどうかについて 3 2023/05/07 21:54
- その他(プログラミング・Web制作) COBOL数値転記をCOPY句内での仕様 6 2022/06/15 18:48
- Excel(エクセル) 【Excel】住所に郵便番号を付記する方法 3 2022/05/07 17:15
- 物理学 物理の証明問題についての質問です。 平面内を運動する小球がある。この物体にかかる加速度の方向と大きさ 2 2023/05/16 00:28
- 発達障害・ダウン症・自閉症 中学の時にIQ82の境界知能と診断されました。 今の私も、やはり境界知能でしょうか? そしてこれは、 3 2023/02/19 00:37
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Excel(エクセル) 重複しているか否かをソートせずに判断する方法ありますか? 2 2022/07/06 21:16
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) Excel VBA 複数ブックシートごとにデータを統合する方法について 4 2022/05/20 14:23
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
COBOLでのNOT = の AND条件
その他(プログラミング・Web制作)
-
COBOLのMOVEで桁数が異なる場合
その他(プログラミング・Web制作)
-
COBOLのCOMP形式について
その他(プログラミング・Web制作)
-
-
4
COBOLのIFの入れ子について
その他(プログラミング・Web制作)
-
5
COBOLで文字タイプを数字タイプに変換する方法
その他(プログラミング・Web制作)
-
6
COBOLの論理演算子について
その他(プログラミング・Web制作)
-
7
COBOLのINVALID KEYが理解できません
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
unsigned long long 型のフォー...
-
main() 関数は、int を返値とす...
-
ソフトの開発言語を調べる方法
-
C++でデスクトップGUIアプリ開...
-
<conio.h>?
-
PICのCコンパイラーについて
-
プログラミングって右脳よりの...
-
COBOL計算式の中間ワーク桁数に...
-
printfなど、標準関数のソース...
-
リリースモードとデバッグモー...
-
組込みC開発
-
COBOLの論理演算子について質問...
-
COBOLのALPHABET...
-
C言語 main関数とsum関数の記...
-
未使用引数の注意文出力を回避...
-
初心者です C言語を学びたいで...
-
C++Builder → Visual C++ 移植...
-
C言語で画像を出力したい
-
python エラー
-
エクセルのエラーメッセージ「4...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
unsigned long long 型のフォー...
-
ソフトの開発言語を調べる方法
-
C++でデスクトップGUIアプリ開...
-
printfなど、標準関数のソース...
-
組み込みソフト。ROM領域にデータ
-
リリースモードとデバッグモー...
-
変数の内容がコロコロ変わる、...
-
cc と gcc の違い
-
COBOLの論理演算子について質問...
-
Visual Studio でmakefileを使...
-
PICでのI2C通信でのマスタ、ス...
-
COBOLのALPHABET...
-
<conio.h>?
-
VB6のコンパイラ
-
COBOL計算式の中間ワーク桁数に...
-
パーサとコンパイラの違いって?
-
関数形式マクロ dtaは戻り値が...
-
プログラミングって右脳よりの...
-
C++Builder → Visual C++ 移植...
-
24bit サイズの変数
おすすめ情報