「COBOLってこんな言語」

https://anond.hatelabo.jp/20190206222550
メモ.ブコメを見る限りホントにこんな感じだとさ.

なるほど.いかにもな「古い世代の言語」だな.ただでさえ保守性は低い.そこに「秘伝のソースをつぎ足し継ぎ足し」「製法は口伝でのみ伝わる」「創設者は既に他界」「古くさくて硬直化した組織風土」「技術音痴な経営トップ」「事なかれ主義と問題の先送り」あたりが加わると,魔窟に足を踏み入れて無事に帰ってきた者がいないのも納得.

COBOLは本質的にはDSLなんだけど、一見汎用プログラミング言語に見えてしまってRubyPythonなんかと比較するのが誤解のもとではあると思う。今の人でも知ってそうなCOBOLに似ている言語はたぶんSQLで、データを処理するための専用言語。ただ、SQLは頑張ればすごく複雑なこともできるパワフルな言語で、だからこそ現代でも生き延びているわけだけど、COBOLはわりとシンプルなデータ処理を想定している感じ。

で、SQLでいうところのデータベースに相当するのがCOBOLではデータファイル。sedawkでテキストファイルやCSVファイルを行ごとに処理するのとちょっと似てるけど、COBOLの場合は固定長ファイルという点が違う。改行文字は入ってなくて、たとえば150バイトごとに次のレコードみたいな形式。これの1レコードごとに何月何日何時に〇〇という商品を□□円で売ったとか書いてあるのが典型的なデータの内容。それを集計して今日は〇〇が何個売れて売上がどれだけあったとか、出金合計がいくらで入金合計がいくらで、みたいな財務諸表を作ったり。SQLと同じように税率なんかが書いてあるマスタデータと、日々の売り上げが書いてあるトランザクションデータがあって、突き合わせたりということもする。こういう集計処理だからUIはなくて、夜中に自動起動するようなバッチプログラムが主な使われ方。(混乱するから余談だけど、今のCOBOLSQLを使って普通のRDBにもアクセスできる。ただ使い方としては、RDB→ファイル処理→ファイル処理→ファイル処理→ファイル処理→ファイル処理→RDBみたいに、最初と最後だけみたいなのが普通)

思ったよりはずっと新しい本が出ていて愕いた。
標準COBOLプログラミング [改訂新版] 実践COBOLプログラミング入門 COBOLポケットリファレンス 開発現場で役立つCOBOLプログラミング入門第2版
IBM COBOL A Complete Guide - 2019 Edition (English Edition) COBOL NUMERICS (English Edition) Programming in COBOL (English Edition) シェルスクリプトマガジン vol.50

書籍の意外な新しさに,この世界の闇を感じる.

コの業界のオキテ「COBOLとデータベース」

http://www.pro.or.jp/~fuji/mybooks/okite/okite.6.6.html

でも、実際、そのくらい開発にかかる時間が違うのである。今まで、何ヶ月もかかって いたプログラム開発が、せいぜい何日のオーダーになってしまった。これでは、COBO Lで作っていたのでは、全く商売にならない。手作りが良いなんてのは、コンピュータの 世界では全く意味がない。早く、安く、信頼性が高いのが良いのである。

信頼性も、データベースを使うことで、大変な進歩があった。今までは、プログラムを 延々と書いていた。長く書けば書くほど、どこかに誤りが入ってしまうことは避けられな い。しかし、データベースを使うようになると、データベース言語を使って、非常に短く 書くことができる。短いということは、誤りが入る可能性が減ることであり、信頼性の向 上に繋がる。

さらに、データベース自体が、事務処理に必要な機能の殆どを吸収してしまった。CO BOLでは新規開発になるような面倒なことが、データベースならば最初からできてしま う。

とにかく、COBOLとデータベースは対等に競争することはできなくなった。コンピュー タが進歩し、プログラムの自動化が進んだためにCOBOLが衰退してきたのだ。これは 必然の流れで、もはや逆戻りすることはないだろう。

COBOLとDBの生産性の話をどこかで読んだなあと思い出して,記憶の底より発掘.

  • id:perl-o-pal その「時間をかければ」ってとこが大概問題になるんだが…。あと一レコードずつ処理するってのはAutoCommitで運用しているイメージになるといえばabend時の扱いにくさが想像できるんじゃないかな。

トランザクションでやればすむことを,全部自前で独自実装ということか?なんという悪夢.

JOINとかも絡んでる巨大な処理の途中で落ちた時なんて,ロールバックはどうすんだろね.COBOLの逸話で「変更前ファイルからやり直し」って見る度に,なんでそんなことになるかと思っていたけど,まさかそういうことなのか.

