• ベストアンサー

COBOLの論理演算子について

コボルのIF文で IF 区分1 NOT = """ とした記述はコンパイルでエラーとなりました・・・  " は句読文字?なのでこのままでは使えないようなのですが。 どのようにしたら " を判断してくれるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

偶然の一致に期待して無関係の言語の定数表現を教えても・・ COBOLの場合、定数ダブルコーティションを表現するのは、ダブルコーティション2個書きです。 IF 区分1 NOT = ”””” THEN ・・・・・・・・ または IF 区分1 <> ”””” THEN ・・・・・・・・ 同じような使い方で、16進定数表現もダブルコーティション2個書きを使いますので、書き方に注意が必要です。 IF 区分1 = ””FF”” THEN ・・・・・・・・

westbebe
質問者

お礼

ご回答有難う御座います。 今日会社で2つ続けて書いてやってみたら出来ました。 本当に有難う御座いました。助かりました。 16進定数表現も覚えておきます。

その他の回答 (3)

回答No.4

>>#3 16進定数表現は、標準化されていないと思います。 故に、各コンパイラメーカーで書き方が異なります。 X""を使うコンパイラも存じていますが、どちらを使う方が主流かまでは知りません。

回答No.3

どこのメーカーの、何というCOBOLですか? 私の使用していたCOBOLでは、文字定数を囲むのに「'」と「"」を使い分けられました。 「'」や「"」を定数としたい場合は、他の方の指摘のように、「''」や「""」と2個並べることで1文字の「'」や「"」と解釈されます。 これをさらに文字定数として指定するため、 IF 変数名 NOT = """" といった指定になります。 #2さんへ、もし存知なら教えてください。 >同じような使い方で、16進定数表現もダブルコーティション2個書き >を使いますので、書き方に注意が必要です。 >IF 区分1 = ””FF”” THEN ・・・・・・・・ これは、標準COBOLでもそうなのでしょうか? 私が知っている16進定数は、X"FF"のように、Xで表す方法なのですけど。

westbebe
質問者

お礼

ご回答有難う御座います。 今日会社で2つ続けて書いてやってみたら出来ました。 本当に有難う御座いました。助かりました。

回答No.1

