• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:COBOL)

COBOLのデータフォーマットとSEARCHについての疑問

このQ&Aのポイント
  • COBOLのプログラムでデータフォーマットがOCCURS(300 TIMES)の項目に40 TIMESデータを格納し、41個目には改行コードが入っているが、displayで見ると空白が入っている理由について質問します。
  • COBOLのSEARCH文に関して、データ項目が100回入ることができるが、40回しか格納されていない場合、AT ENDが発生するのかどうかについて質問します。
  • 以上がCOBOLのデータフォーマットとSEARCHに関しての疑問です。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1416)
回答No.3

かなりハズレです。 >データフォーマットがOCCURS(300 OCCURSの先が分かりません。 PIC X(1)の項目を300回繰り返すのと、 PIC X(2)の項目を300回繰り返すのでは サイズが全然違いますよね。 また、データサイズをフォーマットとは 呼びませんし・・・ まぁ、推測で申し上げます。仮に、下記の データ構造だとします。 02 DATA OCCURS 300.   03 AAA PIC X(2). これは2文字×300で、600文字分の 領域があると言うことです。ファイルを 読み込む前から存在する静的なメモリ 空間です。 >改行コード(ODOA) 違います。復帰(0D)と改行(0A)の2文字です。 あなたが「41個目」と言っているのはファイルの 先頭から41文字目である場合、上記は2文字で 一つの集団項目(02 DATA のこと)を構成する ので、DATA(21)のところが41バイト目です。 (2)SEARCH AT END とは「見つからなかった時」ということ です。SEARCHにはWHEN句があり、一致する 条件を記述しますが、該当データがないない 場合にAT END句の文が実行されます。 ですから、「40TIMESしか格納しない場合は41 個目にAT ENDになる」というのは全く違います。 相当、本筋から離れているようですので、こういう サイトではなく、人対人で基礎的なことをしっかり 習うべきです。

zaqwe
質問者

お礼

ありがとうございました。

その他の回答 (2)

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.2

1)40バイトのデータを読み、以降は空白が入ります。   改行コードはこれでデータが終わりということを示しているだけなので、   データとしては入力されません。

zaqwe
質問者

お礼

なるほど、そういうことでしたか ありがとうございます。

  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.1

(1) 説明が不足していて、何とも回答しようが無いです。 もう少しちゃんと説明して下さい。どう説明していいかわからないのなら、プログラムをそのまま書いてください。 (2) 入れる?入れ終わる?? SEARCH は検索する命令ですよ。 100個の配列を全部検索し終わっても見つからないときにAT ENDの部分を実行します。

zaqwe
質問者

補足

1) 会社の研修で使われてるプログラムなんで ここに記載するわけにはいきません。申し訳ない ちょっと考えますね 2) よくわかりました。ありがとうございます。

関連するQ&A