
長いブランクの後、不定期に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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DLLファイルの逆コンパイラにつ...
-
組み込みソフト。ROM領域にデータ
-
unsigned long long 型のフォー...
-
printfなど、標準関数のソース...
-
C++を始めるにあたって
-
エディタとコンパイラ 基礎
-
C言語の本!
-
H8/3664でのEEPROMの使用について
-
COBOLの論理演算子について
-
VisualC++6.0でhugeモデルを使...
-
ソフトの開発言語を調べる方法
-
turbo-Cとturbo-C++
-
COBOL計算式の中間ワーク桁数に...
-
python エラー
-
アプリケーションのDLLファイル...
-
multiple definitionというエラー
-
デバッグとビルドは何が違うの...
-
<unistd.h>をVisualStudioでつ...
-
64ビットのlinuxで32ビットメモ...
-
VC++6.0 で使用可能な、"Platfo...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DLLファイルの逆コンパイラにつ...
-
unsigned long long 型のフォー...
-
ソフトの開発言語を調べる方法
-
組み込みソフト。ROM領域にデータ
-
C++でデスクトップGUIアプリ開...
-
パーサとコンパイラの違いって?
-
【C言語】 型のサイズについて
-
COBOLのALPHABET...
-
<conio.h>?
-
printfなど、標準関数のソース...
-
COBOLの論理演算子について質問...
-
cc と gcc の違い
-
DLLの呼び出され方が分かりません
-
AIXとCOBOLについて
-
PICマイコンのプログラムカウン...
-
リリースモードとデバッグモー...
-
C++Builder → Visual C++ 移植...
-
C++DLLの明示的リンクに関して
-
cobolで実行環境って何ですか?
-
C言語の規格
おすすめ情報