 EXPLI01: PROC OPTIONS(MAIN);
 /*********************************************************************/
 /*  SYSTEM   : TvvO                                  */
 /*  PGM-ID   : EXPLI01                                               */
 /*  PGM-NAME : f[^Wv                                      */
 /*  AUTHOR   : K.HIWASA                                              */
 /*  DATE     : 2025/01/03                                            */
 /*********************************************************************/
 /*-------------------------------------------------------------------*/
 /*  t@C                                                       */
 /*-------------------------------------------------------------------*/
       DCL  IN01              FILE RECORD INPUT ,
            OT01              FILE RECORD OUTPUT;
 /*-------------------------------------------------------------------*/
 /*  ʔ㖾׃t@C                                           */
 /*-------------------------------------------------------------------*/
       DCL  1  IN01_REC,
               3  IN01_URIAGE_DATE        CHAR  (008),
               3  IN01_SHOHIN_CD          CHAR  (004),
               3  IN01_SURYO              FIXED (003),
               3  IN01_TANKA              FIXED (005),
               3  IN01_YOBI               CHAR  (033);
 /*-------------------------------------------------------------------*/
 /*  㖾׃t@C                                               */
 /*-------------------------------------------------------------------*/
       DCL  1  OT01_REC,
               3  OT01_SHOHIN_CD          CHAR  (004),
               3  OT01_SURYO_KEI          FIXED (005),
               3  OT01_KINGAKU            FIXED (009),
               3  OT01_YOBI               CHAR  (038);
 /*-------------------------------------------------------------------*/
                                                               /*COUNT*/
       DCL  CNT_IN01                      FIXED (006) INIT(0),
            CNT_OT01                      FIXED (006) INIT(0);
                                                              /*SWITCH*/
       DCL  SW_END                        CHAR  (001) INIT(' ');
 /*********************************************************************/
       ON  ENDFILE(IN01)
         BEGIN;
           SW_END  =  '1';
         END;
 /*********************************************************************/
 /*  MAIN PROCEDURE                                                   */
 /*********************************************************************/
      CALL  INIT_RTN;

      DO  WHILE(SW_END  =  ' ');
        THEN  DO;
          CALL  MAIN_RTN;
        END;
      END;

      CALL  TERM_RTN;
 /*********************************************************************/
 /*                                                         */
 /*********************************************************************/
 INIT_RTN : PROC;
      OPEN  FILE(IN01),
            FILE(OT01);

      CALL IN01_READ_RTN;                                  /*IN01 READ*/
 END INIT_RTN;
 /*********************************************************************/
 /*  又                                                         */
 /*********************************************************************/
 MAIN_RTN : PROC;
      OT01_SHOHIN_CD  =  IN01_SHOHIN_CD;
      OT01_SURYO_KEI  =  0;
      OT01_KINGAKU    =  0;
      OT01_YOBI       =  ' ';

      DO  WHILE((SW_END  =  ' ') & (IN01_SHOHIN_CD  =  OT01_SHOHIN_CD));
        THEN  DO;
          CALL  MEISAI_RTN;
        END;
      END;
     
      WRITE  FILE(OT01)  FROM(OT01_REC);
      CNT_OT01  =  CNT_OT01  +  1;
 END MAIN_RTN;
 /*********************************************************************/
 /*  ׏                                                       */
 /*********************************************************************/
 MEISAI_RTN : PROC;
      OT01_SURYO_KEI  =  OT01_SURYO_KEI  +  IN01_SURYO;
      OT01_KINGAKU    =  OT01_KINGAKU  +
                         IN01_TANKA  *  IN01_SURYO;

      CALL IN01_READ_RTN;                                  /*IN01 READ*/
 END MEISAI_RTN;
 /*********************************************************************/
 /*  I                                                       */
 /*********************************************************************/
 TERM_RTN : PROC;
      CLOSE  FILE(IN01),
             FILE(OT01);

      PUT EDIT
        ('************') (A)
        ('PGM :EXCBL01') (A)
        ('IN01:',CNT_IN01) (A,F(6))
        ('OT01:',CNT_OT01) (A,F(6))
        ('************') (A);
 END TERM_RTN;
 /*********************************************************************/
 /*  ʔ㖾׃t@CǍ                                       */
 /*********************************************************************/
 IN01_READ_RTN : PROC;
      READ  FILE(IN01)  INTO(IN01_REC);

      IF  SW_END  =  ' '
        THEN  DO;
          CNT_IN01  =  CNT_IN01  +  1;
        END;
 END IN01_READ_RTN;
 END EXPLI01;.
