@roimin2

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

なぜINITIALIZE文の前に`MOVE SPACE`するのかを知りたいです

解決したいこと

初歩的な質問で恐縮です。
COBOLで項目を初期化する際、INITIALIZEするのですが
なぜINITIALIZE文の前にMOVE SPACEするのかを知りたいです。
理屈も合わせて教えていただけると幸いです。
誠に恥ずかしながら調べても出ませんでした。

自分で試したこと

・グーグルやQiitaで検索
欲しい情報は出ませんでした。
検索ワードは「COBOL INITIALIZE SPACE」「COBOL INITIALIZE スペース」
「COBOL 初期化 SPACE」でした。

経緯(読み飛ばして問題ない内容)

仕事でCOBOLを使うことになったのですが
ちょくちょくネットや等で拝見したプログラミング例に上記の内容が散見されました。

0 likes

3Answer

COBOLで項目を初期化する際、INITIALIZEするのですが
なぜINITIALIZE文の前にMOVE SPACEするのかを知りたいです。

そのような規則は無いと思いますが、どのように記述されているのでしょうか?
例を示すことができますでしょうか? 参照したURLでも可

1Like

INITIALIZEは処理が非常に遅いので、高速なMOVE SPACEで代用することがある。
しかしながら当然この2つは同じ結果をもたらすとは限らない(問題ないことが多いが)。
なので最初MOVE SPACEだけ書いてたが、バクが出たからINITIALIZEもしとこう(ならMOVE SPACE要らんから消せや)となって、それを流用したコードに(コピペするコーダーは基本的に既存処理を見直さないので)クソコードが蔓延しただけです。

1Like

Comments

  1. INITIALIZEはデータの型に応じて、space / zero / low-value で初期化するものです。 INITIALIZEで初期化される値以外を設定したい場合に、個別に値を move しているものと思われますが、そのような場合でも、REPLACING 付きの INITIALIZE文 を使えば、move は不要かと思います。

  2. @roimin2

    Questioner

    返事遅れました。申し訳ございません。
    REPLACING 付きの INITIALIZEがあればMOVEで予めSPACE等はいらないのですね…。
    ご教示いただきありがとうございます。

Your answer might help someone💌