
長いブランクの後、不定期に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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DLLファイルの逆コンパイラにつ...
-
ソフトの開発言語を調べる方法
-
C++でデスクトップGUIアプリ開...
-
変数の内容がコロコロ変わる、...
-
unsigned long long 型のフォー...
-
PICでのI2C通信でのマスタ、ス...
-
リリースモードとデバッグモー...
-
for文内での変数定義
-
main() 関数は、int を返値とす...
-
C言語での四角形描写
-
パーサとコンパイラの違いって?
-
C言語のプログラミングのソフト...
-
24bit サイズの変数
-
cudaのnvccはmingwやgccでも使...
-
SH2マイコンで
-
VB6のコンパイラ
-
python エラー
-
エクセルのエラーメッセージ「4...
-
<unistd.h>をVisualStudioでつ...
-
Eclipseのブレークポイントが○...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ソフトの開発言語を調べる方法
-
unsigned long long 型のフォー...
-
C++でデスクトップGUIアプリ開...
-
COBOLの論理演算子について質問...
-
組み込みソフト。ROM領域にデータ
-
printfなど、標準関数のソース...
-
cc と gcc の違い
-
リリースモードとデバッグモー...
-
パーサとコンパイラの違いって?
-
AIXとCOBOLについて
-
<conio.h>?
-
COBOLのALPHABET...
-
VC++の/Zm オプションについて
-
C++Builder → Visual C++ 移植...
-
C言語の規格
-
COBOLの論理演算子について
-
変数の内容がコロコロ変わる、...
-
Macで使えるC言語のコンパイラ...
-
PICでのI2C通信でのマスタ、ス...
-
最初に使う変数のゼロクリアに...
おすすめ情報