![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_16.png?5a7ff87)
No.2ベストアンサー
- 回答日時:
スペースが詰まって見にくくなってしまったので
01 WORK-TABLE.
03 ITEM PIC X(02) OCCURS 10.
03 ITEM-ASC PIC X(02) OCCURS 10.
03 ITEM-DESC PIC X(02) OCCURS 10.
03 ITEM-OTHER PIC X(02) OCCURS 3.
*
03 WK-ITEM PIC X(02).
03 MAX-ITEM PIC X(02).
03 WK-COUNT PIC 9(02).
01 WORK-INDEX.
03 IX-I PIC 9(02).
03 IX-J PIC 9(02).
***********************************************************************
* ITEM の内容を ITEM-DES に降順で並び替える *
***********************************************************************
*
MOVE ITEM TO ITEM-ASC.
ITEM-DESC.
*
PERFORM IX-I FROM 1 TO 10
UNTIL IX-I > 10
*
PERFORM IX-J FROM (IX-I + 1) TO 10
UNTIL IX-J > 10
*
* 昇順並び替え
IF ITEM-ASC(IX-I) > ITEM-ASC(IX-J)
MOVE ITEM-ASC(IX-J) TO WK-ITEM
MOVE ITEM-ASC(IX-I) TO ITEM-ASC(IX-J)
MOVE WK-ITEM TO ITEM-ASC(IX-J)
END-IF
*
* 降順並び替え
IF ITEM-DESC(IX-I) < ITEM-DESC(IX-J)
MOVE ITEM-DESC(IX-J) TO WK-ITEM
MOVE ITEM-DESC(IX-I) TO ITEM-DESC(IX-J)
MOVE WK-ITEM TO ITEM-DESC(IX-J)
END-IF
*
END-PERFORM
*
END-PERFORM.
*
MOVE ITEM-DESC(1) TO MAX-ITEM.
*
*
***********************************************************************
* ITEM の種類をカウントする *
***********************************************************************
*
MOVE ZERO TO WK-COUNT.
PERFORM IX-I FROM 1 TO 10
UNITL IX-I > 10
IF ITEM-ASC(IX-I) = ITEM-ASC(IX-I + 1)
CONTINUE
ELSE
COMPUTE WK-COUNT = WK-COUNT + 1
END-IF
END-PERFORM.
*
***********************************************************************
* ITEM の内容を無条件に転記する場合(昇順) *
***********************************************************************
*
PERFORM IX-I FROM 1 TO 3
UNITL IX-I > 3
MOVE ITEM-ASC(IX-I) TO ITEM-OTHER(IX-I)
END-IF
END-PERFORM.
*
***********************************************************************
* ITEM の内容をダブりなしで転記する場合(昇順) *
***********************************************************************
*
MOVE 1 TO IX-J.
MOVE ITEM-ASC(1) TO ITEM-OTHER(IX-J).
*
PERFORM IX-I FROM 1 TO 10
UNITL IX-J > 3
IF ITEM-ASC(IX-I) = ITEM-OTHER(IX-J)
CONTINUE
ELSE
MOVE ITEM-ASC(IX-I) TO ITEM-OTHER(IX-J)
COMPUTE IX-J = IX-J + 1
END-IF
END-PERFORM.
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_16.png?5a7ff87)
No.1
- 回答日時:
こんな感じでしょうか?
実際にコンパイルしたわけではありませんので、
カスタマイズしてください。
01 WORK-TABLE.
03 ITEM PIC X(02) OCCURS 10.
03 ITEM-ASC PIC X(02) OCCURS 10.
03 ITEM-DESC PIC X(02) OCCURS 10.
03 ITEM-OTHER PIC X(02) OCCURS 3.
*
03 WK-ITEM PIC X(02).
03 MAX-ITEM PIC X(02).
03 WK-COUNT PIC 9(02).
01 WORK-INDEX.
03 IX-I PIC 9(02).
03 IX-J PIC 9(02).
***********************************************************************
* ITEM の内容を ITEM-DES に降順で並び替える *
***********************************************************************
*
MOVE ITEM TO ITEM-ASC.
ITEM-DESC.
*
PERFORM IX-I FROM 1 TO 10
UNTIL IX-I > 10
*
PERFORM IX-J FROM (IX-I + 1) TO 10
UNTIL IX-J > 10
*
* 昇順並び替え
IF ITEM-ASC(IX-I) > ITEM-ASC(IX-J)
MOVE ITEM-ASC(IX-J) TO WK-ITEM
MOVE ITEM-ASC(IX-I) TO ITEM-ASC(IX-J)
MOVE WK-ITEM TO ITEM-ASC(IX-J)
END-IF
*
* 降順並び替え
IF ITEM-DESC(IX-I) < ITEM-DESC(IX-J)
MOVE ITEM-DESC(IX-J) TO WK-ITEM
MOVE ITEM-DESC(IX-I) TO ITEM-DESC(IX-J)
MOVE WK-ITEM TO ITEM-DESC(IX-J)
END-IF
*
END-PERFORM
*
END-PERFORM.
*
MOVE ITEM-DESC(1) TO MAX-ITEM.
*
*
***********************************************************************
* ITEM の種類をカウントする *
***********************************************************************
*
MOVE ZERO TO WK-COUNT.
PERFORM IX-I FROM 1 TO 10
UNITL IX-I > 10
IF ITEM-ASC(IX-I) = ITEM-ASC(IX-I + 1)
CONTINUE
ELSE
COMPUTE WK-COUNT = WK-COUNT + 1
END-IF
END-PERFORM.
*
***********************************************************************
* ITEM の内容を無条件に転記する場合(昇順) *
***********************************************************************
*
PERFORM IX-I FROM 1 TO 3
UNITL IX-I > 3
MOVE ITEM-ASC(IX-I) TO ITEM-OTHER(IX-I)
END-IF
END-PERFORM.
*
***********************************************************************
* ITEM の内容をダブりなしで転記する場合(昇順) *
***********************************************************************
*
MOVE 1 TO IX-J.
MOVE ITEM-ASC(1) TO ITEM-OTHER(IX-J).
*
PERFORM IX-I FROM 1 TO 10
UNITL IX-J > 3
IF ITEM-ASC(IX-I) = ITEM-OTHER(IX-J)
CONTINUE
ELSE
MOVE ITEM-ASC(IX-I) TO ITEM-OTHER(IX-J)
COMPUTE IX-J = IX-J + 1
END-IF
END-PERFORM.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ノートパソコン パソコンで悩んでいます。 今三年生で建築を学んでいるものです。 使っていたパソコンが壊れてしまったた 4 2023/04/22 03:47
- SEO googleサーチコンソールで、重複URLが多数発生、その修正方法について 2 2023/06/23 16:15
- SEO googleサーチコンソールでの重複ページ(ダブルスラッシュ) 3 2023/06/12 15:00
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL MySQLのテーブル作成で 自信がありません。 2 2022/08/28 05:35
- 物理学 素粒子 ダイアグラム 2 2022/08/07 23:10
- モニター・ディスプレイ どのモニターを買うか迷っているのですが、 5 2022/05/03 09:57
- 英語 a blanket multiplier? 1 2022/05/16 17:47
- Visual Basic(VBA) 【VBA】指定した検索条件に一致したら別シートに転記したい 2 2022/03/23 16:14
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBとアクセスでSQL文に変...
-
『列名 '担当者CD' があいま...
-
HTMLのテーブルの行数が多くな...
-
ワークテーブルの作成について
-
AccessからExcelへエクスポート...
-
Accessで別mdbのテーブルをコピー
-
他のMDBのテーブルに追加したい
-
CSVファイルのエクスポートでソ...
-
ACCESS2010 実行時エラー 2766
-
手動または分散トランザクショ...
-
Access SQLITEのリンクテーブ...
-
asp.net mvcを利用する場合の複...
-
Accessで宛名ラベルに同一宛先...
-
DataGridViewに複数テーブルの...
-
MDBテーブルへの追加変更を教え...
-
DAOでフィールドのデータ型を変...
-
Cシェルで、全テーブル名をコ...
-
SQL文で困っています。
-
ExcelからAccessのテーブルに書...
-
テーブルの行を入れ替える
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBとアクセスでSQL文に変...
-
WORD VBA プログラム修正をお願...
-
Accessで別mdbのテーブルをコピー
-
『列名 '担当者CD' があいま...
-
DataGridViewに複数テーブルの...
-
他のMDBのテーブルに追加したい
-
エクセルのテーブルを解除する...
-
Excel複数シートをaccessへ一括...
-
手動または分散トランザクショ...
-
SQLを発行とは?クエリの作成と...
-
AccessからExcelへエクスポート...
-
CSVファイルのエクスポートでソ...
-
ACCESS2010 実行時エラー 2766
-
HTMLのテーブルの行数が多くな...
-
ExcelVBAからAccessMDB内のテー...
-
【ADO】「Execute」を使うと...
-
★クリスタルレポートの元になる...
-
DataGridの中身をDataSetにテー...
-
ACCESSのテーブル名をリストに...
-
COBOLのINVALID KEYが理解でき...
おすすめ情報