/*************************************
*                                    *
*    外枠システム  readdata.c        *
*  （入力ファイル読み込み）          *
*      共済部分は除く                *
*                                    *
*************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
#include "set.h"
#include "cntl.h"
#include "file_open.h"


void readdata(void)
{

 /* 変数定義 */
    int     ii               ;
    int     jj               ;
    int     kk               ;
    previous_buffer0 = -1000 ;
    char    filename[250]    ; 
    char    pathname[250]    ; 


/*  出力先のディレクトリを作成  */
    sprintf(pathname, "/rev31/wakuc/rslt/ver_3/" ) ;
    mkdir( pathname, 0755 );
    sprintf(pathname, "/rev31/wakuc/rslt/ver_3/rslt%04d", BANGO ) ;
    mkdir( pathname, 0755 );


/*  エラー出力用ファイルを開く  */
    sprintf(filename, "/rev31/wakuc/rslt/ver_3/rslt%04d/waku%04d-err.csv" , BANGO, BANGO);
    if ((fp_err = fopen(filename, "w")) == NULL) {
        fprintf(stderr, "出力用ファイルを開けません\n");
        exit (2);
    }


/* 人口関係 */

  /* （１）推計人口  */

      switch ( JIN ) {
          /* H24人口推計 */
          case 21: /* 29年出生率中位推計 */
              if ( QX == 1 ) { /* 死亡率中位推計 */
                sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-fm-dm.csv");
                sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-fm-dm.csv");
              }
              else if ( QX == 2 ) { /* 死亡率高位推計 */
                sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-fm-dh.csv");
                sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-fm-dh.csv");
              }
              else if ( QX == 3 ) { /* 死亡率低位推計 */
                sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-fm-dl.csv");
                sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-fm-dl.csv");
              }
              break ;
          case 22: /* 29年出生率高位推計 */
              if ( QX == 1 ) { /* 死亡率中位推計 */
                sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-fh-dm.csv");
                sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-fh-dm.csv");
              }
              else if ( QX == 2 ) { /* 死亡率高位推計 */
                sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-fh-dh.csv");
                sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-fh-dh.csv");
              }
              else if ( QX == 3 ) { /* 死亡率低位推計 */
                sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-fh-dl.csv");
                sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-fh-dl.csv");
              }
              break ;
          case 23: /* 29年出生率低位推計 */
              if ( QX == 1 ) { /* 死亡率中位推計 */
                sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-fl-dm.csv");
                sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-fl-dm.csv");
              }
              else if ( QX == 2 ) { /* 死亡率高位推計 */
                sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-fl-dh.csv");
                sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-fl-dh.csv");
              }
              else if ( QX == 3 ) { /* 死亡率低位推計 */
                sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-fl-dl.csv");
                sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-fl-dl.csv");
              }
              break ;
      }

      /*  ファイルを開く  */
      if ((fp_jinkom = fopen(filename_m, "r")) == NULL) {
          fprintf(stderr, "男性人口推計ファイルを開けません!\n");
          exit (2);
      }
      if ((fp_jinkof = fopen(filename_f, "r")) == NULL) {
          fprintf(stderr, "女性人口推計ファイルを開けません!\n");
          exit (2);
      }

      /*  男性読み込み  */
      karayomi( fp_jinkom ) ;
      previous_buffer0 = -1000 ;
      while (( read_csv( buffer, fp_jinkom, &data_number ) != EOF ) && (buffer[0] > previous_buffer0 )) {
          nendo = (int)(buffer[0]) ;
          if (( nendo < STARTY ) || ( nendo > ENDY )) {
              fprintf(stderr, "男性人口ファイルに変な年度が入っています!\n");
              exit (2);
          }
          sojinko_c[nendo-STARTY][1] = buffer[2];
          for ( nenrei=0; nenrei<=120; nenrei++) {
              jinko_c[nendo-STARTY][1][nenrei] = buffer[nenrei+3];
          }
          previous_buffer0 = buffer[0] ;
      }

      /*  女性読み込み  */
      karayomi( fp_jinkof ) ;
      previous_buffer0 = -1000 ;
      while (( read_csv( buffer, fp_jinkof, &data_number ) != EOF ) && (buffer[0] > previous_buffer0 )) {
          nendo = (int)(buffer[0]) ;
          if (( nendo < STARTY ) || ( nendo > ENDY )) {
              fprintf(stderr, "女性人口ファイルに変な年度が入っています!\n");
              exit (2);
          }
          sojinko_c[nendo-STARTY][2] = buffer[2];
          for ( nenrei=0; nenrei<=120; nenrei++) {
              jinko_c[nendo-STARTY][2][nenrei] = buffer[nenrei+3];
          }
          previous_buffer0 = buffer[0] ;
      }

      /* ファイルクローズ */
      fclose(fp_jinkom);
      fclose(fp_jinkof);




          switch ( KYOREQBK ) {
              case 21: /* 29年・出生率中位推計・死亡率中位推計 */
                  sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-fm-dm.csv");
                  sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-fm-dm.csv");
                  break ;
              case 22: /* 29年・出生率中位推計・死亡率中位推計 */
                  sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-fm-dm.csv");
                  sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-fm-dm.csv");
                  break ;
              case 23: /* 29年・出生率中位推計・死亡率中位推計 */
                  sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-fm-dm.csv");
                  sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-fm-dm.csv");
                  break ;
          }


      if ((fp_jinkom = fopen(filename_m, "r")) == NULL) {
          fprintf(stderr, "男性人口推計（標準K）ファイルを開けません!\n");
          exit (2);
      }
      if ((fp_jinkof = fopen(filename_f, "r")) == NULL) {
          fprintf(stderr, "女性人口推計（標準K）ファイルを開けません!\n");
          exit (2);
      }

      /*  男性読み込み  */
      karayomi( fp_jinkom ) ;
      previous_buffer0 = -1000 ;
      while (( read_csv( buffer, fp_jinkom, &data_number ) != EOF ) && (buffer[0] > previous_buffer0 )) {
          nendo = (int)(buffer[0]) ;
          if (( nendo < STARTY ) || ( nendo > ENDY )) {
              fprintf(stderr, "男性人口（標準K）ファイルに変な年度が入っています!\n");
              exit (2);
          }
          stk_sojinko_c[nendo-STARTY][1] = buffer[2];
          for ( nenrei=0; nenrei<=120; nenrei++) {
              stk_jinko_c[nendo-STARTY][1][nenrei] = buffer[nenrei+3];
          }
          previous_buffer0 = buffer[0] ;
      }

      /*  女性読み込み  */
      karayomi( fp_jinkof ) ;
      previous_buffer0 = -1000 ;
      while (( read_csv( buffer, fp_jinkof, &data_number ) != EOF ) && (buffer[0] > previous_buffer0 )) {
          nendo = (int)(buffer[0]) ;
          if (( nendo < STARTY ) || ( nendo > ENDY )) {
              fprintf(stderr, "女性人口（標準K）ファイルに変な年度が入っています!\n");
              exit (2);
          }
          stk_sojinko_c[nendo-STARTY][2] = buffer[2];
          for ( nenrei=0; nenrei<=120; nenrei++) {
              stk_jinko_c[nendo-STARTY][2][nenrei] = buffer[nenrei+3];
          }
          previous_buffer0 = buffer[0] ;
      }

      /* ファイルクローズ */
      fclose(fp_jinkom);
      fclose(fp_jinkof);



          switch ( KYOREQBR ) {
              case 21: /* 29年・出生率中位推計・死亡率中位推計 */
                  sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-fm-dm.csv");
                  sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-fm-dm.csv");
                  break ;
              case 22: /* 29年・出生率中位推計・死亡率中位推計 */
                  sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-fm-dm.csv");
                  sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-fm-dm.csv");
                  break ;
              case 23: /* 29年・出生率中位推計・死亡率中位推計 */
                  sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-fm-dm.csv");
                  sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-fm-dm.csv");
                  break ;
          }


      if ((fp_jinkom = fopen(filename_m, "r")) == NULL) {
          fprintf(stderr, "男性人口推計（標準R）ファイルを開けません!\n");
          exit (2);
      }
      if ((fp_jinkof = fopen(filename_f, "r")) == NULL) {
          fprintf(stderr, "女性人口推計（標準R）ファイルを開けません!\n");
          exit (2);
      }

      /*  男性読み込み  */
      karayomi( fp_jinkom ) ;
      previous_buffer0 = -1000 ;
      while (( read_csv( buffer, fp_jinkom, &data_number ) != EOF ) && (buffer[0] > previous_buffer0 )) {
          nendo = (int)(buffer[0]) ;
          if (( nendo < STARTY ) || ( nendo > ENDY )) {
              fprintf(stderr, "男性人口（標準R）ファイルに変な年度が入っています!\n");
              exit (2);
          }
          str_sojinko_c[nendo-STARTY][1] = buffer[2];
          for ( nenrei=0; nenrei<=120; nenrei++) {
              str_jinko_c[nendo-STARTY][1][nenrei] = buffer[nenrei+3];
          }
          previous_buffer0 = buffer[0] ;
      }

      /*  女性読み込み  */
      karayomi( fp_jinkof ) ;
      previous_buffer0 = -1000 ;
      while (( read_csv( buffer, fp_jinkof, &data_number ) != EOF ) && (buffer[0] > previous_buffer0 )) {
          nendo = (int)(buffer[0]) ;
          if (( nendo < STARTY ) || ( nendo > ENDY )) {
              fprintf(stderr, "女性人口（標準R）ファイルに変な年度が入っています!\n");
              exit (2);
          }
          str_sojinko_c[nendo-STARTY][2] = buffer[2];
          for ( nenrei=0; nenrei<=120; nenrei++) {
              str_jinko_c[nendo-STARTY][2][nenrei] = buffer[nenrei+3];
          }
          previous_buffer0 = buffer[0] ;
      }

      /* ファイルクローズ */
      fclose(fp_jinkom);
      fclose(fp_jinkof);




          switch ( KYOREQBS ) {
              case 21: /* 29年・出生率中位推計・死亡率中位推計 */
                  sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-fm-dm.csv");
                  sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-fm-dm.csv");
                  break ;
              case 22: /* 29年・出生率中位推計・死亡率中位推計 */
                  sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-fm-dm.csv");
                  sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-fm-dm.csv");
                  break ;
              case 23: /* 29年・出生率中位推計・死亡率中位推計 */
                  sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-fm-dm.csv");
                  sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-fm-dm.csv");
                  break ;
          }


      if ((fp_jinkom = fopen(filename_m, "r")) == NULL) {
          fprintf(stderr, "男性人口推計（標準S）ファイルを開けません!\n");
          exit (2);
      }
      if ((fp_jinkof = fopen(filename_f, "r")) == NULL) {
          fprintf(stderr, "女性人口推計（標準S）ファイルを開けません!\n");
          exit (2);
      }

      /*  男性読み込み  */
      karayomi( fp_jinkom ) ;
      previous_buffer0 = -1000 ;
      while (( read_csv( buffer, fp_jinkom, &data_number ) != EOF ) && (buffer[0] > previous_buffer0 )) {
          nendo = (int)(buffer[0]) ;
          if (( nendo < STARTY ) || ( nendo > ENDY )) {
              fprintf(stderr, "男性人口（標準S）ファイルに変な年度が入っています!\n");
              exit (2);
          }
          sts_sojinko_c[nendo-STARTY][1] = buffer[2];
          for ( nenrei=0; nenrei<=120; nenrei++) {
              sts_jinko_c[nendo-STARTY][1][nenrei] = buffer[nenrei+3];
          }
          previous_buffer0 = buffer[0] ;
      }

      /*  女性読み込み  */
      karayomi( fp_jinkof ) ;
      previous_buffer0 = -1000 ;
      while (( read_csv( buffer, fp_jinkof, &data_number ) != EOF ) && (buffer[0] > previous_buffer0 )) {
          nendo = (int)(buffer[0]) ;
          if (( nendo < STARTY ) || ( nendo > ENDY )) {
              fprintf(stderr, "女性人口（標準S）ファイルに変な年度が入っています!\n");
              exit (2);
          }
          sts_sojinko_c[nendo-STARTY][2] = buffer[2];
          for ( nenrei=0; nenrei<=120; nenrei++) {
              sts_jinko_c[nendo-STARTY][2][nenrei] = buffer[nenrei+3];
          }
          previous_buffer0 = buffer[0] ;
      }

      /* ファイルクローズ */
      fclose(fp_jinkom);
      fclose(fp_jinkof);


  /* （３）ﾀ績人口 */
      	sprintf(filename_m, "/rev31/wakuc/data/sinj/popm-jisseki29.csv");
      	sprintf(filename_f, "/rev31/wakuc/data/sinj/popf-jisseki29.csv");

      	/* ファイルを開く */
      	if ((fp_jinkom = fopen(filename_m, "r")) == NULL) {
          fprintf(stderr, "ﾀ績男性人口ファイルを開けません!\n");
          exit (2);
      	}
      	if ((fp_jinkof = fopen(filename_f, "r")) == NULL) {
          fprintf(stderr, "ﾀ績女性人口ファイルを開けません!\n");
          exit (2);
      	}

      	/*  男性読み込み  */
      	karayomi( fp_jinkom ) ;
      	previous_buffer0 = -1000 ;
      	while (( read_csv( buffer, fp_jinkom, &data_number ) != EOF ) && (buffer[0] > previous_buffer0 )) {
        	  nendo = (int)(buffer[0]) ;
          	if (( nendo < STARTY ) || ( nendo > ENDY )) {
            	  fprintf(stderr, "男性人口ファイルに変な年度が入っています!\n");
              	exit (2);
          	}
          	sojinko_c[nendo-STARTY][1] = buffer[2];
          	for ( nenrei=0; nenrei<=120; nenrei++) {
              jinko_c[nendo-STARTY][1][nenrei] = buffer[nenrei+3];
              stk_jinko_c[nendo-STARTY][1][nenrei] = buffer[nenrei+3];
              sts_jinko_c[nendo-STARTY][1][nenrei] = buffer[nenrei+3];
          	}
       	   previous_buffer0 = buffer[0] ;
      	}

      	/*  女性読み込み  */
      	karayomi( fp_jinkof ) ;
      	previous_buffer0 = -1000 ;
      	while (( read_csv( buffer, fp_jinkof, &data_number ) != EOF ) && (buffer[0] > previous_buffer0 )) {
        	  nendo = (int)(buffer[0]) ;
          	if (( nendo < STARTY ) || ( nendo > ENDY )) {
            	  fprintf(stderr, "女性人口ファイルに変な年度が入っています!\n");
              	exit (2);
          	}
          	sojinko_c[nendo-STARTY][2] = buffer[2];
          	for ( nenrei=0; nenrei<=120; nenrei++) {
              jinko_c[nendo-STARTY][2][nenrei] = buffer[nenrei+3];
              stk_jinko_c[nendo-STARTY][2][nenrei] = buffer[nenrei+3];
              sts_jinko_c[nendo-STARTY][2][nenrei] = buffer[nenrei+3];
          	}
          	previous_buffer0 = buffer[0] ;
      	}
      
 

      /* ファイルクローズ */
      fclose(fp_jinkom);
      fclose(fp_jinkof);




       sprintf(filename, "/rev31/wakuc/data/sinj/wari-2015.csv");

      /*  ファイルを開く */
      if ((fp_jinkow = fopen(filename, "r")) == NULL) {
          fprintf(stderr, "人口割合ファイルを開けません!\n");
          exit (2);
      }

      /*  読み込み  */
      while (( read_csv( buffer, fp_jinkow, &data_number ) != EOF ) ) {
          nenrei = (int)(buffer[0]) ;
          if (( nenrei < 0 ) || ( nenrei > 120 )) {
              fprintf(stderr, "人口割合ファイルに変な年齢が入っています!\n");
              exit (2);
          }
          jinko_wari[1][nenrei] = buffer[1];
          jinko_wari[2][nenrei] = buffer[2];
      }

      /* ファイルクローズ */
      fclose(fp_jinkow);


  /* （５）女性有配偶者割合（推計） */

      switch ( YUHAIGX ) {
          case 4: /* H31検証 */
              sprintf(filename, "/rev31/wakuc/data/sinj/yuhaigr_suikei-30-1.csv");
              break ;    
      }
      /*  ファイルを開く */
      if ((fp_jinkoy = fopen(filename, "r")) == NULL) {
          fprintf(stderr, "女性有配偶割合（推計）ファイルを開けません!\n");
          exit (2);
      }

      /*  読み込み  */
      karayomi( fp_jinkoy ) ;
      karayomi( fp_jinkoy ) ;
      previous_buffer0 = -1000 ;
      while (( read_csv( buffer, fp_jinkoy, &data_number ) != EOF ) && (buffer[0] > previous_buffer0 )) {
          nendo = (int)(buffer[0]) ;
          if (( nendo < STARTY ) || ( nendo > ENDY )) {
              fprintf(stderr, "女性有配偶（推計）ファイルに変な年度が入っています!\n");
              exit (2);
          }
          sei = (int)(buffer[1]) ;
          if ( sei != 2 ) {
              fprintf(stderr, "女性有配偶（推計）ファイルに変な性が入っています!\n");
              exit (2);
          }
          for ( nenrei=15; nenrei<=100; nenrei++) {
              yuhaigr_c[nendo-STARTY][nenrei] = buffer[nenrei-12] / 100.0 ;
          }
          previous_buffer0 = buffer[0] ;
      }

      /* ファイルクローズ */
      fclose(fp_jinkoy);


  /* （６）女性有配偶者割合（ﾀ績） */

      	sprintf(filename, "/rev31/wakuc/data/sinj/yuhaigr_jisseki27.csv");

      /*  ファイルを開く */
      if ((fp_jinkoy = fopen(filename, "r")) == NULL) {
          fprintf(stderr, "女性有配偶割合（ﾀ績）ファイルを開けません!\n");
          exit (2);
      }

      /*  読み込み  */
      karayomi( fp_jinkoy ) ;
      karayomi( fp_jinkoy ) ;
      previous_buffer0 = -1000 ;
      while (( read_csv( buffer, fp_jinkoy, &data_number ) != EOF ) && (buffer[0] > previous_buffer0 )) {
          nendo = (int)(buffer[0]) ;
          if (( nendo < STARTY ) || ( nendo > ENDY )) {
              fprintf(stderr, "女性有配偶（ﾀ績）ファイルに変な年度が入っています!\n");
              exit (2);
          }
          sei = (int)(buffer[1]) ;
          if ( sei != 2 ) {
              fprintf(stderr, "女性有配偶（ﾀ績）ファイルに変な性が入っています!\n");
              exit (2);
          }
          for ( nenrei=15; nenrei<=100; nenrei++) {
              yuhaigr_c[nendo-STARTY][nenrei] = buffer[nenrei-12] / 100.0 ;
          }
          previous_buffer0 = buffer[0] ;
      }

      /* ファイルクローズ */
      fclose(fp_jinkoy);


  /* （７）共済推計用、ﾀ績の総人口（生産年齢人口）  */
      	sprintf(filename, "/rev31/wakuc/data/sinj/jissekiseisan29.csv") ;

      /*  ファイルを開く  */
      if ((fp_jinkoy = fopen(filename, "r")) == NULL) {
          fprintf(stderr, "ﾀ績総人口ファイルを開けません!\n");
          exit (2);
      }

      /*  読み込み  */
      karayomi( fp_jinkoy ) ;
      while ( read_csv( buffer, fp_jinkoy, &data_number ) != EOF ) {
          nendo = (int) (buffer[0]) ;
          seisanj_j_c[nendo-STARTY][0] = buffer[1] * 1000 ;
          seisanj_j_c[nendo-STARTY][1] = buffer[2] * 1000 ;
          seisanj_j_c[nendo-STARTY][2] = buffer[3] * 1000 ;
          seisanj_j_m[nendo-STARTY][0] = buffer[4] * 1000 ;
          seisanj_j_m[nendo-STARTY][1] = buffer[5] * 1000 ;
          seisanj_j_m[nendo-STARTY][2] = buffer[6] * 1000 ;

          sojinko_j_c[nendo-STARTY][0] = buffer[8] * 1000 ;
          sojinko_j_c[nendo-STARTY][1] = buffer[9] * 1000 ;
          sojinko_j_c[nendo-STARTY][2] = buffer[10] * 1000 ;
          sojinko_j_m[nendo-STARTY][0] = buffer[11] * 1000 ;
          sojinko_j_m[nendo-STARTY][1] = buffer[12] * 1000 ;
          sojinko_j_m[nendo-STARTY][2] = buffer[13] * 1000 ;
      }

      /*  ファイルクローズ  */
      fclose( fp_jinkoy ) ;




