ノート:COBOL

message: 投稿の確認画面に 「謝辞」「献辞」その他これに類するセクション名は、GFDL上の問題を必要以上に複雑にしますので、控えてください。という文言があるが、COBOLに言及するときにCODASYLが要請する謝辞を転載するのも禁止か？221.47.106.107 2006年1月31日 (火) 01:35 (UTC)

message: ここ数回の編集において編集合戦ととれなくもない状況になっているようにお見受けいたしました。正しい、正しくないの論争は論拠となる文献を示すことによって終結することが多いです。単に差し戻すのではなく、文献を添えて差し戻されることをおすすめします。差し戻されたくない側の方も、論拠となる文献を添えて記載すれば、そう簡単には差し戻せなくなります。うまく外部の文献を使いこなしてください。--Akaniji 2010年1月17日 (日) 07:17 (UTC)
*すみません、当事者です。ただし履歴で明らかな通り、123.219.87.67 さんの大量削除等を、単にコメントしては現状復旧しているだけの認識です。以下、経緯をまとめます。
replies: text: (1)2010/1/6 123.219.87.67 さんの加筆を、Chisatosさんが「言語の問題ではない 」とコメントして巻き戻し

text: (2)2010/1/16 123.219.87.67 さんの加筆を、私が「言語以外との混同多数」とコメントして巻き戻し

text: (3)2010/1/17 15:00頃 123.219.87.67 さんの大量削除を、私が「合意なき無闇な削除」とコメントして巻き戻し

text: (4) 2010/1/17 16:00頃 123.219.87.67 さんの大量削除を、私が「合意なき無闇な削除のため、昨日を含め3回目」とコメントして巻き戻し
上記(1)(2)の加筆を見れば、COBOLという言語の仕様と、各汎用機での仕様（JCLからのパラメータ指定、SQL以外のDBMS照会言語など）と、単にそのシステムの構成（夜間バッチ更新など）を、混同しているのは明白です。また(3)(4)の大量削除は、COBOLの実績や最近の拡張の記載に集中しており、Wikipedia:中立性に問題があります。つまり、私の側からは「文献を出せる以前のレベル」です。そこで123.219.87.67 さんにお願いですが、自説が正しいと思うのでしたら、まずは連続削除や編集を止めて、このノートで理由を説明お願いします。私のわかる範囲でしたら説明致します。なお、利用者‐会話:123.219.87.67に、当ノートへのお誘いを記入しました。（一部更新しました）--Rabit gti 2010年1月17日 (日) 08:20 (UTC)
*123.219.87.67 さんへ。上記(1)(2)の削除理由が、コメントだけでは伝わらなかった可能性があるため、以下に説明させてください。(1)ですが、まず「COBOLが他の言語と違う点として、COBOLは基本的に会話型の言語ではないという点がある」は、正しくありません。COBOL自体は単なる言語で、他のFORTRANやC言語などと同様、会話型（オンライントランザクション処理）にも、バッチ処理にも使えますし、実際に多数使われています。また「COBOLにはメソッドを作る事ができないし、カプセル化、ポリモフィズムなどオブジェクト指向に必須的な要素を作成する事ができない」は、オブジェクト指向対応のCOBOLならば可能です（広く普及はしていませんが）。(2)ですが、「特にデータベースに関しては、メーカー毎にアクセス方法が違っておりそれぞれ覚える必要がある」は、言語の話ではなく、どんなDBMSを使用するか（したか）だけの話です。「現在のSQL文と比べるとメーカー毎に差は、あると思うがプライマリーキーのみでしか検索できず、曖昧検索の機能もないのが特徴である。」も同様で、汎用機にはIMSやAIMなどの階層型DBMSも、ネットワーク型も、DB2などのSQLを使用できるリレーショナルDBMSもありますし、いずれもCOBOLから使用可能です。以上が(1)(2)の削除理由です。なお、さきほど私がコメントアウトした「経験論から言うと、COBOLは、1社のシステムだけでも他の言語で換算すると1国の政府のシステム全体分の膨大な量がある。その為、メンテナンスが大変である。 」ですが、根拠も出典もありません。本記事は、COBOLという言語に関する記事なので、たまたま経験したシステムに固有の話を「COBOLは○○だ」と断定して書くのではなく、「言語同士で比較してどう違う」との客観的で検証可能な記載をお願い致します。--Rabit gti 2010年1月17日 (日) 11:20 (UTC)
---------------------------------------------------------------------------
オブジェクト指向は、無理です。
どこかのページにCOBOLのオブジェクト指向について書かれてありましたが、メソッドと書かれてある項目が他の言語とまったく違っていました。
どこが違うのかを説明すると
メソッドに変数を与える事が不可能な点と変数を返す事が不可能な点です。
COBOLは、変数の宣言と処理の記述を分けているので無理です。
Javaで例を挙げて説明します。
	public static String FormatChange
					(String data_,String format) throws Exception{
		
		
		String AfterData="";
		try{
			df=new DecimalFormat(format); 
			
			AfterData=df.format(Integer.parseInt(data_));
		}catch(Exception e){
			throw e;
		}
		return AfterData;
	}
上記のメソッドの場合、 public static CCC FormatChange(AAA){ }
の形になっていますね。
AAAで変数を渡しています。{}の中で使えるという事です。
CCCの形で変数を返しています。
これによりFormatChange()の中身を知らなくても値を渡せば値が返ってくるという事です。
これがカプセル化というものです。
String AfterData="";は、このメソッドでAfterDataという変数を宣言しています。
つまり、このメソッド以外ではこの変数は使えないという事です。
しかし、COBOLの場合は別の所で変数を宣言していますので変数が全体に
影響しますね。
この違いです。
 
---------------------------------------------------------------------------
*ご参考まで。オブジェクト指向COBOLに注目、COBOL2002 のご紹介。そもそも当記事では「従来のCOBOLの構文のままでオブジェクト指向が可能」との記述はされていません。COBOL2002でオブジェクト指向を含む拡張がされ、従来の構文とも上位互換性があり、複数のベンダーにより実装されています。いわばC言語とC++の関係ですが、COBOL2002もCOBOLの仕様として正式に標準化されています。--Rabit gti 2010年1月28日 (木) 03:05 (UTC)
thread_title:  編集合戦について