http://b.hatena.ne.jp/entry/s/anond.hatelabo.jp/20190206222550

  • id:w1234567 COBOLの言語仕様を理解できたとしても、そこから先にEBCDICやJCLだの若者には失われた古代文明の技術にしか見えないメインフレームの壁が立ちふさがる模様
  • id:sin20xx 概ね正しい。一点だけ補足するとそもそも固定長レコードが使われているのはCOBOLの言語仕様という話しよりも昔のデータ構造の影響も多分に受けているのよね。モリー&テープという資産がメインだった時代の影響も。
  • id:dambiyori すごく良くまとまってる/COBOLって言語単体じゃなくてJCLやらソートやらいろんなミドルウェアやらそれこそメインフレームみたいなハードウェアやらみたいなそれを取り巻くエコシステムあっての言語だよなぁと。
  • id:doko 合ってる。そしてJCLの方がよっぽど難しくてベンダ依存があって読みにくい。2001年入社だったぼくもゼロからJCLを書けたことはない。あの当時でさえゼロから書けた人って果たしてどれだけいたんだろうかと思う
  • id:timpotoolf IDENTIFICATION DIVISION ENVIRONMENT DIVISION DATA DIVISION PROCEDURE DIVISION という4つの層に分かれていて云々が無いぞ


  • id:perl-o-pal その「時間をかければ」ってとこが大概問題になるんだが…。あと一レコードずつ処理するってのはAutoCommitで運用しているイメージになるといえばabend時の扱いにくさが想像できるんじゃないかな。


  • id:fukken 考え方が異質ではあるが、それをそれとして許容したとしてなお設計が古いよな。抽象化レベルが低かったりスケールしなかったり。
  • id:torinosito うん、そしてデータ構造の仕様書を書かなかったり書いても残しておかなかったりしたところが多くてな……
  • id:ushigyu 大規模COBOLレガシーシステムの移行は大変。設計書もろくにないCOBOLプログラムを解読し、インプットとプロセスとアウトプットを残さず洗い出し、プログラム言語とDB組み合わせて中身そっくり新しく作らないといけない。
  • id:pandafire リンク先をたどりつつ読んでたら、COBOL「私を殺すと言ってた言語は、みんな死んだよ」の一文に痺れた。固定長ファイルだから、項目一個増やす、とかが簡単にできなくて大変なんだよね、でもそんなところも好きです
  • id:Tailchaser これもRPGとかと同列だった頃の話でしかなく、COBOL2000(OOCOBOL)以降はオブジェクト指向で書けるようになり、Java変換はそちらを使って置き換えていく、ってところまで書かないと
  • id:BaBo やたらと面倒だった記憶があるけど、よく思い出してみたらCOBOLのせいではなく、一行直すだけでも修正依頼書で決裁、修正したら運営担当部門に引き継ぎ会議だの手続きが面倒なだけだった。銀行。
  • id:dgen COBOLちょっと触ってたとき、紙にコード書いてキーパンチャーが打つっていう意味不明なことしてたな。ミスタイプも多かったし、なんで外注してたのかいまだにわからん。紙で残すため?PCが高価で足りなかったから?
  • id:beerbeerkun どんなエディター使ってるんだろう。いまどきのモダンなやつだと楽できる機能てんこ盛りだけどCOBOLもそういうの使えばかなり書きやすくなると思うんだけどね。


  • id:sawarabi0130 COBOLの残党もかなり減ったが、その後に現れるのがCOBOL技術者がCOBOLチックに設計してCOBOLチックにプログラミングされたVB等の他言語ソースからのマイグレーションやメンテナンス。COBOLの弊害を継承した作りで泣ける。
  • id:Harnoncourt アクセスは遅い←特にISF(索引付きファイル)をマスタ扱いして参照すると激遅。RDBじゃねえんだぞ/理解していない奴が仕様書を書くからこういうトンチキなことが起きる。こんなのを相手に再構築した若き日々(遠い目
  • id:ku__ra__ge その仕様を受け継ぐために過渡期のRDBMSのテーブル設計では、列が全部(varcharではなく)charだったり、予備列1~10がくっついていたりする



  • id:reitanigawa COBOLから発展した、業務用アプリケーション開発言語、HOLONというのがあってだなぁ
  • id:gui1 増田さん、CICSとかIMSという言葉を聞いたことありませんか?覚えると楽しいからチャレンジするといいですよ。単価もぐっと上がります。がんばれ(´・ω・`)

http://www.nec.co.jp/product/case/ab/presen/visual.html
http://www.nec.co.jp/product/case/ent/presen/index.html

https://www.ibm.com/support/knowledgecenter/ja/SSGMCP_5.4.0/fundamentals/fundamentals.html

ま,魔界だ.

  • id:bibicosa 古典としてのCOBOLは恵まれていたのでは。LISPとか話題にすらならない。

LISPならEmacsの中で今も元気に生きている.

Emacs Lispテクニックバイブル

Emacs Lispテクニックバイブル

なんか召喚された気がした.

はてなブログへの移行記念に,ついでにタイトルも変更しようかな.

twitter