- ベストアンサー
COBOLで内部ソートをしたいです
COBOLで内部ソートをしたいです 生徒一人ひとりの成績データから上位点数のものを3教科得点としたいです。 項目名 変数名 国語 wk-kok 算数 wk-san 社会 wk-sha 理科 wk-rik 体育 wk-tai 3教科合計 wk-3kei これで3教科の合計を点数が高い順に上位3教科で合計としたい場合、 単純に国語と算数を比べて、次は国語と社会を比べて・・・とそんなやり方しか思いつかないのですが 何か良い方法はないでしょうか。 使用しているのは富士通のNETCOBOLです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
もう回答を必要としていないのかもしれませんが... この質問は 一人分の5教科の得点データのうち 得点が高かった上位3教科の得点を 合計するためのよい方法 を教えてほしいということでよろしいですか。 それでしたら、比較対象の個数が5つと決まっていますので 質問にあるとおり、 単純に国語と算数を比べて、次は国語と社会を比べて・・・ が、最適だと思います。 といいますか、単純に比較して得点の高い教科から少ない教科 まで順位付けする処理がソート処理です。 質問者様がやろうとしている処理が、ソート処理そのものです。
その他の回答 (2)
- SI299792
- ベストアンサー率47% (772/1616)
COBOL か。長いことやってないし、持っていない。マニュアルも捨ててしまったので、的確なアドバイスはできませんが、 ファイルに書き込んでソート、 3件読みだせばいいのではないですか。 点数なら、PIC 9(3)でいいです。 https://www.cobol.co.jp/cobol-nyuumon/zisyo/z024-sortbun/
COBOLは数字も文字列扱いなので、文字列も機種ごと文字コードが違うので、ソートはできないです。シェルでソートするか、その機械専用のソートプログラムを自作するしかないです。基本情報技術者試験で出題されるバブルソートやヒープソート等様々な適切な手法でソートしなければいけないです。 とてもなく面倒なので、99%シェルでソートしています。