COBOLの開発環境はまったく知りませんが BASICの場合だと、二重引用符は二重引用符を2つ書いて表現します。 つまり、 IF 区分1 NOT = """" THEN ~~~~~ と書きます。

westbebe
質問者

お礼

ご回答有難う御座います。 今日会社で2つ続けて書いてやってみたら出来ました。 本当に有難う御座いました。助かりました。

関連するQ&A

  • COBOLの論理演算子について質問です

    長いブランクの後、不定期にCOBOLのソースを読むこともある仕事に就いた者です。 本日見た、 IF 区分1 NOT = "001" AND "002" という記述について質問致します。 区分1は3桁の数字(でも文字列)が入っているのですが、「区分1が、001かつ002でない場合」ということですよね? 何だかこれって変じゃないですか? どう変かは、うまく表現できないのですが…これだと、全ての入力レコードがELSEに流れてしまう気がします。 でも、実際はそうではありません。不思議です。 (他にも論理演算子で条件判断をしている箇所がありますので、上記のセクションの判断とは無関係なレコードもあると思います) どなたか、このモヤモヤを解決して頂けないでしょうか。

  • SQLをcobolに記述することでのエラー

    NetCOBOLでSQLを埋め込んだプログラムを作成しています。 その中でどうしてもうまくいかないのが、短いSQLをCOBOLに記述すると、コンパイル(プレコンパイル→コンパイル→.dll)は通るのですが、実行の際にプログラムが見つからない旨のエラーが出てしまっています。 ソースを色々いじって分かったのは SQLを実行しなくてもソース内に記述するだけで実行エラーとなる。ということです。 コンパイルの時点で何かオプションが必要なのか、SQLが内部的にcallしているモノが何かおかしいのか、幾らか思い当たる部分はあるもののどうしていいかは全くわからずです。 どなたか似た経験ある方や、おもいあたる節のある方いらっしゃいましたら、どんな些細な事でもいいのでご教示願います。

  • COBOL プログラミング

    プログラミングでコンパイルエラーがでて困っています。 問題があったら 指摘していただきたいです。 IF文の条件に合致したときは上のSELECT文 合致しなかったときは下のSELECT文を実行するプログラム コンパイルエラーの内容 条件中のオペランドに誤りがあります。                IF文の書き方が不完全です。 :VSL.MECIDENPYO_NO は定義がなされているものとします IF  :VSL.MECIDENPYO_NO NOT = SPACE EXEC SQL SELECT  抽出したい項目1,  抽出したい項目2, 抽出したい項目3, 抽出したい項目4            * FROM テーブル名 * WHERE 条件1 AND 条件2 AND 条件3   END-EXEC ELSE EXEC SQL     SELECT   抽出したい項目1,  抽出したい項目2, 抽出したい項目3, 抽出したい項目4            * FROM テーブル名 WHERE 条件1 AND 条件2 END-EXEC   END-IF

  • COBOLのIFの入れ子について

    COBOLを最近学び出してわからないのですが、IF文の中のIF文はピリオドが要るのですか?それとも最初のIF文の終わりに(フローチャ-トの交わるところ)までピリオドは打たないのですか?初歩的な質問ですいませんがお願いします。

  • COBOLで、Shellを起動するには?

    UNIX上で、COBOLプログラムからShellを起動したいのですが、その方法が判りません。 CALL文を使うのかな?と思ったのですが、翻訳時にLinkエラーになってしまいます。 その時書いた文 => CALL "TEST.sh" ひょっとして、出来ないのでしょうか? COBOLが詳しくないので、単純に書き方が悪いのかも知れませんが... 申し訳ありませんが、ご教授願います。

  • 論理演算子について

    ◎1----------------------------- int main(void) { int a=10,b=20; while(1){ if(a= =12 && b= =25){ break; } ++a; ++b; } return 0; } -------------------------------- ◎2------------------------------------------------------- #include<stdio.h> #include<ctype.h> int main(void) { char ss[256]="10%%'%shin(no((100!w**a'16&'shi&%$#n~|=~de)&64"; int dt,i=0; printf("右の文字列には言葉が隠れています: "); printf("%s\n",ss); puts(""); printf("1を入力すると言葉が分かります: "); scanf("%d",&dt); puts(""); while(dt!=1 && ss[i] !='\0'){ if( !isalnum(ss[i]) ){ ss[i]=' '; } ++i; } printf("%s\n",ss); puts(""); return 0; } ------------------------------------------------------------ 以上2つのプログラムにおいて疑問があります。 まず◎1のプログラムで、aが12、bが25になるという2つの条件を満たしたら、プログラムを終了させようと思ったのですが、条件を満たしても、ずっとデクリメントし続け終了しません。 「if(a= =12 && b= =25)」の部分を「if(a= =12 || b= =25)」とすれば、aが12になった時点で終了しました。 ◎1では「if(a= =12 && b= =25)」という条件が何故適用されないかという疑問があります。 次に、◎2ではdtが1になり、配列ssに格納されている文字列が、'\0'になるという2つの条件を満たしたら終了させようとしたのですが、1を入力すると、「ss[i]!='\0'」の条件が偽にもかかわらず、while文が一度も実行されませんでした。 そこで、1以外を入力すると、while文は実行されましたが、dtの条件が真になる事はないのに、ちゃんと終了しました。 プログラム◎1、◎2について何故こうのようになってしまうのか、教えていただければ嬉しいです。

  • COBOL

    全商情報処理検定の2級プログラミングのCOBOLを勉強しています。模擬問題を多く解いているのですが全く理解することができません・・・。最初に何かを初期化するのは分かるんですが、何を初期化すればよいのでしょうか?また、PERFORM文がありますが何を繰り返さなければならないのか分からないんです。初期化・PERFORMにしてもどこを見れば良いのでしょうか?やっぱり入力形式・出力形式・処理条件を見て判断するのでしょうか? 質問を押し付けるみたいになって申し訳ないんですが、分かる方いらっしゃいましたら教えてくれないでしょうか。お願いします。

  • COBOL用のテキストエディタ

    こんばんわ。 只今、プログラマ希望で就職活動中なのですが、 以前COBOLは消え行く、という話を聴き、 それならば、とCOBOLはまったく手付かずの状態です。 本日、採用が決まりそうな会社で 「とりあえずCOBOLを勉強してくれ」 といわれました。 とりあえず、明日、会社にてレクチャーしてくれることになったのですが、 ある程度は勉強していこうと思い、富士通のフリーのコンパイラCOBOL3.0をダウンロードしインストールしました。 それで適当に入力してコンパイルしたら、困ってしまいました。 (1)すべての行に字下げがいるらしい。 左づめで書いていたら、行番号が表示され、命令文が上書きされた。 (2)字下げ方法がCやJavaとかなり異なる。 例えば見出し部の宣言、 IDENTIFICATIONとDIVISION.の間の字下げは、 どうやってやるのでしょう…? スペースを何度もおして見栄え良くするのでしょうか?? COBOLに特化したテキストエディタのようなものがあるのでしょうか??

  • COBOLやFORTRANは勉強するといいですか?

    いつも教わってばかりですみません。 今は「MySQLとPHP、JavaScript+αができればいいな。」と皆さんからのご意見で感じました。 まだ、MySQLを始めて数日です。 お話は変わりますが 以前お世話になっていた会社の情報システム部はCOBOLを使っていました。 検索してみると、 http://ja.wikipedia.org/wiki/COBOL http://ja.wikipedia.org/wiki/FORTRAN http://journal.mycom.co.jp/news/2010/01/12/022/index.html COBOLやFORTRANもいい言語のように書いてあります。 しかし、3つ目のURLでは上位に入っていません。 JAVAかC言語などができるようになったらCOBOLやFORTRANは不要なのでしょうか? それとも別物で他のメリットがあるのでしょうか? 蛇足ですがC言語をほんのチョットかじったことがあります。 何だかコンパイルがWindowsの場合とLinuxの場合とでエラーの出方が違うように感じました。 でもこの疑問は先の話です。 COBOLやFORTRANは勉強するといいですか? まったく急ぎませんがお返事待っております。 宜しくお願い致します。

  • cobolの関連ソースについて

    今、触ったこともないcobolのソースの管理をやれ、と言われてます。 で、cobolの実行プログラム、拡張子は、*****.so 見たいな感じなのですが、それをコンパイルするのに、多くのソースがいるみたいなのです、その関連を調べろ、と言われました。たとえば、cobolのmakefileと呼ばれているものを、unix上でviで開いてみると、「ヘッダープログラム」なるコメント文が書いていたり、オブジェクトとか書いていたり、、そして、そのヘッダーの部分をみると、たしかにプログラムの名称が書いているので、今度はそのプログラムの中身を見てみると、同じように、また違うプログラムを参照しているようなのです。ひとつの実行ファイルを生成するのに、ソースがツリー構造になっていて、それをすべて理解する必要があるのですが、中身をみたときに、どういうコマンド等を参照していけばいいのかわかりません。 分かりやすく整理すると、ある実行プログラムを生成するのに、ソースが必要なのですが、そのソースの全てを洗い出すには、どうすればいいのか?ということなのですが、 詳しい方、ぜひよろしくお願いします!

専門家に質問してみよう