User manual - DT-930 AP開発支援ライブラリ解説書(2006年9月29日)

26
/* KY_F02 : F2 キー */
/* KY_F03 : F3 キー */
/* KY_F04 : F4 キー */
/* KY_F05 : F5 キー */
/* KY_F06 : F6 キー */
/* KY_F07 : F7 キー */
/* KY_F08 : F8 キー */
/* KY_ENT : 実行キー */
/* KY_LB : LB 発生 */
/* KY_OBR : バーコード読込み */
/* E_NG : 異常終了 */
/* E_PRM : パラメータエラー */
/**********************************************************************/
ER ht_DateInp(B mode, ER escape, H fsize, H type, UH clm, UH line, UB *string)
{
ER ret;
UH len;
H year,wyear,gengo;
H month;
H day;
ER wescape;
ret=0L;
wescape=(escape & KY_OBR_CANCEL); /* バーコードを使用させないため */
for(;;){
if (mode==SEIREKI_8) len=8; /* 西暦 4 桁+月 2 桁+日 2 */
else if(mode==SEIREKI_6) len=6; /* 西暦 2 桁+月 2 桁+日 2 */
else if(mode==WAREKI_6 ) len=6; /* 和暦(平成)2 桁+月 2 桁+日 2 */
else{ ret=E_PRM; break; }
ret=ht_NumInp(wescape, fsize, type, len, clm, line, string);
if(ret==KY_ENT){
if (mode==SEIREKI_8){
if(strlen((const char *)string)==8){
year =(H)memto_l(string , 4);
month=(H)memto_l(string+4, 2);
day =(H)memto_l(string+6, 2);
if(ht_CheckDate(year, month, day)==E_OK) break;
}
}
else if (mode==SEIREKI_6){
if(strlen((const char *)string)==6){
year =(H)memto_l(string , 2);
month=(H)memto_l(string+2, 2);
day =(H)memto_l(string+4, 2);
if(year<80) year += 2000;
else year += 1900;
if(ht_CheckDate(year, month, day)==E_OK) break;
}
}