何気ない記録

なんとなく自分の意見を書き記すときにつかいます。つまり不定期更新です。

「グローバル変数」しか使えない事は本質的な問題ではない

COBOLは難しいか、記者が試しにコードを書いてみた | 日経 xTECH(クロステック)

COBOLでは「グローバル変数」しか使えない。」うん。なのでプログラムを最小単位でバラバラにしないと、メンテナンス不能になるのよ。

 

このコメントは非常に正しい。

もしかすると経験者ではないかな?と思う。

 

グローバル変数しかないという話しだが、そもそもCOBOLのプログラムは一本で全てをこなすことはない(はず)。

 

オフコンのジョブ管理をした人にしかわからないが、ジョブを定義してどのプログラムを、どの順番で実行するか、という事が大事で、実はそれ自体はオブジェクト指向の考えに近い。

 

あるプログラムが担うべき処理は、そのプログラム内に限定され、インプットとアウトプットは厳格に定義される、それがCOBOLの基本的な処理の仕方。

 

会社によって流儀は違うが、前処理と本処理、後処理は別なプログラムとすることが一般的。

 

つまり、グローバル変数しかないけど、そもそも何処で変数が操作されるかなどという事を意識するような規模のプログラムは、普通に分割されるのが一般的で、あくまでも1処理=1プログラムのような形になる。

 

且つ、データの流れも基本的に一方方向でしか作らない(はず・・・)。

 

それらのプログラムは、その処理が終わる都度磁気テープや磁気ディスクに結果を書き出し、それのアウトプットと次のプログラムをジョブローダー(リンカー)によってどんどんつなげていく、こういった事をする専属の人もいました。

 

これがパソコンCOBOLになると、プログラムはそれぞれ別々でよいわけだけど、都度磁気テープなどに書き出すのも無駄なので、仮想的なデバイス(結局ただのファイルなんだけど・・・)に対してそれをエミュレートすることで、これまで定義したプログラム、ジョブローダー(リンカー)をそのまま生かす事ができるわけです。

 

元記事を書いている人が恐らくはプログラムを書いたことがある程度の人なので、グローバル変数=良くない、と感じる事は止むを得ないと思いますが、プログラムを日常的に書く人は、グローバル変数の悪影響はそういった短絡的な話しではなく、書き方や使い方により決まるという点は理解すべきでしょう。