/* 労働力関係（別途、read_roud関数で対応） */

  /* （１）労働力率（ケース毎） */

      /*  TEMP 変数クリア  */
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            TEMP[nendo-STARTY][sei][nenrei] = 0.0 ;
          }
        }
      }
      /*  ファイル名セット〜ファイル読み込み〜ファイルクローズ  */
      switch ( ROUDR ) {
          case 1: /* 2018推計・労働参加進展ケース */
              sprintf(filename, "/rev31/wakuc/data/roud2019/roudou29-3-c.csv");
              break ;
          case 2: /* 2018推計・労働参加斬新ケース */
              sprintf(filename, "/rev31/wakuc/data/roud2019/roudou29-3-b.csv");
              break ;
          case 3: /* 2018推計・労働参加現状ケース */
              sprintf(filename, "/rev31/wakuc/data/roud2019/roudou29-3-a.csv");
              break ;
      }
      if ((fp_roudritu = fopen(filename, "r")) == NULL) {
         fprintf(stderr, "労働力率ファイル（ケース毎）を開けません!\n");
         exit (2);
      }
      read_roud( fp_roudritu, 1996, ROUDYR ); 
      fclose( fp_roudritu );
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            roudr_c[nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
          }
        }
      }
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            TEMP[nendo-STARTY][sei][nenrei] = 0.0 ;
          }
        }
      }
      /*  ファイル名セット〜ファイル読み込み〜ファイルクローズ  */
      switch ( ROUDR ) {
          case 1: 
          case 2:
		  case 3: /* 2018推計 */
              sprintf(filename, "/rev31/wakuc/data/roud2019/roudou29-3-a.csv");
              break ;
      }
      if ((fp_roudritu = fopen(filename, "r")) == NULL) {
         fprintf(stderr, "労働力率ファイル（ケースＡ）を開けません!\n");
         exit (2);
      }
      read_roud( fp_roudritu, 1996, ROUDYR ); 
      fclose( fp_roudritu );
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            roudr_a_c[nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
          }
        }
      }


  /* （２）就業者割合（ケース毎） */

      /*  TEMP 変数クリア  */
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            TEMP[nendo-STARTY][sei][nenrei] = 0.0 ;
          }
        }
      }
      switch ( ROUDR ) {
          case 1: /* 2018推計・労働参加進展ケース */
              sprintf(filename, "/rev31/wakuc/data/roud2019/syuwari29-3-c.csv");
              break ;
          case 2: /*2018推計・労働参加斬新ケース */
              sprintf(filename, "/rev31/wakuc/data/roud2019/syuwari29-3-b.csv");
              break ;
          case 3: /* 2018推計 労働参加現状ケース */
              sprintf(filename, "/rev31/wakuc/data/roud2019/syuwari29-3-a.csv");
              break ;
      }
      if ((fp_roudritu = fopen(filename, "r")) == NULL) {
         fprintf(stderr, "就業者割合ファイル（ケース毎）を開けません!\n");
         exit (2);
      }
      read_roud( fp_roudritu, 1996, ROUDYR ); 
      fclose( fp_roudritu );
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            syuwari_c[nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
          }
        }
      }
      
      /*  TEMP 変数クリア  */
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            TEMP[nendo-STARTY][sei][nenrei] = 0.0 ;
          }
        }
      }
      switch ( ROUDR ) {
          case 1: 
          case 2: /* 2018推計 */
          case 3: /* 2018推計 */
              sprintf(filename, "/rev31/wakuc/data/roud2019/syuwari29-3-a.csv");
              break ;
      }
      if ((fp_roudritu = fopen(filename, "r")) == NULL) {
         fprintf(stderr, "就業者割合ファイル（ケースＡ）を開けません!\n");
         exit (2);
      }
      read_roud( fp_roudritu, 1996, ROUDYR ); 
      fclose( fp_roudritu );
      /*  TEMP 変数から移し替え  */
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            syuwari_a_c[nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
          }
        }
      }


  /* （３）就業率（ケース毎） */

      /*  TEMP 変数クリア  */
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            TEMP[nendo-STARTY][sei][nenrei] = 0.0 ;
          }
        }
      }
      switch ( ROUDR ) {
          case 1: /* 2018推計・労働参加進展ケース */
              sprintf(filename, "/rev31/wakuc/data/roud2019/syugyor29-3-c.csv");
              break ;
          case 2: /* 2018推計・労働参加斬進ケース */
              sprintf(filename, "/rev31/wakuc/data/roud2019/syugyor29-3-b.csv");
              break ;
          case 3: /* 2018推計・労働参加現状ケース */
              sprintf(filename, "/rev31/wakuc/data/roud2019/syugyor29-3-a.csv");
              break ;
      }
      if ((fp_roudritu = fopen(filename, "r")) == NULL) {
         fprintf(stderr, "就業率ファイル（ケース毎）を開けません!\n");
         exit (2);
      }
      read_roud( fp_roudritu, 1996, ROUDYR );
      fclose( fp_roudritu );
      /*  TEMP 変数から移し替え  */
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            syugyor_c[nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
          }
        }
      }
      
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            TEMP[nendo-STARTY][sei][nenrei] = 0.0 ;
          }
        }
      }
      /*  ファイル名セット〜ファイル読み込み〜ファイルクローズ  */
      switch ( ROUDR ) {
          case 1: 
          case 2: 
          case 3: /* 2018推計 */
              sprintf(filename, "/rev31/wakuc/data/roud2019/syugyor29-3-a.csv");
              break ;
      }
      if ((fp_roudritu = fopen(filename, "r")) == NULL) {
         fprintf(stderr, "就業率ファイル（ケースＡ）を開けません!\n");
         exit (2);
      }
      read_roud( fp_roudritu, 1996, ROUDYR );
      fclose( fp_roudritu );
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            syugyor_a_c[nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
          }
        }
      }


  /* （４）年度末労働力率（ﾀ績） */

      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            TEMP[nendo-STARTY][sei][nenrei] = 0.0 ;
          }
        }
      }
      if( ROUDR <= 3 ){
      	sprintf(filename, "/rev31/wakuc/data/roud2019/roudou29-mj.csv");
      }
      if ((fp_roudritu = fopen(filename, "r")) == NULL) {
      	  fprintf(stderr, "年度末労働力率ファイルを開けません!\n");
        	exit (2);
      }
      read_roud( fp_roudritu, 1999, ROUDYR ); 
      fclose( fp_roudritu );
      	/*  TEMP 変数から移し替え  */
      	for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        	for ( sei=1; sei<=4; sei++ ) {
          		for ( nenrei=15; nenrei<=100; nenrei++ ) {
            		roudr_m[nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
            		roudr_a_m[nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
          		}
        	}
      	}

  /* （５）年度末就業者割合（ﾀ績） */

      /*  TEMP 変数クリア  */
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            TEMP[nendo-STARTY][sei][nenrei] = 0.0 ;
          }
        }
      }
      /*  ファイル名セット〜ファイル読み込み〜ファイルクローズ  */
      if( ROUDR <= 3 ){
      	sprintf(filename, "/rev31/wakuc/data/roud2019/syuwari29-mj.csv");
      }
      
      if ((fp_roudritu = fopen(filename, "r")) == NULL) {
         fprintf(stderr, "年度末労働力率ファイルを開けません!\n");
         exit (2);
      }
      read_roud( fp_roudritu, 1999, ROUDYR ); 
      fclose( fp_roudritu );
      /*  TEMP 変数から移し替え  */
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            syuwari_m[nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
            syuwari_a_m[nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
          }
        }
      }

  /* （６）年度末就業率（ﾀ績） */

      /*  TEMP 変数クリア  */
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            TEMP[nendo-STARTY][sei][nenrei] = 0.0 ;
          }
        }
      }
      /*  ファイル名セット〜ファイル読み込み〜ファイルクローズ  */
      if( ROUDR <= 3 ){
      	sprintf(filename, "/rev31/wakuc/data/roud2019/syugyor29-mj.csv");
      }
      
      if ((fp_roudritu = fopen(filename, "r")) == NULL) {
         fprintf(stderr, "年度末労働力率ファイルを開けません!\n");
         exit (2);
      }
      read_roud( fp_roudritu, 1999, ROUDYR ); 
      fclose( fp_roudritu );
      /*  TEMP 変数から移し替え  */
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            syugyor_m[nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
            syugyor_a_m[nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
          }
        }
      }


  /* （７）雇用ﾒ割合（ﾀ績のみ） */

      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            TEMP[nendo-STARTY][sei][nenrei] = 0.0 ;
          }
        }
      }

      /*  ファイル名セット〜ファイル読み込み〜ファイルクローズ  */
      if( ROUDR <= 3 ){
      	sprintf(filename, "/rev31/wakuc/data/roud2019/koyour29.csv");
      }


      if ((fp_roudritu = fopen(filename, "r")) == NULL) {
         fprintf(stderr, "雇用ﾒ割合ファイル（ﾀ績）を開けません!\n");
         exit (2);
      }
      read_roud( fp_roudritu, 1996, ROUDYR );
      fclose( fp_roudritu );
      /*  TEMP 変数から移し替え  */
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            koyour_c[nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
            koyour_a_c[nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
          }
        }
      }

  
      
 /* （８）年齢別正規雇用ﾒ割合（ﾀ績のみ） */

      /*  TEMP 変数クリア  */
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            TEMP[nendo-STARTY][sei][nenrei] = 0.0 ;
          }
        }
      }

      /*  ファイル名セット〜ファイル読み込み〜ファイルクローズ  */
      if( ROUDR <= 3 ){
        sprintf(filename, "/rev31/wakuc/data/roud2019/seikir29.csv");
      }

      if ((fp_roudritu = fopen(filename, "r")) == NULL) {
         fprintf(stderr, "年齢別正規雇用ﾒ割合ファイル（ﾀ績）を開けません!\n");
         exit (2);
      }
      read_roud( fp_roudritu, 1996, ROUDYR );
      fclose( fp_roudritu );
      /*  TEMP 変数から移し替え  */
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            seikir_c[nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
            hiseikir_c[nendo-STARTY][sei][nenrei] = 1.0 - TEMP[nendo-STARTY][sei][nenrei] ;
          }
        }
      }
      

      /*  TEMP 変数クリア  */
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            TEMP[nendo-STARTY][sei][nenrei] = 0.0 ;
          }
        }
      }

      /*  ファイル名セット〜ファイル読み込み〜ファイルクローズ  */
      if( ROUDR <= 3 ){
        sprintf(filename, "/rev31/wakuc/data/roud2019/hiseikihurur29.csv");
      }

      if ((fp_roudritu = fopen(filename, "r")) == NULL) {
         fprintf(stderr, "年齢別非正規フル雇用ﾒ割合ファイル（ﾀ績）を開けません!\n");
         exit (2);
      }
      read_roud( fp_roudritu, 1996, ROUDYR );
      fclose( fp_roudritu );
      /*  TEMP 変数から移し替え  */
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            hiseikihurur_c[0][nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
            hiseikihurur_c[1][nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
          }
        }
      }
      
      /*  TEMP 変数クリア  */
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            TEMP[nendo-STARTY][sei][nenrei] = 0.0 ;
          }
        }
      }

      /*  ファイル名セット〜ファイル読み込み〜ファイルクローズ  */
      if( ROUDR <= 3 ){
        sprintf(filename, "/rev31/wakuc/data/roud2019/hiseikitanr29.csv");
      }

      if ((fp_roudritu = fopen(filename, "r")) == NULL) {
         fprintf(stderr, "年齢別非正規短時間雇用ﾒ割合ファイル（ﾀ績）を開けません!\n");
         exit (2);
      }
      read_roud( fp_roudritu, 1996, ROUDYR );
      fclose( fp_roudritu );
      /*  TEMP 変数から移し替え  */
      for ( nendo=1996; nendo<=ROUDYR; nendo++ ) {
        for ( sei=1; sei<=4; sei++ ) {
          for ( nenrei=15; nenrei<=100; nenrei++ ) {
            hiseikitanr_c[0][nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
            hiseikitanr_c[1][nendo-STARTY][sei][nenrei] = TEMP[nendo-STARTY][sei][nenrei] ;
          }
        }
      }


  /* （９）諸設定値 */
      if( ROUDR <= 3 ){
            sprintf(filename, "/rev31/wakuc/data/roud2019/syosettei29-12-1.csv");
	  }
      
      if ((fp_roudritu = fopen(filename, "r")) == NULL) {
          fprintf(stderr, "諸設定値ファイルを開けません!\n");
          exit (2);
      }

      /*  １行カラ読み  */
          karayomi( fp_roudritu );

      /*  以下３回繰り返し */
      for ( ii=1; ii<=3; ii++ ) {
          karayomi( fp_roudritu );
          karayomi( fp_roudritu );
          for ( jj=1996; jj<=ROUDYR; jj++ ) {
              read_csv( buffer, fp_roudritu, &data_number );
              nendo = buffer[0] ;
              kk = buffer[1] ;
              if ( ( kk == 1 ) && ( ( ROUDR == 3 ) || ( ROUDR == 5 ) ) ) {  
                  hiseikitanr_all_c[2][nendo-STARTY] = buffer[2] ; 
                  heikinh_c[1][nendo-STARTY] = buffer[3] ;    
                  heikinh_c[2][nendo-STARTY] = buffer[4] ;    
                  heikinh_c[3][nendo-STARTY] = buffer[5] ;    
                  heikinh_c[4][nendo-STARTY] = buffer[6] ;    
                  heikinh_c[5][nendo-STARTY] = buffer[7] ;    
                  heikinh_c[6][nendo-STARTY] = buffer[8] ;    
                  heikinh_c[7][nendo-STARTY] = buffer[9] ;    
                  heikinh_c[8][nendo-STARTY] = buffer[10] ;   
                  heikinh_c[9][nendo-STARTY] = buffer[11] ;   
                  hiseikitanr_all_c[3][nendo-STARTY] = buffer[12] + buffer[13] ; 
                  hiseikitanr_all_c[4][nendo-STARTY] = buffer[14] ; 
                  hiseikitanr_all_c[5][nendo-STARTY] = buffer[15] ; 
                  hiseikitanr_all_c[6][nendo-STARTY] = buffer[16]  ;
                  kounenteki_c[1][nendo-STARTY] = buffer[17] ; 
                  kounenteki_c[2][nendo-STARTY] = buffer[18] ; 
                  kounenteki_c[3][nendo-STARTY] = buffer[19] ; 
                  kounenteki_c[4][nendo-STARTY] = buffer[20] ; 
                  kounenteki_c[5][nendo-STARTY] = buffer[21] ; 
                  kounenteki_c[6][nendo-STARTY] = buffer[22] ; 
              }
              else if ( ( kk == 2 ) && (  ROUDR == 2 ) )  {  
                  hiseikitanr_all_c[2][nendo-STARTY] = buffer[2] ; 
                  heikinh_c[1][nendo-STARTY] = buffer[3] ;   
                  heikinh_c[2][nendo-STARTY] = buffer[4] ;   
                  heikinh_c[3][nendo-STARTY] = buffer[5] ;   
                  heikinh_c[4][nendo-STARTY] = buffer[6] ;   
                  heikinh_c[5][nendo-STARTY] = buffer[7] ;   
                  heikinh_c[6][nendo-STARTY] = buffer[8] ;   
                  heikinh_c[7][nendo-STARTY] = buffer[9] ;   
                  heikinh_c[8][nendo-STARTY] = buffer[10] ;  
                  heikinh_c[9][nendo-STARTY] = buffer[11] ;  
                  hiseikitanr_all_c[3][nendo-STARTY] = buffer[12] + buffer[13] ; 
                  hiseikitanr_all_c[4][nendo-STARTY] = buffer[14] ; 
                  hiseikitanr_all_c[5][nendo-STARTY] = buffer[15] ; 
                  hiseikitanr_all_c[6][nendo-STARTY] = buffer[16]  ;
                  kounenteki_c[1][nendo-STARTY] = buffer[17] ; 
                  kounenteki_c[2][nendo-STARTY] = buffer[18] ; 
                  kounenteki_c[3][nendo-STARTY] = buffer[19] ; 
                  kounenteki_c[4][nendo-STARTY] = buffer[20] ; 
                  kounenteki_c[5][nendo-STARTY] = buffer[21] ; 
                  kounenteki_c[6][nendo-STARTY] = buffer[22] ; 
              }
              else if ( ( kk == 3 ) && ( ( ROUDR == 1 ) || ( ROUDR == 4 ) ) )  {  
                  hiseikitanr_all_c[2][nendo-STARTY] = buffer[2] ; 
                  heikinh_c[1][nendo-STARTY] = buffer[3] ;    
                  heikinh_c[2][nendo-STARTY] = buffer[4] ;    
                  heikinh_c[3][nendo-STARTY] = buffer[5] ;    
                  heikinh_c[4][nendo-STARTY] = buffer[6] ;    
                  heikinh_c[5][nendo-STARTY] = buffer[7] ;    
                  heikinh_c[6][nendo-STARTY] = buffer[8] ;    
                  heikinh_c[7][nendo-STARTY] = buffer[9] ;    
                  heikinh_c[8][nendo-STARTY] = buffer[10] ;   
                  heikinh_c[9][nendo-STARTY] = buffer[11] ;   
                  hiseikitanr_all_c[3][nendo-STARTY] = buffer[12] + buffer[13] ; 
                  hiseikitanr_all_c[4][nendo-STARTY] = buffer[14] ; 
                  hiseikitanr_all_c[5][nendo-STARTY] = buffer[15] ; 
                  hiseikitanr_all_c[6][nendo-STARTY] = buffer[16]  ;
                  kounenteki_c[1][nendo-STARTY] = buffer[17] ; 
                  kounenteki_c[2][nendo-STARTY] = buffer[18] ; 
                  kounenteki_c[3][nendo-STARTY] = buffer[19] ; 
                  kounenteki_c[4][nendo-STARTY] = buffer[20] ; 
                  kounenteki_c[5][nendo-STARTY] = buffer[21] ;
                  kounenteki_c[6][nendo-STARTY] = buffer[22] ; 
              }
          }
      }

      /*  ファイルクローズ  */
      fclose( fp_roudritu ) ;



/*  被保険者数過去実績の読み込み（別途、read_map関数で対応）  */

    /*  平成８年度  */
    if ( KIJUN >= 1996 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H08map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成８年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 1996 );
         fclose( fp_map );
    }

    /*  平成９年度  */
    if ( KIJUN >= 1997 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H09map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成９年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 1997 );
         fclose( fp_map );
    }

    /*  平成10年度  */
    if ( KIJUN >= 1998 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H10map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成10年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 1998 );
         fclose( fp_map );
    }

    /*  平成11年度  */
    if ( KIJUN >= 1999 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H11map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成11年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 1999 );
         fclose( fp_map );
    }

    /*  平成12年度  */
    if ( KIJUN >= 2000 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H12map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成12年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2000 );
         fclose( fp_map );
    }

    /*  平成13年度  */
    if ( KIJUN >= 2001 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H13map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成13年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2001 );
         fclose( fp_map );
    }

    /*  平成14年度  */
    if ( KIJUN >= 2002 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H14map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成14年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2002 );
         fclose( fp_map );
    }

    /*  平成15年度  */
    if ( KIJUN >= 2003 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H15map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成15年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2003 );
         fclose( fp_map );
    }

    /*  平成16年度  */
    if ( KIJUN >= 2004 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H16map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成16年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2004 );
         fclose( fp_map );
    }

    /*  平成17年度  */
    if ( KIJUN >= 2005 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H17map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成17年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2005 );
         fclose( fp_map );
    }

    /*  平成18年度  */
    if ( KIJUN >= 2006 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H18map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成18年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2006 );
         fclose( fp_map );
    }

    /*  平成19年度  */
    if ( KIJUN >= 2007 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H19map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成19年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2007 );
         fclose( fp_map );
    }

    /*  平成20年度  */
    if ( KIJUN >= 2008 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H20map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成20年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2008 );
         fclose( fp_map );
    }

    /*  平成21年度  */
    if ( KIJUN >= 2009 )  {
         sprintf(filename, "/rev31/wakuc/data/map/H21map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成21年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2009 );
         fclose( fp_map );
    }

    /*  平成22年度  */
    if ( KIJUN >= 2010 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H22map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成22年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2010 );
         fclose( fp_map );
    }

    /*  平成23年度  */
    if ( KIJUN >= 2011 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H23map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成23年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2011 );
         fclose( fp_map );
    }

    /*  平成24年度  */
    if ( KIJUN >= 2012 ) {

             sprintf(filename, "/rev31/wakuc/data/map/H24map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成24年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2012 );
         fclose( fp_map );
    }

    /*  平成25年度  */
    if ( KIJUN >= 2013 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H25map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成25年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2013 );
         fclose( fp_map );
    }

    /*  平成26年度  */
    if ( KIJUN >= 2014 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H26map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成26年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2014 );
         fclose( fp_map );
    }
    /*  平成27年度  */
    if ( KIJUN >= 2015 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H27map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成27年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2015 );
         fclose( fp_map );
    }
    /*  平成28年度  */
    if ( KIJUN >= 2016 ) {

         sprintf(filename, "/rev31/wakuc/data/map/H28map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成28年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2016 );
         fclose( fp_map );
    }
    /*  平成29年度  */
    if ( KIJUN >= 2017 ) {
         sprintf(filename, "/rev31/wakuc/data/map/H29map.csv");
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成29年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2017 );
         fclose( fp_map );
    }
    /*  平成30年度  */
    if ( KIJUNMAP >= 2018 ) {
    	if ( MODE >= 4 ) { 
             sprintf(filename, "/rev31/wakuc/data/map/H30map-a-op.csv");
         }
         else {
         sprintf(filename, "/rev31/wakuc/data/map/H30map-a.csv");
         }
         if ((fp_map = fopen(filename, "r")) == NULL) {
             fprintf(stderr, "平成30年度被保険者数を開けません!\n");
             exit (2);
         }
         read_map( fp_map, 2018 );
         fclose( fp_map );
    }

