• ベストアンサー

COBOLで内部ソートをしたいです

COBOLで内部ソートをしたいです 生徒一人ひとりの成績データから上位点数のものを3教科得点としたいです。 項目名 変数名 国語 wk-kok 算数 wk-san 社会 wk-sha 理科 wk-rik 体育 wk-tai 3教科合計 wk-3kei これで3教科の合計を点数が高い順に上位3教科で合計としたい場合、 単純に国語と算数を比べて、次は国語と社会を比べて・・・とそんなやり方しか思いつかないのですが 何か良い方法はないでしょうか。 使用しているのは富士通のNETCOBOLです。

質問者が選んだベストアンサー

  • ベストアンサー
noname#258293
noname#258293
回答No.3

もう回答を必要としていないのかもしれませんが... この質問は  一人分の5教科の得点データのうち  得点が高かった上位3教科の得点を  合計するためのよい方法 を教えてほしいということでよろしいですか。 それでしたら、比較対象の個数が5つと決まっていますので 質問にあるとおり、  単純に国語と算数を比べて、次は国語と社会を比べて・・・ が、最適だと思います。 といいますか、単純に比較して得点の高い教科から少ない教科 まで順位付けする処理がソート処理です。 質問者様がやろうとしている処理が、ソート処理そのものです。

その他の回答 (2)

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.2

COBOL か。長いことやってないし、持っていない。マニュアルも捨ててしまったので、的確なアドバイスはできませんが、 ファイルに書き込んでソート、 3件読みだせばいいのではないですか。 点数なら、PIC 9(3)でいいです。 https://www.cobol.co.jp/cobol-nyuumon/zisyo/z024-sortbun/

noname#254284
noname#254284
回答No.1

COBOLは数字も文字列扱いなので、文字列も機種ごと文字コードが違うので、ソートはできないです。シェルでソートするか、その機械専用のソートプログラムを自作するしかないです。基本情報技術者試験で出題されるバブルソートやヒープソート等様々な適切な手法でソートしなければいけないです。 とてもなく面倒なので、99%シェルでソートしています。