| ||||||||
|
******** 一次元テーブル ******** IDENTIFICATION DIVISION. PROGRAM-ID. TBL001. DATA DIVISION. WORKING-STORAGE SECTION. 01 I PIC 9(02). 01 WCNT PIC 9(05) VALUE 0. 01 DISP. 03 CNT PIC X(05) OCCURS 10. * ^^^^^^ ^^ PROCEDURE DIVISION. PERFORM UNTIL WCNT = 100 * (WCNT の値が 100 になるまで繰り返す) PERFORM VARYING I FROM 1 BY 1 UNTIL I > 10 * ( I の値を1から1ずつ増やしながら I > 10 まで繰り返す) ADD 1 TO WCNT * (WCNT に 1 を加える) MOVE WCNT TO CNT(I) * (WCNT を CNT の I番目に MOVEする) END-PERFORM * (繰返し終了) DISPLAY DISP * (DISP を表示する) END-PERFORM (繰返し終了) STOP RUN. * (処理停止)
[ TBL000 処理結果画面] 00001000020000300004000050000600007000080000900010 00011000120001300014000150001600017000180001900020 00021000220002300024000250002600027000280002900030 00031000320003300034000350003600037000380003900040 00041000420004300044000450004600047000480004900050 00051000520005300054000550005600057000580005900060 00061000620006300064000650006600067000680006900070 00071000720007300074000750007600077000780007900080 00081000820008300084000850008600087000880008900090 00091000920009300094000950009600097000980009900100
まずはテーブルの初歩、一次元テーブルです。一次元とは簡単に言えば横一列に同じ箱(項目)を並べた状態だと思えばいいでしょう。Work領域にある、「DISP」という入れ物に、「CNT」という箱を10個並べて用意し、その箱へ「WCNT」の数字をそれぞれ格納し、入れ物(DISP)が一杯になったら、ドバッと吐き出し(出力し)、また続きの数字(WCNT)を箱(CNT)に入れてゆく、といった流れです。テーブルが二次元、三次元、四次元と増えてもこの基本構造は変わらないため、テーブルの理論さえ抑えておけば、全然問題ない。
では次に、このままではちょっと表示が見づらいので、数値の間にわかりやすく「:」を編集してみましょう。
********** 項目間に : を編集 ********** * [集団項目の繰返し指定] IDENTIFICATION DIVISION. PROGRAM-ID. TBL00A. * DATA DIVISION. WORKING-STORAGE SECTION. 01 I PIC 9(02). 01 WCNT PIC 9(05) VALUE 0. * 01 DISP. 03 CNTA OCCURS 10. 05 CNT PIC 9(05). 05 PIC X(01) VALUE ":". * PROCEDURE DIVISION. PERFORM UNTIL WCNT = 100 PERFORM VARYING I FROM 1 BY 1 UNTIL I > 10 ADD 1 TO WCNT MOVE WCNT TO CNT(I) END-PERFORM DISPLAY DISP END-PERFORM STOP RUN.
[ TBL00A 処理結果画面] 00001:00002:00003:00004:00005:00006:00007:00008:00009:00010 00011:00012:00013:00014:00015:00016:00017:00018:00019:00020 00021:00022:00023:00024:00025:00026:00027:00028:00029:00030 00031:00032:00033:00034:00035:00036:00037:00038:00039:00040 00041:00042:00043:00044:00045:00046:00047:00048:00049:00050 00051:00052:00053:00054:00055:00056:00057:00058:00059:00060 00061:00062:00063:00064:00065:00066:00067:00068:00069:00070 00071:00072:00073:00074:00075:00076:00077:00078:00079:00080 00081:00082:00083:00084:00085:00086:00087:00088:00089:00090 00091:00092:00093:00094:00095:00096:00097:00098:00099:00100
少し見やすくなりました。じゃあもっと見やすくしてみましょうか。数値の間にブランク(空白)を入れてみます。
********** ブランク編集の手法 ********** IDENTIFICATION DIVISION. PROGRAM-ID. TBL00B. * DATA DIVISION. WORKING-STORAGE SECTION. 01 I PIC 9(02). 01 WCNT PIC 9(05) VALUE 0. 01 DISP. 03 CNT PIC B(02)9(05) OCCURS 10. * PROCEDURE DIVISION. PERFORM UNTIL WCNT = 100 PERFORM VARYING I FROM 1 BY 1 UNTIL I > 10 ADD 1 TO WCNT MOVE WCNT TO CNT(I) END-PERFORM DISPLAY DISP END-PERFORM STOP RUN.
[ TBL00B 処理結果画面] 00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023 00024 00025 00026 00027 00028 00029 00030 00031 00032 00033 00034 00035 00036 00037 00038 00039 00040 00041 00042 00043 00044 00045 00046 00047 00048 00049 00050 00051 00052 00053 00054 00055 00056 00057 00058 00059 00060 00061 00062 00063 00064 00065 00066 00067 00068 00069 00070 00071 00072 00073 00074 00075 00076 00077 00078 00079 00080 00081 00082 00083 00084 00085 00086 00087 00088 00089 00090 00091 00092 00093 00094 00095 00096 00097 00098 00099 00100
最初に比べ、随分見やすくなったのがわかるでしょうか?プログラムって作ってお終いじゃなく、常にもっとよくなるように絶えず工夫する努力が必要です。