/*  １号女性の有配偶率  */

      /*  ファイル名セット〜ファイルを開く  */
      if( ROUDR <= 3 ){
      	sprintf(filename, "/rev31/wakuc/data/prev/ichiyuhaigr29.csv");
      }
      	
      if ((fp_roudritu = fopen(filename, "r")) == NULL) {
          fprintf(stderr, "１号有配偶率ファイルを開けません!\n");
          exit (2);
      }

      /*  １行カラ読み  */
          karayomi( fp_roudritu );

      /*  データ読み込み */
        for ( ii=20; ii<=69; ii++) {
            read_csv( buffer, fp_roudritu, &data_number );
            nenrei = buffer[0];
            ichiyuhaigr[nenrei] = buffer[5] / 100.0 ;
        }

      /*  ファイルクローズ */
        fclose( fp_roudritu );


/*  45年モデルのときの１号、３号上限年齢  */
	 if( MODE >= 4 ) {
        /*  ファイル名セット〜ファイルを開く  */
        sprintf(filename, "/rev31/wakuc/data/prev/ichisanxend29-1.csv");
        if ((fp_roudritu = fopen(filename, "r")) == NULL) {
            fprintf(stderr, "１号、３号上限年齢ファイルを開けません!\n");
            exit (2);
        }

        /*  １行カラ読み  */
            karayomi( fp_roudritu );

        /*  データ読み込み */
          for ( ii=2000; ii<=2050; ii++) {
              read_csv( buffer, fp_roudritu, &data_number );
              nendo = buffer[0];
              xend[8][nendo-STARTY] = buffer[1] ;
          }

        /*  ファイルクローズ */
          fclose( fp_roudritu );

        /*  2000年度以前の延長  */
          for ( nendo=STARTY; nendo<=1999; nendo++ ) {
              xend[8][nendo-STARTY] = xend[8][2000-STARTY] ;
          }

        /*  2051年度以降の延長  */
          for ( nendo=2051; nendo<=KE+1; nendo++ ) {
              xend[8][nendo-STARTY] = xend[8][nendo-1-STARTY] ;
          }
    }
    else { /* 45年モデルでないとき */
        for ( nendo=KS; nendo<=KE+1; nendo++ ) {
            xend[8][nendo-STARTY] = 60 ; 
        }
    }


