COBOL85のコーディングについて教えてください。
以下のようなレコードを持つテーブルで、CD1="B"のレコードを、(1)→(2)→(3)の降順で読み込むには、どのようにコーディングすれば可能でしょうか?
コーディング例をお願いします。
CD1|CD2|DATE
――――――――――――――――
A |1 |20120101
A |2 |20991231
(3) B |1 |20120101
(2) B |2 |20131231
(1) B |3 |20991231
C |1 |20120101
C |2 |20991231
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
COBOLで扱える標準編成ファイルは、基本的に順編成ファイル、直編成ファイル、索引順編成ファイル、区分編成ファイル
の4種類です。(マシンにより、汎用機、linux(unix系)にもよるのですが、ご質問の言語はどの環境で取り扱うのでしょうか?
汎用機などでは、COBOL言語だけでなく、js(jcl)のユーティリティも駆使して実現することになります。
また、unix系だと、専用のユーティリティ(sort、margeなど)も用意されているかと思いますが??
また、扱うデータ量によりDBを選択する選択肢もあります。
No.2
- 回答日時:
2か、4ならしってるけど多分同じでしょ(操作方法は大幅に違うかな..)だとしても、ファイル編成は多分同じなので
上記通りのファイルであれば、Bのレコードが上記例で3件程度なら、一度メモリに貯めこんで、内部ソートするのが
いいと思います。
最近のCOBOLでは、OCCURS句にて最大65534指定できるかと思いましたが、一昔では最大255でした。
この辺は、COBOLマニュアルを確認してください。
仮に、何件くるかわからない場合は、Bのレコードを別ファイルに抜き出して、(BをキーとしJCLで抽出)後、Bが
入ったファイルをsort(降順に)後、上記ファイルと抜き出しソート後ファイルを照合し結果として上記ご質問の内容を
実現する方法があるかと思います。
元のファイル(キーのみ抜粋)
A,1
A,2
B,1
B,2
B,3
C,1
C,2
上記ファイルを抽出 (temp1)
B,1
B,2
B,3
ソート後ファイル ファイル1
B,3
B,2
B,1
このファイルと元のファイルからBを除いたファイル (以下ファイル2と仮名)
A,1
A,2
C,1
C,2
ファイル1とファイル2を照合(1番目の項目を照合キーとして)
A,1
A,2
B,3
B,2
B,1
C,1
C,2
結果上記B項目が降順となるようにファイルが作成される
(って具合になるかと思います)
(注意:上記例では、CD1がコード順であることが前提です。)
★基本的に汎用機では大容量のデータを扱うことが多くマシン1台に多くの端末がぶら下がり
多くの利用者が同時に利用しています。よってあまり多くのレコードをメモリ上に抱えて処理する
のは好ましくありません。上記例のようにファイルの抽出、ソート、マージのパターンを駆使して
処理を実現していきます。
JCLを利用して処理を考案する前に、マニュアルとしてスーパーバイザ解説書ってのがある
はずなので最初にそれを熟読しておきましょ!
No.3
- 回答日時:
データベースなのか、シーケンシャルファイルなのかで違うと思いますが
データベースなら
EXEC SQL DECLARE CUR1 CURSOR FOR
SELECT CD1,CD2,DATE
FROM テーブル
ORDER BY CD2 DESC
END-EXEC.
EXEC SQL DECLARE CUR1 CURSOR FOR
EXEC SQL
FETCH CUR1
INTO :XXX-REC
END-EXEC.
みたいにすると、ソートのかかった状態でデータ処理できますよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- Microsoft ASP C#からvbsを実行したい 5 2022/11/24 17:31
- その他(プログラミング・Web制作) pyautoguiにお詳しい方お願いします 1 2022/08/18 18:51
- HTML・CSS Chrome のキャッシュについて 3 2022/05/26 07:50
- 計算機科学 アルゴリズムの問題を解く上で紙に書いて考えるのはナシですか? 紙に書いて構造をある程度組み立てた上で 3 2023/03/11 16:53
- C言語・C++・C# C言語について。 11 2023/02/25 10:31
- 車検・修理・メンテナンス BMW e93 335i カブリオレ エンジンストール 1 2022/09/13 01:12
- 関東 中古レコード屋さんで、レコードやCDやレーザーディスクなどが無料でご自由にお持ち帰り下さい、と箱に書 4 2022/04/19 23:10
- 音楽配信 音楽ダウンロード、一曲買ってますか?サブスクの中だけのダウンロードですか? 3 2022/06/23 00:08
- 邦楽 麻生真美子キャプテンの 1 2023/05/29 23:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
共有フォルダに誰が何にアクセ...
-
拡張子が「cda」のファイルを聞...
-
【Excel】[Expression.Error] ...
-
Access VBA を利用して、フォル...
-
Batch: フォルダ内の特定のファ...
-
AccessVBAで作成したExcelファ...
-
リソースのみのDLLの作り方と使...
-
事務の派遣で働いています。多...
-
tmpファイル なぜできる?削除...
-
月が変わったら自動でシートが...
-
【ExcelVBA】FreeFile関数とGet...
-
VBAでCSVファイルが使用中かど...
-
データベースを作るために必要...
-
COM+を使ってネットワーク越し...
-
特定のエクセルファイルを起動...
-
XMLDocumentのLoadとSave
-
0バイトのファイルを検知したい。
-
1行読み込んだ後に消去
-
excelを共有ファイルにすると行...
-
メールdbxファイルの開く方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
共有フォルダに誰が何にアクセ...
-
【Excel】[Expression.Error] ...
-
特定のエクセルファイルを起動...
-
Batch: フォルダ内の特定のファ...
-
VBAでCSVファイルが使用中かど...
-
月が変わったら自動でシートが...
-
tmpファイル なぜできる?削除...
-
AccessVBAで作成したExcelファ...
-
Access VBA を利用して、フォル...
-
(Excelマクロ)datファイルをエ...
-
事務の派遣で働いています。多...
-
Excel VBA 処理後データが重た...
-
excelを共有ファイルにすると行...
-
【アクセス】「ほかのユーザー...
-
XMLデータを変換し印刷する方法
-
CSVの項目行を削除して一つのフ...
-
mdbファイル フォームを開くと...
-
社内Excel共有ブックでの保存ト...
-
ファイルの途中に文字列を挿入
-
拡張子が「cda」のファイルを聞...
おすすめ情報