/* Processed by ecpg (4.2.1) */
/* These include files are added by the preprocessor */
#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* End of automatic include section */

#line 1 "schdytbl.pgc"
#include "wsubform.h"	//サブフォーム専用ヘッダファイルをインクルードする。

#define Textbox	1	//操作関数用(サンプルを参照)
#define Grid	2	//操作関数用(サンプルを参照)
#define Panel	3	//操作関数用(サンプルを参照)

#define Tret	199	//textboxでファンクションキーが返す番号
#define Gret	299	//gridでファンクションキーが返す番号
#define Pret	399	//paneltextでファンクションキーが返す番号

extern int wmode;	//挿入／上書のモード切替用
extern char gridtitles[MAX_POS][MAX_LEN];	//wsubformが利用するgridのタイトル。

extern TextBox	 *begin;	//textboxで使用する連鎖ポインタの開始位置
extern TextBox	 *tp;	//textboxで使用する連鎖ポインタ

typedef struct stat Dir;	//ファイル操作用
static Dir dirptr;
static Dir  *fileptr = &dirptr;

char tmp[MAX_STR];
static int sqlcode = 0;	//PostgreSQLの返すコード
static int DBcount = 0;	//wsubformで利用するDBの現在の最大行数

int DBConnect(void)
{
	// DB接続用変数宣言
	/* exec sql begin declare section */
		 
		 
		 
	
#line 29 "schdytbl.pgc"
 char  dbname [ 12 ]    ;
 
#line 30 "schdytbl.pgc"
 char  user [ 12 ]    ;
 
#line 31 "schdytbl.pgc"
 char  passwd [ 12 ]    ;
/* exec sql end declare section */
#line 32 "schdytbl.pgc"


	strcpy(dbname,"apsch");
	strcpy(user,"cms");
	strcpy(passwd,"cms");

#ifdef DEBUG
	// ECPGデバッグ文出力
	ECPGdebug (0, stderr);
#endif

	// 接続
	memset (sqlca.sqlstate, '0', 5);
	{ ECPGconnect(__LINE__, 0, dbname , user , passwd , "dbConnection", 0); }
#line 45 "schdytbl.pgc"

	if (memcmp (sqlca.sqlstate, "00", 2) != 0)
	{
		sprintf(tmp,"CONNECT エラー。終了します。:%d - %s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
		popmsg((COLS/2)-24,(LINES/2)-4,tmp);
		exit (EXIT_FAILURE);
	}
}

int Fetch_schdytbl(int no)
{
	static char DBbuff[MAX_STR];
	int i = 0;

	DBConnect();

	memset (sqlca.sqlstate, '0', 5);

	/* exec sql begin declare section */
		 
			  	//TEXT
			  	//TEXT
			  	//TEXT
			  	//TEXT
						//NUMERIC
			  	//TEXT
			  	//TEXT
						//NUMERIC
						//NUMERIC
						//NUMERIC
						//NUMERIC
			  	//DATE
			  	//DATE
			  	//TEXT
	
#line 64 "schdytbl.pgc"
 int  rec_count    ;
 
#line 65 "schdytbl.pgc"
 char  schedule_name [ 16 + 1 ]    ;
 
#line 66 "schdytbl.pgc"
 char  schedule_day [ 8 + 1 ]    ;
 
#line 67 "schdytbl.pgc"
 char  schedule_time [ 4 + 1 ]    ;
 
#line 68 "schdytbl.pgc"
 char  cmd_line [ 256 + 1 ]    ;
 
#line 69 "schdytbl.pgc"
 int  status    ;
 
#line 70 "schdytbl.pgc"
 char  start_time [ 14 + 1 ]    ;
 
#line 71 "schdytbl.pgc"
 char  end_time [ 14 + 1 ]    ;
 
#line 72 "schdytbl.pgc"
 int  error_code    ;
 
#line 73 "schdytbl.pgc"
 int  max_retry_count    ;
 
#line 74 "schdytbl.pgc"
 int  retry_interval    ;
 
#line 75 "schdytbl.pgc"
 int  current_retry_count    ;
 
#line 76 "schdytbl.pgc"
 char  entry_date [ 22 + 1 ]    ;
 
#line 77 "schdytbl.pgc"
 char  update_date [ 22 + 1 ]    ;
 
#line 78 "schdytbl.pgc"
 char  comment1 [ 40 + 1 ]    ;
/* exec sql end declare section */
#line 79 "schdytbl.pgc"


	sqlcode = 0;
	DBcount = 0;

	rec_count = 0;

	// DBの行数を取得
	{ ECPGdo(__LINE__, 0, 1, NULL, "select  count (*)  from schdytbl   ", ECPGt_EOIT, 
	ECPGt_int,&(rec_count),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
#line 91 "schdytbl.pgc"

	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 92 "schdytbl.pgc"


	// SELECTエラー 
	if(memcmp (sqlca.sqlstate, "00", 2) != 0)
	{
		sprintf(tmp,"データベースSELECT COUNTエラー:%d - %s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
		popmsg((COLS/2)-24,(LINES/2)-4,tmp);
		return(-1) ;
	}

	DBcount = rec_count;

	/* declare schdytbl_CURSOR  cursor  for select  coalesce( schedule_name , ' ' , '0' ) , coalesce( schedule_day , ' ' , '0' ) , coalesce( schedule_time , ' ' , '0' ) , coalesce( cmd_line , ' ' , '0' ) , status , coalesce( start_time , ' ' , '0' ) , coalesce( end_time , ' ' , '0' ) , error_code , max_retry_count , retry_interval , current_retry_count , TO_TIMESTAMP ( entry_date , 'YYYY/MM/DD HH24:MI:SS' ) , TO_TIMESTAMP ( update_date , 'YYYY/MM/DD HH24:MI:SS' ) , coalesce( comment1 , ' ' , '0' )  from schdytbl    order by schedule_name */
#line 121 "schdytbl.pgc"

	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 122 "schdytbl.pgc"


	// カーソルオープン
	{ ECPGdo(__LINE__, 0, 1, NULL, "declare schdytbl_CURSOR  cursor  for select  coalesce( schedule_name , ' ' , '0' ) , coalesce( schedule_day , ' ' , '0' ) , coalesce( schedule_time , ' ' , '0' ) , coalesce( cmd_line , ' ' , '0' ) , status , coalesce( start_time , ' ' , '0' ) , coalesce( end_time , ' ' , '0' ) , error_code , max_retry_count , retry_interval , current_retry_count , TO_TIMESTAMP ( entry_date , 'YYYY/MM/DD HH24:MI:SS' ) , TO_TIMESTAMP ( update_date , 'YYYY/MM/DD HH24:MI:SS' ) , coalesce( comment1 , ' ' , '0' )  from schdytbl    order by schedule_name", ECPGt_EOIT, ECPGt_EORT);}
#line 125 "schdytbl.pgc"


	// SELECT OPENエラー 
	if (memcmp (sqlca.sqlstate, "00", 2) != 0)
	{
		sprintf(tmp,"データベースSELECT OPENエラー:%d - %s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
		popmsg((COLS/2)-24,(LINES/2)-4,tmp);
		return(-1);
	}

	for(i=0;i<DBcount;i++)
	{
		{ ECPGdo(__LINE__, 0, 1, NULL, "fetch schdytbl_CURSOR", ECPGt_EOIT, 
	ECPGt_char,(schedule_name),(long)16 + 1,(long)1,(16 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(schedule_day),(long)8 + 1,(long)1,(8 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(schedule_time),(long)4 + 1,(long)1,(4 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(cmd_line),(long)256 + 1,(long)1,(256 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(status),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(start_time),(long)14 + 1,(long)1,(14 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(end_time),(long)14 + 1,(long)1,(14 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(error_code),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(max_retry_count),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(retry_interval),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(current_retry_count),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(entry_date),(long)22 + 1,(long)1,(22 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(update_date),(long)22 + 1,(long)1,(22 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(comment1),(long)40 + 1,(long)1,(40 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
#line 151 "schdytbl.pgc"


		if (memcmp (sqlca.sqlstate, "00", 2) != 0)
		{
			sprintf(tmp,"データベースFETCHエラー:%d - %s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
			popmsg((COLS/2)-24,(LINES/2)-4,tmp);
			return(-1);
		}
	// テーブル項目をsplitbDBbuff[][]にセットする
		sf_assgetDB(no,i,0,schedule_name,16 + 1);
		sf_assgetDB(no,i,1,schedule_day,8 + 1);
		sf_assgetDB(no,i,2,schedule_time,4 + 1);
		sf_assgetDB(no,i,3,cmd_line,256 + 1);
		sf_to_text(status,DBbuff);	//NUMERIC型(int)を文字に変換する。
		sf_assgetDB(no,i,4,DBbuff,2 + 1);
		sf_assgetDB(no,i,5,start_time,14 + 1);
		sf_assgetDB(no,i,6,end_time,14 + 1);
		sf_to_text(error_code,DBbuff);	//NUMERIC型(int)を文字に変換する。
		sf_assgetDB(no,i,7,DBbuff,5 + 1);
		sf_to_text(max_retry_count,DBbuff);	//NUMERIC型(int)を文字に変換する。
		sf_assgetDB(no,i,8,DBbuff,5 + 1);
		sf_to_text(retry_interval,DBbuff);	//NUMERIC型(int)を文字に変換する。
		sf_assgetDB(no,i,9,DBbuff,2 + 1);
		sf_to_text(current_retry_count,DBbuff);	//NUMERIC型(int)を文字に変換する。
		sf_assgetDB(no,i,10,DBbuff,5 + 1);
		sf_assgetDB(no,i,11,entry_date,22 + 1);
		sf_assgetDB(no,i,12,update_date,22 + 1);
		sf_assgetDB(no,i,13,comment1,40 + 1);

		if (memcmp (sqlca.sqlstate, "00", 2) != 0)
		{
			{ ECPGdo(__LINE__, 0, 1, NULL, "close schdytbl_CURSOR", ECPGt_EOIT, ECPGt_EORT);}
#line 182 "schdytbl.pgc"

			{ ECPGtrans(__LINE__, NULL, "commit");}
#line 183 "schdytbl.pgc"

			sprintf(tmp,"データベースFETCHエラー:%d - %s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
			popmsg((COLS/2)-24,(LINES/2)-4,tmp);
			return(-1);
		}
	}
	// カーソルクローズ 
	{ ECPGdo(__LINE__, 0, 1, NULL, "close schdytbl_CURSOR", ECPGt_EOIT, ECPGt_EORT);}
#line 190 "schdytbl.pgc"

	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 191 "schdytbl.pgc"


	DBcount = rec_count;

	// 結果チェック
	if (sqlca.sqlcode != 0)
	{
		sprintf(tmp,"データベースFETCH結果チェック:%d - %s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
		popmsg((COLS/2)-24,(LINES/2)-4,tmp);
		return(0);
	}
	// 切断
	sqlca.sqlcode = 0;
	{ ECPGdisconnect(__LINE__, "dbConnection");}
#line 204 "schdytbl.pgc"

	return(0);
}

int Insert_schdytbl(int no)
{
	static char DBbuff[MAX_STR];
	int i = 0;

	DBConnect();

	memset (sqlca.sqlstate, '0', 5);

	/* exec sql begin declare section */
		 
			  	//TEXT
			  	//TEXT
			  	//TEXT
			  	//TEXT
						//NUMERIC
			  	//TEXT
			  	//TEXT
						//NUMERIC
						//NUMERIC
						//NUMERIC
						//NUMERIC
			  	//DATE
			  	//DATE
			  	//TEXT
	
#line 218 "schdytbl.pgc"
 int  rec_count    ;
 
#line 219 "schdytbl.pgc"
 char  schedule_name [ 16 + 1 ]    ;
 
#line 220 "schdytbl.pgc"
 char  schedule_day [ 8 + 1 ]    ;
 
#line 221 "schdytbl.pgc"
 char  schedule_time [ 4 + 1 ]    ;
 
#line 222 "schdytbl.pgc"
 char  cmd_line [ 256 + 1 ]    ;
 
#line 223 "schdytbl.pgc"
 int  status    ;
 
#line 224 "schdytbl.pgc"
 char  start_time [ 14 + 1 ]    ;
 
#line 225 "schdytbl.pgc"
 char  end_time [ 14 + 1 ]    ;
 
#line 226 "schdytbl.pgc"
 int  error_code    ;
 
#line 227 "schdytbl.pgc"
 int  max_retry_count    ;
 
#line 228 "schdytbl.pgc"
 int  retry_interval    ;
 
#line 229 "schdytbl.pgc"
 int  current_retry_count    ;
 
#line 230 "schdytbl.pgc"
 char  entry_date [ 22 + 1 ]    ;
 
#line 231 "schdytbl.pgc"
 char  update_date [ 22 + 1 ]    ;
 
#line 232 "schdytbl.pgc"
 char  comment1 [ 40 + 1 ]    ;
/* exec sql end declare section */
#line 233 "schdytbl.pgc"


	sqlcode = 0;

	// インサート
	// テーブル項目をsplitbDBbuff[]からDB配列にセットする
	sf_assputDB(no,0,schedule_name,16 + 1);
	sf_assputDB(no,1,schedule_day,8 + 1);
	sf_assputDB(no,2,schedule_time,4 + 1);
	sf_assputDB(no,3,cmd_line,256 + 1);
	sf_assputDB(no,4,DBbuff,2 + 1);
	status = sf_to_integer(DBbuff);	//文字(char)をNUMERIC型(int)に変換する。
	sf_assputDB(no,5,start_time,14 + 1);
	sf_assputDB(no,6,end_time,14 + 1);
	sf_assputDB(no,7,DBbuff,5 + 1);
	error_code = sf_to_integer(DBbuff);	//文字(char)をNUMERIC型(int)に変換する。
	sf_assputDB(no,8,DBbuff,5 + 1);
	max_retry_count = sf_to_integer(DBbuff);	//文字(char)をNUMERIC型(int)に変換する。
	sf_assputDB(no,9,DBbuff,2 + 1);
	retry_interval = sf_to_integer(DBbuff);	//文字(char)をNUMERIC型(int)に変換する。
	sf_assputDB(no,10,DBbuff,5 + 1);
	current_retry_count = sf_to_integer(DBbuff);	//文字(char)をNUMERIC型(int)に変換する。
	sf_assputDB(no,11,entry_date,22 + 1);
	sf_assputDB(no,12,update_date,22 + 1);
	sf_assputDB(no,13,comment1,40 + 1);

	// 対象レコードをADD
	{ ECPGdo(__LINE__, 0, 1, NULL, "insert into schdytbl ( schedule_name  , schedule_day  , schedule_time  , cmd_line  , status  , start_time  , end_time  , error_code  , max_retry_count  , retry_interval  , current_retry_count  , entry_date  , update_date  , comment1  ) values ( coalesce(  ? , ' ' , '0' ) , coalesce(  ? , ' ' , '0' ) , coalesce(  ? , ' ' , '0' ) , coalesce(  ? , ' ' , '0' ) ,  ? , coalesce(  ? , ' ' , '0' ) , coalesce(  ? , ' ' , '0' ) ,  ? ,  ? ,  ? ,  ? , TO_TIMESTAMP (  ? , 'YYYY/MM/DD HH24:MI:SS' ) , TO_TIMESTAMP (  ? , 'YYYY/MM/DD HH24:MI:SS' ) , coalesce(  ? , ' ' , '0' ) ) ", 
	ECPGt_char,(schedule_name),(long)16 + 1,(long)1,(16 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(schedule_day),(long)8 + 1,(long)1,(8 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(schedule_time),(long)4 + 1,(long)1,(4 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(cmd_line),(long)256 + 1,(long)1,(256 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(status),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(start_time),(long)14 + 1,(long)1,(14 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(end_time),(long)14 + 1,(long)1,(14 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(error_code),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(max_retry_count),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(retry_interval),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(current_retry_count),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(entry_date),(long)22 + 1,(long)1,(22 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(update_date),(long)22 + 1,(long)1,(22 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(comment1),(long)40 + 1,(long)1,(40 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
#line 293 "schdytbl.pgc"

	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 294 "schdytbl.pgc"


	// 登録エラー
	if (memcmp (sqlca.sqlstate, "00", 2) != 0)
	{
		// ロールバック
		{ ECPGtrans(__LINE__, NULL, "rollback");}
#line 300 "schdytbl.pgc"

		{ ECPGtrans(__LINE__, NULL, "commit");}
#line 301 "schdytbl.pgc"

		sprintf(tmp,"データベースINSERTエラー:%d - %s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
		popmsg((COLS/2)-24,(LINES/2)-4,tmp);
		return(-1);
	}

	// コミット
	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 308 "schdytbl.pgc"

	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 309 "schdytbl.pgc"


	// 結果チェック
	if (sqlca.sqlcode != 0)
	{
		sprintf(tmp,"データベースINSERT結果チェック:%d - %s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
		popmsg((COLS/2)-24,(LINES/2)-4,tmp);
		return(0);
	}

	// 切断
	sqlca.sqlcode = 0;
	{ ECPGdisconnect(__LINE__, "dbConnection");}
#line 321 "schdytbl.pgc"

	return(0);
}

int	Update_schdytbl(int no,const char* key1,const char* key2,int sqlcode,int line)
{
	static char DBbuff[MAX_STR];
	int i = 0;

	DBConnect();

	memset (sqlca.sqlstate, '0', 5);

	/* exec sql begin declare section */
		 
			  	//TEXT
			  	//TEXT
			  	//TEXT
			  	//TEXT
						//NUMERIC
			  	//TEXT
			  	//TEXT
						//NUMERIC
						//NUMERIC
						//NUMERIC
						//NUMERIC
			  	//DATE
			  	//DATE
			  	//TEXT
	
#line 335 "schdytbl.pgc"
 int  rec_count    ;
 
#line 336 "schdytbl.pgc"
 char  schedule_name [ 16 + 1 ]    ;
 
#line 337 "schdytbl.pgc"
 char  schedule_day [ 8 + 1 ]    ;
 
#line 338 "schdytbl.pgc"
 char  schedule_time [ 4 + 1 ]    ;
 
#line 339 "schdytbl.pgc"
 char  cmd_line [ 256 + 1 ]    ;
 
#line 340 "schdytbl.pgc"
 int  status    ;
 
#line 341 "schdytbl.pgc"
 char  start_time [ 14 + 1 ]    ;
 
#line 342 "schdytbl.pgc"
 char  end_time [ 14 + 1 ]    ;
 
#line 343 "schdytbl.pgc"
 int  error_code    ;
 
#line 344 "schdytbl.pgc"
 int  max_retry_count    ;
 
#line 345 "schdytbl.pgc"
 int  retry_interval    ;
 
#line 346 "schdytbl.pgc"
 int  current_retry_count    ;
 
#line 347 "schdytbl.pgc"
 char  entry_date [ 22 + 1 ]    ;
 
#line 348 "schdytbl.pgc"
 char  update_date [ 22 + 1 ]    ;
 
#line 349 "schdytbl.pgc"
 char  comment1 [ 40 + 1 ]    ;
/* exec sql end declare section */
#line 350 "schdytbl.pgc"


	sqlcode = 0;

	strncpy((char *)schedule_name,key1,sizeof(schedule_name));	//KEY1
	strncpy((char *)schedule_day,key2,sizeof(schedule_day));	//KEY2
	// アップデート
	// テーブル項目をsplitbDBbuff[]からDB配列にセットする
	sf_assputDB(no,0,schedule_name,16 + 1);
	sf_assputDB(no,1,schedule_day,8 + 1);
	sf_assputDB(no,2,schedule_time,4 + 1);
	sf_assputDB(no,3,cmd_line,256 + 1);
	sf_assputDB(no,4,DBbuff,2 + 1);
	status = sf_to_integer(DBbuff);	//文字(char)をNUMERIC型(int)に変換する。
	sf_assputDB(no,5,start_time,14 + 1);
	sf_assputDB(no,6,end_time,14 + 1);
	sf_assputDB(no,7,DBbuff,5 + 1);
	error_code = sf_to_integer(DBbuff);	//文字(char)をNUMERIC型(int)に変換する。
	sf_assputDB(no,8,DBbuff,5 + 1);
	max_retry_count = sf_to_integer(DBbuff);	//文字(char)をNUMERIC型(int)に変換する。
	sf_assputDB(no,9,DBbuff,2 + 1);
	retry_interval = sf_to_integer(DBbuff);	//文字(char)をNUMERIC型(int)に変換する。
	sf_assputDB(no,10,DBbuff,5 + 1);
	current_retry_count = sf_to_integer(DBbuff);	//文字(char)をNUMERIC型(int)に変換する。
	sf_assputDB(no,11,entry_date,22 + 1);
	sf_assputDB(no,12,update_date,22 + 1);
	sf_assputDB(no,13,comment1,40 + 1);

	// 対象レコードをUPDATE
	{ ECPGdo(__LINE__, 0, 1, NULL, "update schdytbl set schedule_name  = coalesce(  ? , ' ' , '0' ) , schedule_day  = coalesce(  ? , ' ' , '0' ) , schedule_time  = coalesce(  ? , ' ' , '0' ) , cmd_line  = coalesce(  ? , ' ' , '0' ) , status  =  ? , start_time  = coalesce(  ? , ' ' , '0' ) , end_time  = coalesce(  ? , ' ' , '0' ) , error_code  =  ? , max_retry_count  =  ? , retry_interval  =  ? , current_retry_count  =  ? , entry_date  = TO_TIMESTAMP (  ? , 'YYYY/MM/DD HH24:MI:SS' ) , update_date  = TO_TIMESTAMP (  ? , 'YYYY/MM/DD HH24:MI:SS' ) , comment1  = coalesce(  ? , ' ' , '0' )  where schedule_name =  ? and schedule_day =  ? ", 
	ECPGt_char,(schedule_name),(long)16 + 1,(long)1,(16 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(schedule_day),(long)8 + 1,(long)1,(8 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(schedule_time),(long)4 + 1,(long)1,(4 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(cmd_line),(long)256 + 1,(long)1,(256 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(status),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(start_time),(long)14 + 1,(long)1,(14 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(end_time),(long)14 + 1,(long)1,(14 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(error_code),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(max_retry_count),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(retry_interval),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(current_retry_count),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(entry_date),(long)22 + 1,(long)1,(22 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(update_date),(long)22 + 1,(long)1,(22 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(comment1),(long)40 + 1,(long)1,(40 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(schedule_name),(long)16 + 1,(long)1,(16 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(schedule_day),(long)8 + 1,(long)1,(8 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
#line 395 "schdytbl.pgc"

	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 396 "schdytbl.pgc"


	if (memcmp (sqlca.sqlstate, "00", 2) != 0)
	{
	// 更新エラー
		// ロールバック
		{ ECPGtrans(__LINE__, NULL, "rollback");}
#line 402 "schdytbl.pgc"

		{ ECPGtrans(__LINE__, NULL, "commit");}
#line 403 "schdytbl.pgc"

		sprintf(tmp,"データベースUPDATEエラー:%d - %s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
		popmsg((COLS/2)-24,(LINES/2)-4,tmp);
		return(-1);
	}

	//コミットする
	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 410 "schdytbl.pgc"

	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 411 "schdytbl.pgc"



	// 結果チェック
	if (sqlca.sqlcode != 0)
	{
		sprintf(tmp,"データベースUPDATE結果チェック:%d - %s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
		popmsg((COLS/2)-24,(LINES/2)-4,tmp);
		return(0);
	}

	// 切断
	sqlca.sqlcode = 0;
	{ ECPGdisconnect(__LINE__, "dbConnection");}
#line 424 "schdytbl.pgc"

	return(0);
}

int	Delete_schdytbl(const char *key1,char *key2,int sqlcode)
{
	static char DBbuff[MAX_STR];
	int i = 0;

	DBConnect();

	memset (sqlca.sqlstate, '0', 5);

	/* exec sql begin declare section */
			  	//TEXT
			  	//TEXT
			  	//TEXT
			  	//TEXT
						//NUMERIC
			  	//TEXT
			  	//TEXT
						//NUMERIC
						//NUMERIC
						//NUMERIC
						//NUMERIC
			  	//DATE
			  	//DATE
			  	//TEXT
	
#line 438 "schdytbl.pgc"
 char  schedule_name [ 16 + 1 ]    ;
 
#line 439 "schdytbl.pgc"
 char  schedule_day [ 8 + 1 ]    ;
 
#line 440 "schdytbl.pgc"
 char  schedule_time [ 4 + 1 ]    ;
 
#line 441 "schdytbl.pgc"
 char  cmd_line [ 256 + 1 ]    ;
 
#line 442 "schdytbl.pgc"
 int  status    ;
 
#line 443 "schdytbl.pgc"
 char  start_time [ 14 + 1 ]    ;
 
#line 444 "schdytbl.pgc"
 char  end_time [ 14 + 1 ]    ;
 
#line 445 "schdytbl.pgc"
 int  error_code    ;
 
#line 446 "schdytbl.pgc"
 int  max_retry_count    ;
 
#line 447 "schdytbl.pgc"
 int  retry_interval    ;
 
#line 448 "schdytbl.pgc"
 int  current_retry_count    ;
 
#line 449 "schdytbl.pgc"
 char  entry_date [ 22 + 1 ]    ;
 
#line 450 "schdytbl.pgc"
 char  update_date [ 22 + 1 ]    ;
 
#line 451 "schdytbl.pgc"
 char  comment1 [ 40 + 1 ]    ;
/* exec sql end declare section */
#line 452 "schdytbl.pgc"


	sqlcode = 0;

		// キー項目設定
	memset((char *)schedule_name, '\0', sizeof(schedule_name));
	memset((char *)schedule_day, '\0', sizeof(schedule_day));
	strncpy((char *)schedule_name,key1,sizeof(schedule_name));	//KEY1
	strncpy((char *)schedule_day,key2,sizeof(schedule_day));	//KEY2

	// 削除対象レコードをDELETE
	{ ECPGdo(__LINE__, 0, 1, NULL, "delete from schdytbl  where schedule_name =  ? and schedule_day =  ? ", 
	ECPGt_char,(schedule_name),(long)16 + 1,(long)1,(16 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(schedule_day),(long)8 + 1,(long)1,(8 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
#line 464 "schdytbl.pgc"

	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 465 "schdytbl.pgc"


	if (memcmp (sqlca.sqlstate, "00", 2) != 0)
	{
	// 削除エラー
		// ロールバック
		{ ECPGtrans(__LINE__, NULL, "rollback");}
#line 471 "schdytbl.pgc"

		{ ECPGtrans(__LINE__, NULL, "commit");}
#line 472 "schdytbl.pgc"

		sprintf(tmp,"データベースUPDATEエラー:%d - %s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
		popmsg((COLS/2)-24,(LINES/2)-4,tmp);
		return(-1);
	}

	//コミットする
	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 479 "schdytbl.pgc"

	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 480 "schdytbl.pgc"



	// 結果チェック
	if (sqlca.sqlcode != 0)
	{
		sprintf(tmp,"データベースUPDATE結果チェック:%d - %s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
		popmsg((COLS/2)-24,(LINES/2)-4,tmp);
		return(0);
	}

	// 切断
	sqlca.sqlcode = 0;
	{ ECPGdisconnect(__LINE__, "dbConnection");}
#line 493 "schdytbl.pgc"

	return(0);
}

//以下の二つの関数は入出力画面(ウインドウ)とのインターフェース関数です。
//FETCHしたgridにDBの行列を書き込みます。
int grid_disp(int no, int startline, int maxcol)
{
	int i, j;
	char s[MAX_TMP];

	if((Fetch_schdytbl(no)) == 0)
	{
		for(i=startline;i<DBcount;i++)
		{
			for(j=0;j<maxcol;j++)
			{
				sf_gputDB(no,i,j,startline,s);
			}
		}
		return(0);
	}
	else
	{
		return(-1);
	}
}

//DBから入出力(画面)ウインドウに書き込みます。
void inputwin_write(int no, int get, int line,int maxcol)
{
	int i;
	char s[MAX_TMP];
	
	sf_tbegin();
	for(i=0;tp->next != (TextBox *)NULL;i++)
	{
		sprintf(s,"%s",ft[get].splitDBbuff[line][i]);
		sf_tput(no,i,s);
		sf_tnext();
	}
	sprintf(s,"%s",ft[get].splitDBbuff[line][i]);
	sf_tput(no,i,s);
}


//***********************************************************************
// NAME     : DeleteTBL2()	レコード削除(キー２個)
// SYNOPSIS : DeleteTBL2()
// RETURN   :	0	成功
//		-1	失敗
//***********************************************************************
int	Delete_schdytbl2(const char* key1,char* key2,int sqlcode)
{
	DBConnect();

	memset (sqlca.sqlstate, '0', 5);

		/* ホスト変数定義 */
  	/* exec sql begin declare section */
					/* スケジュール名称 */
					/* スケジュール日 */
	
#line 553 "schdytbl.pgc"
 char  schedule_name [ 16 + 1 ]    ;
 
#line 554 "schdytbl.pgc"
 char  schedule_day [ 8 + 1 ]    ;
/* exec sql end declare section */
#line 555 "schdytbl.pgc"


	sqlcode = 0;

		/* スケジュール名（キー項目）設定 */
	memset((char *)schedule_name, '\0', sizeof(schedule_name));
	strncpy((char*)schedule_name,key1,sizeof(schedule_name));
	memset((char *)schedule_day, '\0', sizeof(schedule_day));
	strncpy((char*)schedule_day,key2,sizeof(schedule_day));

		/* 削除対象レコードをDELETE */
	{ ECPGdo(__LINE__, 0, 1, NULL, "delete from SCHDYTBL  where SCHEDULE_NAME =  ? and SCHEDULE_DAY =  ? ", 
	ECPGt_char,(schedule_name),(long)16 + 1,(long)1,(16 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(schedule_day),(long)8 + 1,(long)1,(8 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
#line 567 "schdytbl.pgc"

	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 568 "schdytbl.pgc"


		/* DELETE失敗 */
//	if ( sqlca.sqlcode < 0 || sqlca.sqlcode == 1403)
	if (memcmp (sqlca.sqlstate, "00", 2) != 0)
	{
  		/* ロールバック */
  		{ ECPGtrans(__LINE__, NULL, "rollback");}
#line 575 "schdytbl.pgc"

		{ ECPGtrans(__LINE__, NULL, "commit");}
#line 576 "schdytbl.pgc"

		sprintf(tmp,"データベースDELETEエラー:%d - %s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
		popmsg((COLS/2)-24,(LINES/2)-4,tmp);
		return(-1);
	}

		/* コミットする */
	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 583 "schdytbl.pgc"

	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 584 "schdytbl.pgc"


	/* 結果チェック */
	if (sqlca.sqlcode != 0)
	{
		sprintf(tmp,"DELETE結果チェック:%d - %s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
		popmsg((COLS/2)-24,(LINES/2)-4,tmp);
		return(0);
	}
	/* 切断 */
	sqlca.sqlcode = 0;
	{ ECPGdisconnect(__LINE__, "dbConnection");}
#line 595 "schdytbl.pgc"

	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 596 "schdytbl.pgc"

	return(0);
}

//***********************************************************************
// NAME     : DeleteTBL3()	レコード削除(キー３個)
// SYNOPSIS : DeleteTBL3()
// RETURN   :	0	成功
//		-1	失敗
//***********************************************************************
int	Delete_schdytbl3(const char* key1,char* key2,char *key3,int sqlcode)
{
	DBConnect();

	memset (sqlca.sqlstate, '0', 5);

		/* ホスト変数定義 */
  	/* exec sql begin declare section */
					/* スケジュール名称 */
					/* スケジュール日 */
					/* スケジュール時刻 */
	
#line 614 "schdytbl.pgc"
 char  schedule_name [ 16 + 1 ]    ;
 
#line 615 "schdytbl.pgc"
 char  schedule_day [ 8 + 1 ]    ;
 
#line 616 "schdytbl.pgc"
 char  schedule_time [ 4 + 1 ]    ;
/* exec sql end declare section */
#line 617 "schdytbl.pgc"


	sqlcode = 0;

		/* スケジュール名（キー項目）設定 */
	memset((char *)schedule_name, '\0', sizeof(schedule_name));
	strncpy((char*)schedule_name,key1,sizeof(schedule_name));
	memset((char *)schedule_day, '\0', sizeof(schedule_day));
	strncpy((char*)schedule_day,key2,sizeof(schedule_day));
	memset((char *)schedule_time, '\0', sizeof(schedule_time));
	strncpy((char*)schedule_time,key3,sizeof(schedule_time));

		/* 削除対象レコードをDELETE */
	{ ECPGdo(__LINE__, 0, 1, NULL, "delete from SCHDYTBL  where SCHEDULE_NAME =  ? and SCHEDULE_DAY =  ? and SCHEDULE_TIME =  ? ", 
	ECPGt_char,(schedule_name),(long)16 + 1,(long)1,(16 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(schedule_day),(long)8 + 1,(long)1,(8 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(schedule_time),(long)4 + 1,(long)1,(4 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
#line 631 "schdytbl.pgc"

	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 632 "schdytbl.pgc"


		/* DELETE失敗 */
//	if ( sqlca.sqlcode < 0 || sqlca.sqlcode == 1403)
	if (memcmp (sqlca.sqlstate, "00", 2) != 0)
	{
  		/* ロールバック */
  		{ ECPGtrans(__LINE__, NULL, "rollback");}
#line 639 "schdytbl.pgc"

		{ ECPGtrans(__LINE__, NULL, "commit");}
#line 640 "schdytbl.pgc"

		sprintf(tmp,"データベースDELETEエラー:%d - %s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
		popmsg((COLS/2)-24,(LINES/2)-4,tmp);
		return(-1);
	}

		/* コミットする */
	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 647 "schdytbl.pgc"

	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 648 "schdytbl.pgc"


	/* 結果チェック */
	if (sqlca.sqlcode != 0)
	{
		sprintf(tmp,"DELETE結果チェック:%d - %s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
		popmsg((COLS/2)-24,(LINES/2)-4,tmp);
		return(0);
	}
	/* 切断 */
	sqlca.sqlcode = 0;
	{ ECPGdisconnect(__LINE__, "dbConnection");}
#line 659 "schdytbl.pgc"

	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 660 "schdytbl.pgc"

	return(0);
}

//***********************************************************************
// NAME     : Delete_schdytbl3()	レコード削除(キー１個 指定したスケジュール日付より以前を削除)
// SYNOPSIS : Delete_schdytbl3()
// RETURN   :	0	成功
//		-1	失敗
//***********************************************************************
int	Delete_schdytbl4(const char* key,int sqlcode)
{
	DBConnect();

	memset (sqlca.sqlstate, '0', 5);

		/* ホスト変数定義 */
  	/* exec sql begin declare section */
					/* スケジュール名称 */
	
#line 678 "schdytbl.pgc"
 char  schedule_day [ 16 + 1 ]    ;
/* exec sql end declare section */
#line 679 "schdytbl.pgc"


	sqlcode = 0;

		/* スケジュール名（キー項目）設定 */
	memset((char *)schedule_day, '\0', sizeof(schedule_day));
	strncpy((char*)schedule_day,key,sizeof(schedule_day));

		/* 削除対象レコードをDELETE */
	{ ECPGdo(__LINE__, 0, 1, NULL, "delete from SCHDYTBL  where SCHEDULE_DAY <=  ? ", 
	ECPGt_char,(schedule_day),(long)16 + 1,(long)1,(16 + 1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
#line 689 "schdytbl.pgc"

	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 690 "schdytbl.pgc"


		/* DELETE失敗 */
//	if ( sqlca.sqlcode < 0 || sqlca.sqlcode == 1403)
	if (memcmp (sqlca.sqlstate, "00", 2) != 0)
	{
  		/* ロールバック */
  		{ ECPGtrans(__LINE__, NULL, "rollback");}
#line 697 "schdytbl.pgc"

		{ ECPGtrans(__LINE__, NULL, "commit");}
#line 698 "schdytbl.pgc"

		sprintf(tmp,"データベースDELETEエラー:%d - %s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
		popmsg((COLS/2)-24,(LINES/2)-4,tmp);
		return(-1);
	}

	/* コミットする */
	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 705 "schdytbl.pgc"

	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 706 "schdytbl.pgc"


	/* 結果チェック */
	if (sqlca.sqlcode != 0)
	{
		sprintf(tmp,"DELETE結果チェック:%d - %s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
		popmsg((COLS/2)-24,(LINES/2)-4,tmp);
		return(0);
	}
	/* 切断 */
	sqlca.sqlcode = 0;
	{ ECPGdisconnect(__LINE__, "dbConnection");}
#line 717 "schdytbl.pgc"

	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 718 "schdytbl.pgc"

	return(0);
}

int subform(void)
{
	int i,j,k;
	int ret;
	char f[256];
	int xcol,rows;
	int maxtext;
	char s[MAX_STR];

	int xcol2;
	int maxcol;
	int startline;
	
	int line;
	char key1[MAX_STR];
	char key2[MAX_STR];
	char key3[MAX_STR];

	sprintf(f,"%s","_schdytbl.def");
	initscr();

	xcol = COLS;
	rows = LINES;

	cbreak();
	noecho();
	keypad(stdscr, TRUE);
	meta(stdscr, TRUE);

	if(stat(f,fileptr) != 0)
	{
		popmsg((COLS/2)-24,(LINES/2)-4,"メイングリッドフォーム定義ファイルがありあません。");
		echo();
		endwin();
		exit(0);
	}
	if(stat("_inputwin2.def",fileptr) != 0)
	{
		popmsg((COLS/2)-24,(LINES/2)-4,"入力用テキストボックスフォーム定義ファイルがありあません。");
		echo();
		endwin();
		exit(0);
	}
	if(stat("_header.def",fileptr) != 0)
	{
		popmsg((COLS/2)-24,(LINES/2)-4,"ヘッダータイトル用グリッドフォーム定義ファイルがありあません。");
		echo();
		endwin();
		exit(0);
	}
	if(stat("_footer.def",fileptr) != 0)
	{
		popmsg((COLS/2)-24,(LINES/2)-4,"ファンクションキー用グリッドフォーム定義ファイルがありあません。");
		echo();
		endwin();
		exit(0);
	}

	xcol = sf_wsubform(3,144,14,2,30,"_inputwin2.def");
	maxcol = sf_wsubform(0,144,44,1,2,f);
	maxtext = sf_textbox(3,2,30,"_inputwin2.def");

	wrefresh(xt[0].form);

	xcol = sf_wsubform(2,xcol,rows,0,46,"_footer.def");
	sf_gcep(2,0,0,3,"入力画面へ");
	sf_gcep(2,12,0,3,"ESC終了");
	wrefresh(xt[2].form);

	for(i=0;i<MAX_POS;i++)
		memset(gridtitles[i],'\0',MAX_LEN);

	xcol = sf_wsubform(1,xcol,rows,0,0,"_header.def");
	sf_gcep(1,0,0,1,"v1.0.3");
	sprintf(ft[1].cp[0][0].s,"%s","APscheduler");
	mvwprintw(ft[1].st[0][0].vs,0,1,"%s",ft[1].cp[0][0].s);
	sf_wrefreshcell(1,0,0);
	sf_wrefreshform(1);

	sf_startcell(0);

	ret = Gret;

	while(1)
	{
		//DBgrid()の持っているスクロールに必要なＤＢグリッドの画面初期行の位置情報。
		startline = sf_getstartline(0);
		//*splitDBbuff[][]をグリッドに書き込み表示する。
		if(grid_disp(0,startline,maxtext) == -1)
		{
			popmsg(12,12,"schdytbl_disp():error");
		}
		//データベース連結用グリッド。*splitDBbuff[][]を表示する。
		ret = sf_DBgrid(0,maxtext,xcol,0,DBcount,maxtext);
		switch(ret)
		{
		case -1:
			echo();
			endwin();
			exit(0);
			break;

		//for grid
		case 200: //ESC　キーでプログラムを終了する。
			if(popmsg((COLS/2)-24,(LINES/2)-4,"Exit grid area in Subform?") == 1)
				goto end;
			ret = Pret;
			break;
		case 201: //F1
		//DBへの入力用ウインドウの作成
			line = sf_status(0,Grid,'D');
			inputwin_write(3,0,line,maxtext);
			sf_gcep(2,0,0,3,"戻る");
			sf_gcep(2,4,0,3,"更新");
			sf_gcep(2,5,0,3,"追加");
			sf_gcep(2,6,0,3,"削除 n+d+t");
			sf_gcep(2,7,0,3,"削除 n+d");
			sf_gcep(2,8,0,3,"削除 < d");
			while(1)
			{
				ret = sf_formtext(3,maxtext, 140);
				switch(ret)
				{
				case -1:
					echo();
					endwin();
					exit(0);
					break;
				case 100:
					if(popmsg((COLS/2)-24,(LINES/2)-4,"Exit grid area in Subform?") == 1)
						goto end;
					break;
				case 101:
					goto mainwin;
					break;
				case 105:
					sf_tgetDBall(3);
					sprintf(key1,"%s",ft[0].splitDBbuff[line][0]);
					sprintf(key2,"%s",ft[0].splitDBbuff[line][1]);
					if(Update_schdytbl(0,key1,key2,sqlcode,line) == -1)
					{
						popmsg((COLS/2)-24,(LINES/2)-4,"データベースが更新出来ません。");
					}
					goto mainwin;
					break;
				case 106:
					sf_tgetDBall(3);
					sprintf(key1,"%s",ft[0].splitDBbuff[line][0]);
					sprintf(key2,"%s",ft[0].splitDBbuff[line][1]);
					if(Insert_schdytbl(0) == -1)
					{
						popmsg((COLS/2)-24,(LINES/2)-4,"データベースが追加出来ません。");
					}
					goto mainwin;
					break;
				case 107:
					if(popmsg((COLS/2)-24,(LINES/2)-4,"名前と日付と実行時間でデータを削除しますか？") == 1)
					{
						sprintf(key1,"%s",ft[0].splitDBbuff[line][0]);
						sprintf(key2,"%s",ft[0].splitDBbuff[line][1]);
						sprintf(key3,"%s",ft[0].splitDBbuff[line][2]);
						if(Delete_schdytbl3(key1,key2,key3,sqlcode) == -1)
						{
							popmsg((COLS/2)-24,(LINES/2)-4,"データベースから削除出来ません。");
						}
					}
					else
					{
						goto mainwin;
					}
					goto cleardisp;
					break;
				case 108:
					if(popmsg((COLS/2)-24,(LINES/2)-4,"名前と日付でデータを削除しますか？") == 1)
					{
						sprintf(key1,"%s",ft[0].splitDBbuff[line][0]);
						sprintf(key2,"%s",ft[0].splitDBbuff[line][1]);
						if(Delete_schdytbl2(key1,key2,sqlcode) == -1)
						{
							popmsg((COLS/2)-24,(LINES/2)-4,"データベースから削除出来ません。");
						}
					}
					else
					{
						goto mainwin;
					}
					goto cleardisp;
					break;
				case 109:
					sf_tget(3,1,s);
					sprintf(tmp,"%s の日付以前の全てのデータを削除しますか？",s);
					if(popmsg((COLS/2)-24,(LINES/2)-4,tmp) == 1)
					{
						sprintf(key1,"%s",ft[0].splitDBbuff[line][1]);
						if(Delete_schdytbl4(key1,sqlcode) == -1)
						{
							popmsg((COLS/2)-24,(LINES/2)-4,"データベースから削除出来ません。");
						}
					}
					else
					{
						goto mainwin;
					}
					goto cleardisp;
					break;
				}
			}
			cleardisp:
			sf_initgridcell(0);
			mainwin:
			sf_gcep(2,0,0,3,"入力画面へ");
			sf_gcep(2,4,0,3,"          ");
			sf_gcep(2,5,0,3,"          ");
			sf_gcep(2,6,0,3,"          ");
			sf_gcep(2,7,0,3,"          ");
			sf_gcep(2,8,0,3,"          ");
			ret = Pret;
			break;
		case 202: //F2
			ret = Pret;
			break;
		case 203: //F3
			ret = Pret;
			break;
		case 204: //F4
			ret = Pret;
			break;
		case 205: //F5
			ret = Pret;
			break;
		case 206: //F6
			ret = Pret;
			break;
		case 207: //F7
			ret = Pret;
			break;
		case 208: //F8
			ret = Pret;
			break;
		case 209: //F9
			ret = Pret;
			break;
		case 210: //F10
			ret = Pret;
			break;
		case 211: //F12
			ret = Pret;
			break;

		default:
			break;
		}
		sf_freeDB(0,DBcount,maxtext);
	}

end:
	echo();
	endwin();
}

int main(void)
{
	subform();
}