/*  修正ここまで  */




/*  readdata関数の終わり位置  */

}



/*  労働力率ファイル等を読み込む作業  */
void read_roud( FILE *fp, int ynendo1, int ynendo2 ) {


    /*  変数宣言 */
    int  ii;
    int  jj;
    double  buffer[DATA_MAX] ;
    int     data_number      ;
    /*  １行カラ読み  */
        karayomi( fp );
    /*  性別に４回繰り返し  */
    for ( jj=1; jj<=4; jj++ ) {
        /*  ２回カラ読みの後で読む  */
        karayomi( fp );
        karayomi( fp );
        for ( ii=ynendo1; ii<=ynendo2; ii++ ) {
            read_csv( buffer, fp, &data_number );
            nendo = buffer[0] ;
            sei = buffer[1] ;
            for ( nenrei=15; nenrei<=100; nenrei++ ) {
                TEMP[nendo-STARTY][sei][nenrei] = buffer[nenrei-12] / 100.0 ;
            }
        }
    }


/*  read_roud関数の終わり位置  */

}



/*  被保険者数過去実績を読み込む作業（各年度共通）  */
void read_map(FILE *fp, int nendo) {

    /*  変数宣言 */
    int  ii;
    double  buffer[DATA_MAX] ;
    int     data_number      ;
    /*  ３行カラ読み  */
    for (ii=1; ii<=3; ii++) {
        karayomi( fp );
    }
    /*  男子読み  */
    for (ii=15; ii<=89; ii++) {
        read_csv( buffer, fp, &data_number );
        nenrei = buffer[0];
        qkou12syu[nendo-STARTY][1][nenrei] = buffer[1];    
        kou3syu[nendo-STARTY][1][nenrei] = buffer[2];      
        kyosai[1][nendo-STARTY][1][nenrei] = buffer[3];    
        kyosai[4][nendo-STARTY][1][nenrei] = buffer[4];   
        kyosai[6][nendo-STARTY][1][nenrei] = buffer[5];    
        kyosai[5][nendo-STARTY][1][nenrei] = buffer[6];    
        kyosai[2][nendo-STARTY][1][nenrei] = buffer[7];    
        kyosai[3][nendo-STARTY][1][nenrei] = buffer[8];    
        kyosai[7][nendo-STARTY][1][nenrei] = buffer[9];   
        partnin[nendo-STARTY][1][nenrei][0][0] = buffer[10]; 
        qkou12syu3[nendo-STARTY][1][nenrei] = buffer[11];    
        kou3syu3[nendo-STARTY][1][nenrei] = buffer[12];    
        kyosai3[1][nendo-STARTY][1][nenrei] = buffer[13];  
        kyosai3[4][nendo-STARTY][1][nenrei] = buffer[14];  
        kyosai3[6][nendo-STARTY][1][nenrei] = buffer[15];  
        kyosai3[5][nendo-STARTY][1][nenrei] = buffer[16]; 
        kyosai3[2][nendo-STARTY][1][nenrei] = buffer[17];  
        kyosai3[3][nendo-STARTY][1][nenrei] = buffer[18];  
        kyosai3[7][nendo-STARTY][1][nenrei] = buffer[19]; 
        ichigouip[nendo-STARTY][1][nenrei] = buffer[20];    
        ichigouni[nendo-STARTY][1][nenrei] = buffer[21];   
    }
    /*  男子の後２行カラ読み  */
    for (ii=1; ii<=2; ii++) {
        karayomi( fp );
    }
    /*  女子読み  */
    for (ii=15; ii<=89; ii++) {
        read_csv( buffer, fp, &data_number );
        nenrei = buffer[0];
        qkou12syu[nendo-STARTY][2][nenrei] = buffer[1];    
        kou3syu[nendo-STARTY][2][nenrei] = buffer[2];    
        kyosai[1][nendo-STARTY][2][nenrei] = buffer[3];  
        kyosai[4][nendo-STARTY][2][nenrei] = buffer[4];   
        kyosai[6][nendo-STARTY][2][nenrei] = buffer[5];   
        kyosai[5][nendo-STARTY][2][nenrei] = buffer[6];  
        kyosai[2][nendo-STARTY][2][nenrei] = buffer[7];    
        kyosai[3][nendo-STARTY][2][nenrei] = buffer[8];   
        kyosai[7][nendo-STARTY][2][nenrei] = buffer[9];  
        partnin[nendo-STARTY][2][nenrei][0][0] = buffer[10]; 
        qkou12syu3[nendo-STARTY][2][nenrei] = buffer[11];   
        kou3syu3[nendo-STARTY][2][nenrei] = buffer[12];    
        kyosai3[1][nendo-STARTY][2][nenrei] = buffer[13];  
        kyosai3[4][nendo-STARTY][2][nenrei] = buffer[14];  
        kyosai3[6][nendo-STARTY][2][nenrei] = buffer[15];  
        kyosai3[5][nendo-STARTY][2][nenrei] = buffer[16]; 
        kyosai3[2][nendo-STARTY][2][nenrei] = buffer[17]; 
        kyosai3[3][nendo-STARTY][2][nenrei] = buffer[18];  
        kyosai3[7][nendo-STARTY][2][nenrei] = buffer[19];  
        ichigouip[nendo-STARTY][2][nenrei] = buffer[20];    
        ichigouni[nendo-STARTY][2][nenrei] = buffer[21];    
    }
    /*  男女計を計算しておく  */
    for ( nenrei=15; nenrei<=89; nenrei++ ) {
        qkou12syu[nendo-STARTY][0][nenrei]
          = qkou12syu[nendo-STARTY][1][nenrei] + qkou12syu[nendo-STARTY][2][nenrei] ;
        kou3syu[nendo-STARTY][0][nenrei]
          = kou3syu[nendo-STARTY][1][nenrei] + kou3syu[nendo-STARTY][2][nenrei] ;
        qkou12syu3[nendo-STARTY][0][nenrei]
          = qkou12syu3[nendo-STARTY][1][nenrei] + qkou12syu3[nendo-STARTY][2][nenrei] ;
        kou3syu3[nendo-STARTY][0][nenrei]
          = kou3syu3[nendo-STARTY][1][nenrei] + kou3syu3[nendo-STARTY][2][nenrei] ;
        for ( seido=1; seido<=7; seido++ ) {
          kyosai[seido][nendo-STARTY][0][nenrei]
            = kyosai[seido][nendo-STARTY][1][nenrei] + kyosai[seido][nendo-STARTY][2][nenrei] ;
          kyosai3[seido][nendo-STARTY][0][nenrei]
            = kyosai3[seido][nendo-STARTY][1][nenrei] + kyosai3[seido][nendo-STARTY][2][nenrei] ;
        }
        ichigouip[nendo-STARTY][0][nenrei]
          = ichigouip[nendo-STARTY][1][nenrei] + ichigouip[nendo-STARTY][2][nenrei] ;
        ichigouni[nendo-STARTY][0][nenrei]
          = ichigouni[nendo-STARTY][1][nenrei] + ichigouni[nendo-STARTY][2][nenrei] ;
        partnin[nendo-STARTY][0][nenrei][0][0]
          = partnin[nendo-STARTY][1][nenrei][0][0] + partnin[nendo-STARTY][2][nenrei][0][0];
    }

}

