author ${user}bzero (${in_str}, sizeof(${in_str}));catch (${Exception} e) {
${cursor}
}char ${str_name} [${str_len} + 1];
bzero (${str_name}, ${str_len} + 1);${cursor}
class ${name} {
${cursor}
private:
};char ${date_name} [LEN_DATE + 1]; /* yyyymmdd */
bzero (${date_name}, LEN_DATE + 1);do {
${cursor}
} while (${condition});char ${date_time} [14 + 1]; /* yyyymmddhhmmss */
bzero (${date_time}, 14 + 1);char ${date_utime} [20 + 1]; /* yyyymmddhhmmssuuuuuu */
bzero (${date_utime}, 20 + 1);else {
${cursor}
}else if (${condition}) {
${cursor}
}if( rc != RC_NRM) { /* DBIO 예외 처리 */
if( rc == RC_NFD){
PFM_ERR("[FAIL] DBIO : delete data not found!!! "); /* 삭제조건에 맞는 값이 없음 */
/* RC_NFD시의 업무에 따른 알맞은 메시지 처리(에러, 정상 처리결정) */
return RC_ERR; /* Delete의 RC_NFD는 default로 RC_ERR을 리턴 (업무에 따라 변경) */
}
else{
PFM_DBG("[FAIL] dbio error [%ld] [%s] ", pfmDbioGetErrNo(), pfmDbioGetErrMsg()); /* DBIO 오류 */
return RC_ERR;
}
}/* while(fetch_flag)로 수정 및 while 밖에 long fetch_cnt, fetch_flag 선언 필요 */
if(rc != RC_NRM) {
if(rc == RC_NFD) {
if(pfmDbioGetProcRowsCnt() == 0 ) { /* 한 건도 없는 경우 */
PFM_DBG("조건에 맞는 데이타가 없습니다.");
break;
}
fetch_cnt = pfmDbioGetProcRowsCnt() % AS_${UppercaseDbioPhysicalName};
/* fetchArraySize는 각 fetch_dbio의 header파일에 AS_대문자물리명으로 define되어 있음 */
fetch_flag = FALSE; /* while Loop 탈출조건 */
}
else { /* RC_ERR */
PFM_ERR("Error Code [%d]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioFetchCursorArray() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
pfmDbioCloseCursorArray("${mapId}"); /* Cursor close */
return rc;
}
}
else { /* RC_NRM Fetch 성공 */
fetch_cnt = AS_${UppercaseDbioPhysicalName};
} if( rc != RC_NRM) { /* DBIO ERROR 처리 */
if( rc == RC_DUP){
PFM_DBG("[FAIL] DBIO : data already exist!!! "); /* 입력데이터가 이미 존재 */
/* RC_DUP 시의 업무에 따른 알맞은 메시지 처리(에러, 정상 처리결정) */
return RC_ERR; /* insert시 RC_DUP default로 RC_ERR을 리턴 (업무에 따라 변경가능) */
}
else{
PFM_DBG("[FAIL] dbio error [%ld] [%s] ", pfmDbioGetErrNo(), pfmDbioGetErrMsg()); /* DBIO 오류 */
return RC_ERR;
}
}/********* 생각나는데로 작성한다..ㅡㅡ *************** 테스트를 안해봐서..ㅡㅡ;; ********/
--아직 미작성됨 ---
1. Array Insert인경우 pfmDbioGetProcRowsCnt ()으로 갯수를 비교해 주세요 ~~!!
2. Error코드가 어떤게 떨어지는지 생각해봄
if( rc != RC_NRM) { /* DBIO ERROR 처리 */
if( rc == RC_DUP){
PFM_DBG("[FAIL] DBIO : data already exist!!! "); /* 입력데이터가 이미 존재 */
/* RC_DUP 시의 업무에 따른 알맞은 메시지 처리(에러, 정상 처리결정) */
return RC_ERR; /* insert시 RC_DUP default로 RC_ERR을 리턴 (업무에 따라 변경가능) */
}
else{
PFM_DBG("[FAIL] dbio error [%ld] [%s] ", pfmDbioGetErrNo(), pfmDbioGetErrMsg()); /* DBIO 오류 */
return RC_ERR;
}
}if( rc != RC_NRM) { /* DBIO ERROR 처리 */
if( rc == RC_NFD){
PFM_DBG("[FAIL] DBIO : select data not found!!! "); /* 조회조건에 맞는 값이 없음 */
/* RC_NFD 시의 업무에 따른 알맞은 메시지 처리(에러, 정상 처리결정) */
return RC_NRM; /* select시 RC_NFD default로 RC_NRM을 리턴 (업무에 따라 변경가능) */
}
else{
PFM_DBG("[FAIL] dbio error [%ld] [%s] ", pfmDbioGetErrNo(), pfmDbioGetErrMsg()); /* DBIO 오류 */
return RC_ERR;
}
}/* array_cnt의 선언 필요*/
if( rc != RC_NRM) { /* DBIO ERROR 처리 */
if( rc == RC_NFD){
if(pfmDbioGetProcRowsCnt() == 0) {
PFM_DBG("[FAIL] DBIO : select data not found!!! "); /* 조회조건에 맞는 값이 없음 */
/* RC_NFD && pfmDbioGetProcRowsCnt() == 0 조회된 값이 하나도 없을때 업무에 따른 알맞은 메시지 처리(에러, 정상 처리결정) */
return RC_NRM; /* select시 RC_NFD default로 RC_NRM을 리턴 (업무에 따라 변경가능)*/
}
else
array_cnt = pfmDbioGetProcRowsCnt(); /* array_cnt 조회된 데이터수 셋팅(변수선언필요) */
}
}
else{
PFM_DBG("[FAIL] dbio error [%ld] [%s] ", pfmDbioGetErrNo(), pfmDbioGetErrMsg()); /* DBIO 오류 */
return RC_ERR;
}
}
else if( rc == RC_NRM) {
array_cnt = AS_${UppercaseDbioPhysicalName}; /* 정상 조회시 카운트 해야할 조회 건수 셋팅 */
}if( rc != RC_NRM) { /* DBIO ERROR 처리 */
if( rc == RC_NFD){
PFM_DBG("[FAIL] DBIO : update data not found!!! "); /* 갱신조건에 맞는 값이 없음 */
/* RC_NFD 시의 업무에 따른 알맞은 메시지 처리(에러, 정상 처리결정) */
return RC_ERR; /* update RC_NFD default로 RC_ERR을 리턴 (업무에 따라 변경) */
}
else{
PFM_DBG("[FAIL] dbio error [%ld] [%s] ", pfmDbioGetErrNo(), pfmDbioGetErrMsg()); /* DBIO 오류 */
return RC_ERR;
}
}for (${var} = 0; ${var} < ${max}; ++${var}) {
${cursor}
}for (int ${var} = 0; ${var} < ${max}; ++${var}) {
${cursor}
}if (${condition}) {
${cursor}
}if (rc != RC_NRM ) {
PFM_ERR("%s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}
if (${condition}) {
${cursor}
} else {
}long ${var_name} = 0x00;int main(int argc, char **argv) {
${cursor}
}MAPPER_BUFFER_OVERFLOW_ERRORMAPPER_FUNCTION_ARGS_MISMATCHMAPPER_FUNCTION_CODE_ERRORMAPPER_MALLOC_ERRORMAPPER_MAPPING_TYPE_MISMATCHMAPPER_NULL_DATA_ERRORMAPPER_NUMERIC_CHECK_ERRORMAPPER_OUT_OF_BOUND_ERRORMAPPER_SYSTEM_ERRORMAPPER_TDLCALL_ERRORMAPPER_TYPE_UNDEFINEDnamespace ${namespace} {
${cursor}
}${type} ${name} = new ${type}(${arguments});PfmNumber ${number} = PFMNUM_ZERO;${cursor}PDB_CHK_DUPKEYPDB_CHK_FAILPDB_CHK_FETCHERRORPDB_CHK_FETCHFAILPDB_CHK_FETCHSUCCESSPDB_CHK_NOTFOUNDPDB_CHK_SUCCESSPDB_CHK_TOOMANYROWSPDB_ERRORNUMPDB_ERRORSTRPDB_RECNUMPFM_DBG("${word_selection}${}");PFM_DBG("${word_selection}${}",${word_selection}${Param});PFM_ERR("${word_selection}${}",${word_selection}${Param});SET_ERR("${err_code}" );SET_ERR("${err_code}", ${err_msg});PFM_HEXDUMP(${in_date}, ${in_date_length});PFM_MAX(${any_num1}, ${any_num2});PFM_MAX3(${any_num1}, ${any_num2}, ${any_num3});PFM_MIN(${any_num1}, ${any_num2});PFM_MIN3(${any_num1}, ${any_num2}, ${any_num3});PFM_TRY(${word_selection}${});PFM_TRYNJ(${word_selection}${});pfmAscToInt(${in_str}, ${in_str_length})pfmAscToLong(${in_str}, ${in_str_length});
/* 정수문자열 길이만큼 long형으로 변환(return 값은 변환된 long 값) */
/* 주민번호,기준일로 나이계산 */
rc = pfmCalcAge(${regNum}, ${baseDate}, &${yyyy}, &${mm}, &${dd}); /* yyyymmdd 는 long값으로 결과값임 */
if (rc != RC_NRM ) {
PFM_ERR("pfmCalcAge : %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
}
/* yyyy = 나이, mm = 개월수, dd = 일수 *//* 시작일 또는 종료일 산출 */
rc = pfmCalcDate(&${pfmDateCalculateDateIO});
if (rc != RC_NRM ) {
PFM_ERR("pfmCalcDate : %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
} /************ 시작일 산출 **************************************************/
PfmDateCalculateDateIO ${pfmDateCalculateDateIO};
bzero(&${pfmDateCalculateDateIO}, sizeof(PfmDateCalculateDateIO));
${pfmDateCalculateDateIO}.in.calc_type = ${word_selection}${PFM_CALC_DATE_CALC_ONE};
/* 계산법 셋팅 */
/* PFM_CNT_DAYS_CALC_ONE : 한편넣기 */
/* PFM_CNT_DAYS_CALC_BOTH : 양편넣기 */
STRNCPY(${pfmDateCalculateDateIO}.in.end_date, ${end_date}); /* 종료일 입력*/
${pfmDateCalculateDateIO}.in.mm_cnt = ${month_count}; /* 월수(long) */
${pfmDateCalculateDateIO}.in.dd_cnt = ${day_count}; /* 일수(long) */
rc = pfmCalcDate(&${pfmDateCalculateDateIO});
if (rc != RC_NRM ) {
PFM_ERR("pfmCalcDate : %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
}${cursor}
/* ${pfmDateCalculateDateIO}.out.beg_date : 계산된 시작일 */
/************ 종료일 산출 **************************************************/
PfmDateCalculateDateIO ${pfmDateCalculateDateIO};
bzero(&${pfmDateCalculateDateIO}, sizeof(PfmDateCalculateDateIO));
${pfmDateCalculateDateIO}.in.calc_type = ${word_selection}${PFM_CALC_DATE_CALC_ONE};
/* 계산법 셋팅 */
/* PFM_CNT_DAYS_CALC_ONE : 한편넣기 */
/* PFM_CNT_DAYS_CALC_BOTH : 양편넣기 */
STRNCPY(${pfmDateCalculateDateIO}.in.beg_date, ${end_date}); /* 시작일 입력*/
${pfmDateCalculateDateIO}.in.mm_cnt = ${month_count}; /* 월수 */
${pfmDateCalculateDateIO}.in.dd_cnt = ${day_count}; /* 일수 */
rc = pfmCalcDate(&${pfmDateCalculateDateIO});
if (rc != RC_NRM ) {
PFM_ERR("pfmCalcDate : %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
}
/* ${pfmDateCalculateDateIO}.out.end_date : 계산된 종료일 */
/* 입력일자의 분기, 분기시작일, 분기종료일 계산 */
rc = pfmCalcQuarterStartDateEndDate(${i_date}, &${o_qyear}, ${o_st_date}, ${o_end_date});
/* long ${o_qyear} : 해당분기 */
/* char *${o_st_date} : 분기 시작일 */
/* char *${o_end_date} : 분기 종료일 */
/* 입력일자의 분기, 분기시작일, 분기종료일 계산 */
if (rc != RC_NRM ) {
PFM_ERR("pfmCalcQuarterStartDateEndDate : %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
}
/* 계산되 분기일 ${o_qyear} *//****사용 변수 선언**************************************/
char ${o_st_date} [LEN_DATE + 1]; /* 분기 시작일(O) */
bzero (${o_st_date}, LEN_DATE + 1); /* 초기화 */
char ${o_end_date} [LEN_DATE + 1]; /* 분기 종료일(O) */
bzero (${o_end_date}, LEN_DATE + 1); /* 초기화 */
long ${o_qyear} = 0x00; /* 해당 분기(O) */
/********************************************************/
/* 입력일자를 기준으로 한 해당분기, 분기시작일, 분기종료일 계산 */
rc = pfmCalcQuarterStartDateEndDate(${i_date}, &${o_qyear}, ${o_st_date}, ${o_end_date});
/* char *${i_date} : 입력일자 YYYYMMDD */
/* long ${o_qyear} : 해당분기 */
/* char *${o_st_date} : 분기 시작일 */
/* char *${o_end_date} : 분기 종료일 */
if (rc != RC_NRM ) {
PFM_ERR("pfmCalcQuarterStartDateEndDate : %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
}
/* 계산되 분기일 ${o_qyear} */
/* ComBuf의 특정한 item 항목을 삭제할 경우에 사용한다 */
rc = pfmCbClearItem(${COMBUF_INDEX});
if( rc != RC_NRM ){
PFM_ERR("ComBuf 삭제 오류입니다 rc[%ld]",rc);
return RC_ERR;
}/* ComBuf의 특정한 item 항목을 삭제할 경우에 사용한다 */
${COMBUF_STRUCTURE} *${COMBUF_STURCTURE_POINT};
${COMBUF_STURCTURE_POINT} = pfmCbGetItem(${COMBUF_INDEX});
if( ${COMBUF_STURCTURE_POINT} == NULL ){
PFM_ERR("ComBuf 포인터 리턴 오류입니다 rc[%ld]",rc);
return RC_ERR;
}/* ComBuf의 특정한 item 항목의 크기를 알고자 할 경우에 사용한다. 개발자가 사용할 필요가 없다. */
rc = pfmCbGetItemSize(${COMBUF_INDEX});
if( rc == RC_ERR ){
PFM_ERR("ComBuf 사이즈 반환 오류 rc[%ld]",rc);
return RC_ERR;
}
/* rc 값은 컴버퍼의 크기 */
/* ComBuf에 공간 할당 및 데이터 세팅 */
rc = pfmCbSetItem(${COMBUF_INDEX}, ${INPUTDATA}, sizeof(${SIZEOFCOMBUFF}) ); /* INPUTDATA를 NULL로 설정하면 공간만 확보하고 값은 추후 할당가능 */
if( rc != RC_NRM ){
PFM_ERR("ComBuf 항목생성 오류입니다 rc[%ld]",rc);
return RC_ERR;
}/* ComBuf에 item항목을 추가할 경우에 사용한다 */
rc = pfmCbSetItemBuff(${COMBUF_INDEX}, ${INPUTDATA}, sizeof(${SIZEOFCOMBUFF}) );
if( rc != RC_NRM ){
PFM_ERR("ComBuf 추가 오류입니다 rc[%ld]",rc);
return RC_ERR;
}/* 시작일과 종료일 사이의 일수, 월수 산출 */
rc = pfmCountDays(&${pfmDateCountNumberOfDaysIO});
/* pfmDateCountNumberOfDaysIO.out.mm_cnt : 계산된 월수 */
/* pfmDateCountNumberOfDaysIO.out.dd_cnt : 계산된 일수 */
if (rc != RC_NRM ) {
PFM_ERR("pfmCountDays : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}
/* 시작일과 종료일 사이의 일수 월수 산출 */
PfmDateCountDateIO ${pfmDateCountNumberOfDaysIO};
bzero(&${pfmDateCountNumberOfDaysIO}, sizeof(PfmDateCountDateIO));
STRNCPY(${pfmDateCountNumberOfDaysIO}.in.beg_date, ${beg_date}); /* YYYYMMDD형식입력 */
STRNCPY(${pfmDateCountNumberOfDaysIO}.in.end_date, ${end_date});
${pfmDateCountNumberOfDaysIO}.in.out_type = ${word_selection}${PFM_CNT_DAYS_OUT_MMDD};
/* 출력방식 셋팅 */
/* PFM_CNT_DAYS_OUT_MMDD : 월과 일로 계산 */
/* PFM_CNT_DAYS_OUT_DD : 일수로만 계산 */
${pfmDateCountNumberOfDaysIO}.in.calc_type = ${word_selection}${PFM_CNT_DAYS_CALC_ONE};
/* 계산법 셋팅 */
/* PFM_CNT_DAYS_CALC_ONE : 한편넣기 */
/* PFM_CNT_DAYS_CALC_BOTH : 양편넣기 */
rc = pfmCountDays(&${pfmDateCountNumberOfDaysIO});
/* 결과값 출력 변수 */
/* ${pfmDateCountNumberOfDays_io}.out.mm_cnt : 계산된 월수(long) */
/* ${pfmDateCountNumberOfDays_io}.out.dd_cnt : 계산된 일수(long) */
if (rc != RC_NRM ) {
PFM_ERR("pfmCountDays : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}${cursor}
char ${date_name} [LEN_DATE + 1]; /* yyyymmdd */
bzero (${date_name}, LEN_DATE + 1);/* 두 일자의 선후비교 */
rc = pfmDateCmp(${date1}, ${date2}); /* YYYYMMDD 형태입력 */
/* < 0 : date1 < date2 */
/* 0 : date1 == date2 */
/* > 0 : date1 > date2 *//* 날짜 포매팅 */
rc = pfmDateFormat(${out_date}, "${format_set}", ${in_date});
/* yyyy 년도 4자리 */
/* yy 년도 2자리 */
/* mm 월 2자리 */
/* dd 일 2자리 */
/* mon 월을 나타내는 3자리 영문(소문자) */
/* MON 월을 나타내는 3자리 영문(대문자) */
if (rc != RC_NRM ) {
PFM_ERR("pfmDateFormat : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}
pfmDateGetErrorMsg()rc = pfmDbioCloseCursor("${mapId}");
/* Cursor close */
if(rc != RC_NRM) {
PFM_ERR("Error Code [%d]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioCloseCursor() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
return rc;
}rc = pfmDbioCloseCursorArray(${mapId});
/* Cursor close */
if(rc != RC_NRM) {
PFM_ERR("Error Code [%d]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioCloseCursorArray() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
return rc;
}rc = pfmDbioCloseCursorBundle(${mapId});
/* Cursor close */
if(rc != RC_NRM) {
PFM_ERR("Error Code [%d]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioCloseCursorBundle() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
return rc;
}rc = pfmDbioCommit();
/* DBIO commit */
if(rc != RC_NRM) {
PFM_ERR("pfmDbioCommit() : %s rc : [%ld] commit 실패", pfmDbioGetErrMsg(), rc);
return rc;
}/* DB에 연결 값을 입력하지 않으면 $$CONNECT_INFO의 환경변수를 이용하여 접속 */
rc = pfmDbioConnect("${word_selection}${}");
if(rc != RC_NRM) {
PFM_ERR("pfmDbioConnect() : %s rc : [%ld] DB 연결 실패", pfmDbioGetErrMsg(), rc);
return rc;
}rc = pfmDbioDeleteCursor("${mapId}"); /* delete ~ where current of */
/* fetch로 받아온 데이터를 Delete */
if(rc != RC_NRM) {
PFM_ERR("Error Code [%d]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioDeleteCursor() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
return rc;
}
rc = pfmDbioDisconnect();
/* 현재 연결되어있는 DB연결 세션을 종료 */
if(rc != RC_NRM) {
PFM_ERR("pfmDbioDisconnect() : %s rc : [%ld] DB 연결 종료 실패", pfmDbioGetErrMsg(), rc);
return rc;
}rc = pfmDbioDml("${mapId}", &${inStruct}, NULL, NULL);
/* Insert용 에러 처리 */
if(rc != RC_NRM) {
if(rc == RC_DUP) { /* Unique Constraint Violated Error */
PFM_ERR("pfmDbioDml() : %s rc : [%ld] 이미 같은 Primary Key가 존재", pfmDbioGetErrMsg(), rc);
}
else { /* 기타 다른 Error (rc = RC_ERR) */
PFM_ERR("Error Code [%d]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioDml() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
}
return rc;
}rc = pfmDbioDml("${mapId}", &${inStruct}, NULL);
/* Insert용 에러 처리 */
if(rc != RC_NRM) {
if(rc == RC_NFD) { /* Unique Constraint Violated Error */
PFM_ERR("pfmDbioDml() : %s rc : [%ld] 해당 조건에 맞는 data가 없습니다.", pfmDbioGetErrMsg(), rc);
}
else { /* 기타 다른 Error (rc = RC_ERR) */
PFM_ERR("Error Code [%d]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioDml() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
}
return rc;
}rc = pfmDbioDmlArray("${mapId}",${cnt},&${inStructBundle},${clauseStruct}, ${flag}); /* array of structure */
/* flag : PFMDBIO_LOCK PFMDBIO_LOCK_NOWAIT PFMDBIO_NOLOCK */
/* Array는 array of structure를 처리하기 위해 생성되는 구조체 */
if(rc != RC_NRM) {
if(rc == RC_DUP) {
PFM_ERR("[%ld]건이 data가 insert 되었습니다.", pfmDbioGetRecordCount()); /* update/delete 선택 */
}
else {
PFM_ERR("Error Code [%d]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioDmlArray() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
return rc;
}
}
rc = pfmDbioDmlArray("${mapId}",${cnt},&${inStructBundle},${clauseStruct}, ${flag}); /* structure of array */
/* flag : PFMDBIO_LOCK PFMDBIO_LOCK_NOWAIT PFMDBIO_NOLOCK */
/* Bundle은 Array of structure를 처리하기 위해 생성되는 구조체 */
if(rc != RC_NRM) {
if(rc == RC_NFD) {
PFM_ERR("[%ld]건이 data가 ${UpdateOrDelete} 되었습니다.", pfmDbioGetRecordCount()); /* update/delete 선택 */
}
else {
PFM_ERR("Error Code [%ld]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioDmlArray() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
return rc;
}
}
rc = pfmDbioDmlBundle("${mapId}",${cnt},&${inStructBundle},${clauseStruct}, ${flag}); /* structure of array */
/* flag : PFMDBIO_LOCK PFMDBIO_LOCK_NOWAIT PFMDBIO_NOLOCK */
/* Bundle은 structure of array를 처리하기 위해 생성되는 구조체 */
if(rc != RC_NRM) {
if(rc == RC_DUP) {
PFM_ERR("[%ld]건이 data가 insert 되었습니다.", pfmDbioGetRecordCount()); /* update/delete 선택 */
}
else {
PFM_ERR("Error Code [%d]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioDmlBundle() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
return rc;
}
}
rc = pfmDbioDmlBundle("${mapId}",${cnt},&${inStructBundle},${clauseStruct}, ${flag}); /* structure of array */
/* flag : PFMDBIO_LOCK PFMDBIO_LOCK_NOWAIT PFMDBIO_NOLOCK */
/* Bundle은 Array of structure를 처리하기 위해 생성되는 구조체 */
if(rc != RC_NRM) {
if(rc == RC_NFD) {
PFM_ERR("[%ld]건이 data가 ${UpdateOrDelete} 되었습니다.", pfmDbioGetRecordCount()); /* update/delete 선택 */
}
else {
PFM_ERR("Error Code [%ld]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioDmlBundle() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
return rc;
}
}
rc = pfmDbioFetchCursor("${mapId}", &${outStruct});
/* fetch */
if(rc != RC_NRM) {
if(rc == RC_NFD) {
PFM_ERR("조건을 만족하는 data가 없습니다.");
}
else { /* RC_ERR */
PFM_ERR("Error Code[%d]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioFetchCursor() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
pfmDbioCloseCursor("${mapId}");
return rc;
}
}pfmDbioGetErrMsg()pfmDbioGetErrNo()pfmDbioGetLastSql()pfmDbioGetProcRowsCnt()rc = pfmDbioOpenCursor("${mapId}", &${inStruct}, ${clauseStruct}, ${flag});
/* flag : PFMDBIO_LOCK PFMDBIO_LOCK_NOWAIT PFMDBIO_NOLOCK */
if(rc != RC_NRM) {
PFM_ERR("Error Code [%d]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioOpenCursor() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
return rc;
}rc = pfmDbioOpenCursorArray("${mapId}", &${inStruct}, ${clauseStruct}, ${flag});
/* flag : PFMDBIO_LOCK PFMDBIO_LOCK_NOWAIT PFMDBIO_NOLOCK */
if(rc != RC_NRM) {
PFM_ERR("Error Code [%d]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioOpenCursorBundle() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
return rc;
}
rc = pfmDbioOpenCursorBundle("${mapId}", &${inStruct}, ${clauseStruct}, ${flag});
/* flag : PFMDBIO_LOCK PFMDBIO_LOCK_NOWAIT PFMDBIO_NOLOCK */
if(rc != RC_NRM) {
PFM_ERR("Error Code [%d]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioOpenCursorBundle() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
return rc;
}
/* DBIO rollback */
rc = pfmDbioRollback();
if(rc != RC_NRM) {
PFM_ERR("pfmDbioRellback() : %s rc : [%ld] rollback 실패", pfmDbioGetErrMsg(), rc);
return rc;
}
/* DB 설정된 Save point로 RollBack */
rc = pfmDbioRollbackTo("${save_point}");
if(rc != RC_NRM) {
PFM_ERR("pfmDbioRollbackTo() : %s rc : [%ld] savepoint로의 Rollback 실패", pfmDbioGetErrMsg(), rc);
return rc;
}
rc = pfmDbioSelect("${mapId}", &${inStruct}, &${outStruct}, &${clause}, ${flag});
/* flag : PFMDBIO_LOCK PFMDBIO_LOCK_NOWAIT PFMDBIO_NOLOCK */
if(rc != RC_NRM) {
if(rc == RC_NFD) { /* No Data Found */
PFM_ERR("조건을 만족시키는 data가 없습니다.");
}
else { /* 기타 다른 Error(rc == RC_ERR) */
PFM_ERR("Error Code [%d]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioOpenCursor() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
}
return rc;
}
rc = pfmDbioSelectArray("${mapId}", ${cnt}, &${inStruct}, &${outStructBundle}, ${clauseStruct}, ${flag}); /* array of struct*/
/* flag : PFMDBIO_LOCK PFMDBIO_LOCK_NOWAIT PFMDBIO_NOLOCK */
/* Array는 array of struct 를 처리하기 위해 생성되는 구조체 */
if(rc != RC_NRM) {
if(rc == RC_NFD) {
if(pfmDbioGetRecordCount() == 0) { /* data가 한 건도 없는 경우 */
PFM_ERR("조건을 만족하는 data가 없습니다.");
return rc;
{
}
else { /* 기타 다른 Error (rc == RC_ERR) */
PFM_ERR("Error Code [%d]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioSelectArray() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
return rc;
}
}
rc = pfmDbioSelectBundle("${mapId}", ${cnt}, &${inStruct}, &${outStructBundle}, ${clauseStruct}, ${flag}); /* struct of array */
/* flag : PFMDBIO_LOCK PFMDBIO_LOCK_NOWAIT PFMDBIO_NOLOCK */
/* Bundle은 structure of array를 처리하기 위해 생성되는 구조체 */
if(rc != RC_NRM) {
if(rc == RC_NFD) {
if(pfmDbioGetRecordCount() == 0) { /* data가 한 건도 없는 경우 */
PFM_ERR("조건을 만족하는 data가 없습니다.");
return rc;
{
}
else { /* 기타 다른 Error (rc == RC_ERR) */
PFM_ERR("Error Code [%d]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioSelectBundle() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
return rc;
}
}
/* DB save point 설정 */
rc = pfmDbioSetSavePoint("${save_point}");
if(rc != RC_NRM) {
PFM_ERR("pfmDbioSetSavePoint() : %s rc : [%ld] savepoint 설정 실패", pfmDbioGetErrMsg(), rc);
return rc;
}
rc = pfmDbioUpdateCursor("${mapId}", &${outStruct});
/* fetch로 받아온 데이터를 Update */
if(rc != RC_NRM) {
PFM_ERR("Error Code [%d]", pfmDbioGetErrNo());
PFM_ERR("pfmDbioUpdateCursor() : %s rc : [%ld]", pfmDbioGetErrMsg(), rc);
return rc;
}
/* yyyymmdd 형태의 시스템 현재 날짜 */
rc = pfmGetDate(${_date});
/* date[LEN_DATE + 1]의 공간 필요 */
if (rc != RC_NRM ) {
PFM_ERR("현재 날짜 오류 : %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
}/* yyymmddhhmmss형태의 날짜시간 문자열 */
rc = pfmGetDateTime(${dtime});
/* dtime[LEN_UTIME + 1]의 공간필요] */
if (rc != RC_NRM ) {
PFM_ERR("pfmDateCurrentDateTime : %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
}/* yyyymmddhhmmssuuuuuu형태의 날짜시간 문자열 */
rc = pfmGetDateUTime(${dutime});
/* dutime[LEN_UTIME + 1]이상 공간필요 */
if (rc != RC_NRM ) {
PFM_ERR("pfmGetDateUTime : %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
}pfmGetErrorCode()pfmGetErrorCount()pfmGetErrorFileName()pfmGetErrorFunctionName()pfmGetErrorLineNo()pfmGetErrorMsg()pfmGetErrorReturnCode()pfmGetErrorServiceName()/* 그 해 2월의 마지막 일자(28 or 29) */
rc = pfmGetLastDayFebruary(${in_year}); /* long형 정수로 년도입력 */
/* 그 해 2월의 마지막 일자(28 or 29) */
if (rc == RC_ERR ) {
PFM_ERR("pfmGetLastDayFebruary : %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
}
/* 윤년인 경우 rc = 29 */
/* normal year rc = 28 */PfmGetReplyInf pfmGetReplyInf;
bzero(&pfmGetReplyInf, sizeof(PfmGetReplyInf));
/* Asyn의 결과를 받아오는 소스생성 */
/* tpacall 수행후 cd 값을 local에 저장 */
pfmGetReplyInfo.cd = pfmSMLinkGetASyncCallDesc();
if( cd == -1) {
PFM_ERR("Get ACall Descripter Error !!" );
}
pfmGetReplyInf.output = &output;
pfmDLCall2("pfmServiceModuleExt", "pfmServiceModuleCallGetReply", &pfmGetReplyInf);PfmGetReplyInf pfmGetReplyInf;
bzero(&pfmGetReplyInf, sizeof(PfmGetReplyInf));
/* Asyn의 결과를 받아오는 소스생성 */
/* tpacall 수행후 cd 값을 local에 저장 */
pfmGetReplyInfo.cd = pfmSMLinkGetASyncCallDesc();
if( cd == -1) {
PFM_ERR("Get ACall Descripter Error !!" );
}
pfmGetReplyInf.output = &output;
pfmDLCall2("pfmServiceModuleExt", "pfmServiceModuleCallGetReply", &pfmGetReplyInf);/* 현재 시스템 시간 hhmmss */
rc = pfmGetTime(${_time});
if (rc != RC_NRM ) {
PFM_ERR(" 현재 시간 오류 : %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
}pfmGetTryCalleeName()pfmGetTryCallerName()pfmGetTryFileName()pfmGetTryLineNo()pfmGetTryReturnCode()/* hhmmssuuuuuu 형태의 현재 시간 문자열 */
rc = pfmGetUTime(${utime});
/* utime[LEN_UTIME + 1]의 공간필요*/
if (rc != RC_NRM ) {
PFM_ERR("pfmGetUTime : %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
}/* 입력받은 날짜의 요일을 나타내는 숫자 */
rc = pfmGetWeekDay(&${wday}, ${in_date});
if (rc != RC_NRM ) {
PFM_ERR("pfmGetWeekDay : %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
}
/* 계산된 요일INDEX는 ${wday} *//* 그레고리언일자를 율리우스일자로 변환 */
rc = pfmGregorianToJulian(${jul_date}, ${grg_date}, ${base_year});
if (rc != RC_NRM ) {
PFM_ERR("pfmGregorianToJulian : %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
}pfmInitError(); /* 에러메세지 클리어 *//* 윤년체크 */
rc = pfmIsLeapYear(${in_year}); /* long 정수로 년도입력 */
/* rc == TRUE : 윤년 */
/* rc == FASLE : 평년 */
/* YYYYMMDD포멧의 문자열을 입력받아 정합성 체크 */
rc = pfmIsValidDate(${in_date}); /* YYYYMMDD */
if (rc == FALSE) {
PFM_ERR("날짜정합성 오류 %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
}
/* TRUE legal case */
/* FALSE illegal case */
/* hhmmss 포맷의 문자열을 입력받아 시간 정합성 체크 */
rc = pfmIsValidTime(${in_time}); /* HHMMSS */
if (rc == FALSE) {
PFM_ERR("시간 정합성 오류 : %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
}
/* TRUE legal case */
/* FALSE illegal case */
/* 연도의 정합성을 체크 */
rc = pfmIsValidYear(${in_year}); /* long 형 정수로 년도입력 */
if (rc == FALSE) {
PFM_ERR("연도의 정합성 오류~! 입력년도:[%s] 에러메시지:[%s] rc:[%ld]", ${in_year}, pfmDateGetErrorMsg(), rc);
return RC_ERR;
}
/* FALSE (in_year < 1900 || in_year > 9999) */
/* TRUE Otherwise *//* 율리우스일자를 그레고리언일자로 변환 */
rc = pfmJulianToGregorian(${grg_date}, ${jul_date}, ${base_year});
if (rc != RC_NRM ) {
PFM_ERR("pfmJulianToGregorian : %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
}
pfmLogClearBuffer(); /* 에러/정상 메시지 모두 클리어 */pfmLogClearError(); /* 에러메시지 클리어 */pfmLogClearMessage(); /* 정상메시지 클리어 *//* long형 수를 문자열로 변환 */
rc = pfmLongToStrn(${out_str}, ${long_num}, ${buf_size});
if(rc == RC_ERR) {
PFM_ERR("pfmLongToStrn : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* long형 수를 문자열로 변환하고 남은 부분 '0' */
rc = pfmLongToStrnLpadZero(${out_str}, ${long_num}, ${buf_size});
if(rc == RC_ERR) {
PFM_ERR("pfmLongToStrnLpadZero : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* 음력을 양력일자로 변환 *//* 음력일의 표현 변수(lunar_date)의 길이는 (LENDATE + 1) 9이여하 한다. */
rc = pfmLunarToSolar(${solar_date}, ${lunar_date}); /* 입력 음력일은 0과1로 평달 윤달을 구분해 주어야 함 ex) 0YYYYMMDD */
/* 입력값의 첫번째 비트는 윤달여부 표시 0이면 평달,1이면 윤달 */
/* 음력을 양력일자로 변환 */
if (rc != RC_NRM ) {
PFM_ERR("pfmLunarToSolar : %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
}
/* 계산된 양력일자 ${solar_date} *//* 구조체 복사 */
rc = pfmMapperDuplicateStruct("${structName}", ${sourceStructPtr}, &${targetStructPtr});
/* Structure 복사 */
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperDuplicateStruct() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}
/* marshal 등의 과정으로 만들어진 Message의 메모리를 해제 */
rc = pfmMapperFreeMessage("${structName}", ${messageType}, ${messagePtr});
/* marshal 등의 과정으로 만들어진 Message의 메모리를 해제 */
/* Message Type (MessageType을 넣지 않아도 되는 type별 메모리 해제 함수 존재)
MESSAGE_FIXEDLENGTH : 고정길이 stream 전문일 때 MESSAGE_DELIMITER : delimiter stream 전문일 때
MESSAGE_XML : XML 전문일 때 MESSAGE_VALUEOBJECT : VO 전문일 때
MESSAGE_NAMEVALUE : FDL 전문일 때 */
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperFreeMessage() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* delimiter stream 전문일 때 만들어진 Message 메모리 해제 */
rc = pfmMapperFreeMessageDelimiter("${structName}", ${messagePtr});
/* delimiter stream 전문일 때 만들어진 Message 메모리 해제 */
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperFreeMessageDelimiter() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* 고정길이 stream 전문일 때 만들어진 Message 메모리 해제 */
rc = pfmMapperFreeMessageFixedLength("${structName}", ${messagePtr});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperFreeMessageFixedLength() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* FDL 전문일 때 만들어진 Message 메모리 해제 */
rc = pfmMapperFreeMessageNameValue("${structName}", ${messagePtr});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperFreeMessageNameValue() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* VO 전문일 때 만들어진 Message 메모리 해제 */
rc = pfmMapperFreeMessageValueObject("${structName}", ${messagePtr});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperFreeMessageValueObject() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* XML 전문일 때 만들어진 Message 메모리 해제 */
rc = pfmMapperFreeMessageXML("${structName}", ${messagePtr});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperFreeMessageXML() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* 구조체의 메모리 해제 */
rc = pfmMapperFreeStruct("${structName}", ${structPtr});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperFreeStruct() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* pfmMapperUnmarshalNoAlloc 로 만들어진 구조체 메모리 해제 */
rc = pfmMapperFreeStructNoAlloc("${structName}", ${structPtr});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperFreeStructNoAlloc() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}pfmMapperGetError(${getErrorStringPoint})/* Structure 간의 mapping 함수 N:M mapping 지원 */
rc = pfmMapperMapping("${mapName}", ${word_selection}${var_args}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperMapping() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* Structure --> Message 변환 함수 */
rc = pfmMapperMarshal("${structName}", ${messageType}, ${structPtr}, &${messagePtr}, &${messageLen}, ${messageInfo});
/* Message Type (MessageType을 넣지 않아도 되는 type별 함수 있음)
MESSAGE_FIXEDLENGTH : 고정길이 stream 전문일 때 MESSAGE_DELIMITER : delimiter stream 전문일 때
MESSAGE_XML : XML 전문일 때 MESSAGE_VALUEOBJECT : VO 전문일 때
MESSAGE_NAMEVALUE : FDL 전문일 때 */
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperMarshal() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* delimiter stream 전문일 때 Structure --> Message 변환 함수 */
rc = pfmMapperMarshalDelimiter("${structName}", ${structPtr}, &${messagePtr}, &${messageLen}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperMarshalDelimiter() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* 고정길이 stream 전문일 때 Structure --> Message 변환 함수*/
rc = pfmMapperMarshalFixedLength("${structName}", ${structPtr}, &${messagePtr}, &${messageLen}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperMarshalFixedLength() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* FDL 전문일 때 Structure --> Message 변환 함수 */
rc = pfmMapperMarshalNameValue("${structName}", ${structPtr}, &${messagePtr}, &${messageLen}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperMarshalNameValue() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* Structure --> Message 사용자버퍼할당 */
rc = pfmMapperMarshalNoAlloc("${structName}", ${messageType}, ${structPtr}, &${messagePtr}, &${messageLen}, ${messageInfo});
/* Message Type (MessageType을 넣지 않아도 되는 type별 함수 있음)
MESSAGE_FIXEDLENGTH : 고정길이 stream 전문일 때 MESSAGE_DELIMITER : delimiter stream 전문일 때
MESSAGE_XML : XML 전문일 때 MESSAGE_VALUEOBJECT : VO 전문일 때
MESSAGE_NAMEVALUE : FDL 전문일 때 */
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperMarshalNoAlloc() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* delimiter stream 전문일 때 Structure --> Message 사용자버퍼할당 */
rc = pfmMapperMarshalNoAllocDelimiter("${structName}", ${structPtr}, &${messagePtr}, &${messageLen}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperMarshalNoAllocDelimiter() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* 고정길이 stream 전문일 때 Structure --> Message 사용자버퍼할당 */
rc = pfmMapperMarshalNoAllocFixedLength("${structName}", ${structPtr}, &${messagePtr}, &${messageLen}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperMarshalNoAllocFixedLength() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* FDL 전문일 때 Structure --> Message 사용자버퍼할당 */
rc = pfmMapperMarshalNoAllocNameValue("${structName}", ${structPtr}, &${messagePtr}, &${messageLen}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperMarshalNoAllocNameValue() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* VO 전문일 때 Structure --> Message 사용자버퍼할당 */
rc = pfmMapperMarshalNoAllocValueObject("${structName}", ${structPtr}, &${messagePtr}, &${messageLen}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperMarshalNoAllocValueObject() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* XML 전문일 때 Structure --> Message 사용자버퍼할당 */
rc = pfmMapperMarshalNoAllocXML("${structName}", ${structPtr}, &${messagePtr}, &${messageLen}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperMarshalNoAllocXML() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* VO 전문일 때 Structure --> Message 변환 함수 */
rc = pfmMapperMarshalValueObject("${structName}", ${structPtr}, &${messagePtr}, &${messageLen}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperMarshalValueObject() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* XML 전문일 때 Structure --> Message 변환 함수 */
rc = pfmMapperMarshalXML("${structName}", ${structPtr}, &${messagePtr}, &${messageLen}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperMarshalXML() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* 구조체 메모리 공간을 새로 생성 */
rc = pfmMapperNewStruct("${structName}", &${targetStructPtr});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperNewStruct() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* 맵명은 DBIO의 물리명 */
pfmMapperPrint${맵명}In(&${DBIO입력구조체});
/* 맵명은 DBIO의 물리명 */
pfmMapperPrint${맵명}Out(&${DBIO출력구조체});
/* 모듈명은 모듈의 물리명 */
pfmMapperPrint${모듈명}_in(&${모듈입력구조체});
/* 모듈명은 모듈의 물리명 */
pfmMapperPrint${모듈명}_out(&${모듈출력구조체});
/* 서비스명은 서비스모듈의 물리명 */
pfmMapperPrint${서비스명}_IN(SVCIN);
/* 서비스명은 서비스모듈의 물리명 */
pfmMapperPrint${서비스명}_OUT(SVCOUT);
/* ProFrame의 메모리관리기능 사용 free */
proMapperRegisterFreeCallback(${proMapperFree});
/* 본 함수 사용전에 ProMapper C API문서 참조바람 */
/* ${proMapperFree} : free 수행하는 function pointer */
/* ProFrame의 메모리관리기능 사용 malloc */
proMapperRegisterMallocCallback(${proMapperMalloc});
/* 본 함수 사용전에 ProMapper C API문서 참조바람 */
/* ${proMapperMalloc} : malloc 수행하는 function pointer */
/* ProFrame의 메모리 관리기능 사용 realloc */
proMapperRegisterReallocCallback(${proMapperRealloc});
/* 본 함수 사용전에 ProMapper C API문서 참조바람 */
/* ${proMapperRealloc} : realloc 수행하는 function pointer */
/* marshal(Structure-> Message) 했을 때 길이를 return */
rc = pfmMapperSizeMessage("${structName}",${messageType}, ${structPtr}, ${messageInfo});
/* Message Type (MessageType을 넣지 않아도 되는 type별 함수 있음)
MESSAGE_FIXEDLENGTH : 고정길이 stream 전문일 때 MESSAGE_DELIMITER : delimiter stream 전문일 때
MESSAGE_XML : XML 전문일 때 MESSAGE_VALUEOBJECT : VO 전문일 때
MESSAGE_NAMEVALUE : FDL 전문일 때 */
if(rc < 0) {
PFM_ERR("pfmMapperSizeStruct() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* delimiter stream 전문일 때 marshal(Structure-> Message) 했을 때 길이를 return */
rc = pfmMapperSizeMessageDelimiter("${structName}", ${structPtr}, ${messageInfo});
if(rc < 0) {
PFM_ERR("pfmMapperSizeMessageDelimiter() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* 고정길이 stream 전문일 때 marshal(Structure-> Message) 했을 때 길이를 return */
rc = pfmMapperSizeMessageFixedLength("${structName}", ${structPtr}, ${messageInfo});
if(rc < 0) {
PFM_ERR("pfmMapperSizeMessageFixedLength() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* FDL 전문일 때 marshal(Structure-> Message) 했을 때 길이를 return */
rc = pfmMapperSizeMessageNameValue("${structName}", ${structPtr}, ${messageInfo});
if(rc < 0) {
PFM_ERR("pfmMapperSizeMessageNameValue() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* VO 전문일 때 marshal(Structure-> Message) 했을 때 길이를 return */
rc = pfmMapperSizeMessageValueObject("${structName}", ${structPtr}, ${messageInfo});
if(rc < 0) {
PFM_ERR("pfmMapperSizeMessageValueObject() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* XML 전문일 때 marshal(Structure-> Message) 했을 때 길이를 return */
rc = pfmMapperSizeMessageXML("${structName}", ${structPtr}, ${messageInfo});
if(rc < 0) {
PFM_ERR("pfmMapperSizeMessageXML() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* rc : 해당 structure의 크기 */
rc = pfmMapperSizeStruct("${structName}");
if(rc < 0) {
PFM_ERR("pfmMapperSizeStruct() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* Message --> Structure 변환 */
rc = pfmMapperUnmarshal("${structName}", ${messageType}, ${messagePtr}, ${messageLen}, &${structPtr}, ${structLen}, ${messageInfo});
/* Message Type (MessageType을 넣지 않아도 되는 type별 함수 존재)
MESSAGE_FIXEDLENGTH : 고정길이 stream 전문일 때 MESSAGE_DELIMITER : delimiter stream 전문일 때
MESSAGE_XML : XML 전문일 때 MESSAGE_VALUEOBJECT : VO 전문일 때
MESSAGE_NAMEVALUE : FDL 전문일 때 */
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperUnmarshal() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* delimiter stream 전문일 때 Message --> Structure */
rc = pfmMapperUnmarshalDelimiter("${structName}", ${messagePtr}, ${messageLen}, &${structPtr}, ${structLen}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperUnmarshalDelimiter() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* 고정길이 stream 전문일 때 Message --> Structure */
rc = pfmMapperUnmarshalFixedLength("${structName}", ${messagePtr}, ${messageLen}, &${structPtr}, ${structLen}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperUnmarshalFixedLength() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* FDL 전문일 때 Message --> Structure */
rc = pfmMapperUnmarshalNameValue("${structName}", ${messagePtr}, ${messageLen}, &${structPtr}, ${structLen}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperUnmarshalNameValue() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* Message->Structure 사용자가 버퍼를 할당 */
rc = pfmMapperUnmarshalNoAlloc("${structName}", ${messageType}, ${messagePtr}, ${messageLen}, &${structPtr}, ${messageInfo});
/* Message Type (MessageType을 넣지 않아도 되는 type별 함수 존재)
MESSAGE_FIXEDLENGTH : 고정길이 stream 전문일 때 MESSAGE_DELIMITER : delimiter stream 전문일 때
MESSAGE_XML : XML 전문일 때 MESSAGE_VALUEOBJECT : VO 전문일 때
MESSAGE_NAMEVALUE : FDL 전문일 때 */
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperUnmarshalNoAlloc() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}
/* delimiter stream 전문일 때 Message --> Structure 사용자가 버퍼를 할당 */
rc = pfmMapperUnmarshalNoAllocDelimiter("${structName}", ${messagePtr}, ${messageLen}, &${structPtr}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperUnmarshalNoAllocDelimiter() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}
/* 고정길이 stream 전문일 때 Message --> Structure 사용자가 버퍼를 할당 */
rc = pfmMapperUnmarshalNoAllocFixedLength("${structName}", ${messagePtr}, ${messageLen}, &${structPtr}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperUnmarshalNoAllocFixedLength() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}
/* FDL 전문일 때 Message --> Structure 사용자가 버퍼를 할당 */
rc = pfmMapperUnmarshalNoAllocNameValue("${structName}", ${messagePtr}, ${messageLen}, &${structPtr}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperUnmarshalNoAllocNameValue() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}
/* VO 전문일 때 Message --> Structure 사용자가 버퍼를 할당 */
rc = pfmMapperUnmarshalNoAllocValueObject("${structName}", ${messagePtr}, ${messageLen}, &${structPtr}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperUnmarshalNoAllocValueObject() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}
/* XML 전문일 때 Message --> Structure 사용자가 버퍼를 할당 */
rc = pfmMapperUnmarshalNoAllocXML("${structName}", ${messagePtr}, ${messageLen}, &${structPtr}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperUnmarshalNoAllocXML() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}
/* VO 전문일 때 Message --> Structure */
rc = pfmMapperUnmarshalValueObject("${structName}", ${messagePtr}, ${messageLen}, &${structPtr}, ${structLen}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperUnmarshalValueObject() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* XML 전문일 때 Message --> Structure */
rc = pfmMapperUnmarshalXML("${structName}", ${messagePtr}, ${messageLen}, &${structPtr}, ${structLen}, ${messageInfo});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmMapperUnmarshalXML() : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}PFMNUM_ONE PFMNUM_ZERO/* V = |X| */
rc = pfmNumAbs(&${out_num}, ${in_num});${cursor}
if (rc != RC_NRM ) {
PFM_ERR("pfmNumAbs : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}
/* V = X + Y */
rc = pfmNumAdd(&${out_num},${in_num1},${in_num2});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumAdd : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}/* V = X + Y, Y는 long형 */
rc = pfmNumAddLong(&${out_num}, ${in_num}, ${in_long_num});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumAddLong : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}/* V = X + ... */
rc = pfmNumAddN(${num_count}, &${out_num}, ${in_number}, ${word_selection}${} );
if (rc != RC_NRM ) {
PFM_ERR("pfmNumAddN : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}/* V = X + str , str은 숫자로 인식 */
rc = pfmNumAddStr(&${out_num}, ${in_num}, ${in_str});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumAddStr : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}/* V = X */
rc = pfmNumAssign(&${out_num}, ${in_num});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumAssign : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}PfmNumber ${number} = PFMNUM_ZERO;${cursor}/* 사칙연산 */
rc = pfmNumCalc(&${out_num}, "${frmt}", ${word_selection});
/* long형 : %ld , 문자형 : %s, Number형 : %n */
if (rc != RC_NRM ) {
PFM_ERR("pfmNumCalc : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}
/* 사칙연산 long값 출력 */
rc = pfmNumCalcLong(&${out_long_num}, "${frmt}", ${word_selection}${});
/* long형 : %ld , 문자형 : %s, Number형 : %n */
if (rc != RC_NRM ) {
PFM_ERR("pfmNumCalcLong : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}
pfmNumCmp(${in_num1}, ${in_num2})${cursor}
if(pfmNumCmp(${in_num1}, ${in_num2}) == 0) {
/* 0 : num1 == num2
> 0 : num1 > num2
< 0 : num1 < num2 */${cursor}
}
pfmNumCmpAbs(${in_num1}, ${in_num2})${cursor}/* 두 수의 절대값 비교 */
if(pfmNumCmpAbs(${in_num1}, ${in_num2}) == 0) {
/* 0 : |num1| == |num2|
> 0 : |num1| > |num2|
< 0 : |num1| < |num2| */${cursor}
}pfmNumCmpLong(${in_num}, ${in_long_num})${cursor}
/*PfmNumber형과 long 형의 값 비교 */
if(pfmNumCmpLong(${in_num}, ${in_long_num}) == 0) {
/* 0 : num == long_num
> 0 : num > long_num
< 0 : num < long_num */
${cursor}
}
pfmNumCmpStr(${in_num}, ${in_str})if(pfmNumCmpStr(${in_num}, ${in_str}) == 0) {
/* 0 : num == str
> 0 : num > str
< 0 : num < str */${cursor}
}pfmNumCmpStrn(${in_num}, ${in_str}, ${length})${cursor}if(pfmNumCmpStrn(${in_num}, ${in_str}, ${length}) == 0) {
/* 0 : num == str
> 0 : num > str
< 0 : num < str */${cursor}
}/* V = V - X */
rc = pfmNumDec(&${out_num}, ${in_num});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumDec : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}/* V = X / Y */
rc = pfmNumDiv(&${out_num}, ${in_num1},${in_num2});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumDiv : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}/* V = X + Y, Y는 long형 */
rc = pfmNumDivLong(&${out_num}, &{in_num}, ${in_long_num});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumDivLong : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}/* V = X / str , str은 숫자로 인식 */
rc = pfmNumDivString(&${out_num}, ${in_num}, ${in_str});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumDivString : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}pfmNumFindLocationOfLeastSignificantDigit(${in_num})pfmNumGetErrorMsg()/* long형 값을 PfmNumber형으로 변환 */
rc = pfmNumGetFromLong(&${out_num}, ${in_long_num});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumGetFromLong : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* 문자열을 PfmNumber 형으로 변환 */
rc = pfmNumGetFromStr(&${out_num},${in_str});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumGetFromStr : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* 길이문자열을 PfmNumber 형으로 변환 */
rc = pfmNumGetFromStrn(&${out_num}, ${in_str}, sizeof(${in_length}));
if (rc != RC_NRM ) {
PFM_ERR("pfmNumGetFromStrn : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}
/* 문자열오 변환, 우정렬되며 앞을 0으로 채움 */
rc = pfmNumGetStrLPadZeroN(${out_str}, ${in_num}, ${length});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumGetStrLPadZeroN : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* V = V + X */
rc = pfmNumInc(&${out_num}, ${in_num});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumInc : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* V = X / Y , V는 정수 값 ex) 7/2 = 3, not 3.5 */
rc = pfmNumIntDiv(&${out_quotient}, ${in_num1}, ${in_num2});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumIntDiv : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* 정수 여부 체크 */
if( pfmNumIsInteger(${in_number}) ) {
${cursor}
}/* V = X % Y */
rc = pfmNumMod(&${out_number}, ${in_num1}, ${in_num2});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumMod : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}/* 몫과 나머지를 구함 */
rc = pfmNumModDiv(&${out_quotient}, &${out_mod}, ${in_num1}, ${in_num2});
/* out_quotient = in_num1 / in_num2 , out_mod = in_num1 % in_num2 */
if (rc != RC_NRM ) {
PFM_ERR("pfmNumModDiv : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* 몫과 나머지를 구함 */
rc = pfmNumModDivLong(&${out_quotient}, &${out_mod}, ${in_num}, ${in_long_num});
/* out_quotient = in_num / in_long_num , mod = in_num % in_long_num */
if (rc != RC_NRM ) {
PFM_ERR("pfmNumModDivLong : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* V = X * Y */
rc = pfmNumMul(&${out_num}, ${in_num1}, ${in_num2});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumMul : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* V = X * Y , Y는 long형 */
rc = pfmNumMulLong(&${out_num}, ${in_num}, ${in_long_num});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumMulLong : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* V = X * ... */
rc = pfmNumMulN(${num_count}, &${out_num}, ${in_number}, ${word_selection}${} );
if (rc != RC_NRM ) {
PFM_ERR("pfmNumMulN : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* V = X * str , str은 숫자로 인식 */
rc = pfmNumMulStr(&${out_num}, ${in_num}, ${in_str});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumMulStr : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* V = - X */
rc = pfmNumNegate(&${out_num}, ${in_num});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumNegate : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* V = X ^ Y */
rc = pfmNumPower(&${out_num}, ${in_num1}, ${in_num2});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumPower : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}
/* V = X ^ Y , Y는 long형 */
rc = pfmNumPowLong(&${out_num}, ${in_num}, ${in_long_num});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumPowLong : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}pfmNumPrint(${in_num})pfmNumPrintComma(${in_num})/* 소수점이하 반올림 */
rc = pfmNumRound(&${out_num}, ${in_num});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumRound : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* 반올림 */
rc = pfmNumRoundAt(&${out_num}, ${in_num}, ${long_position});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumRoundAt : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* 자릿수 지정올림 */
rc = pfmNumRoundUp(&${out_num}, ${in_num}, ${position});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumRoundUp : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* V = X^2 */
rc = pfmNumSqr(&${out_num}, ${in_num});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumSqr : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* V = X - Y */
rc = pfmNumSub(&${out_num}, ${in_num1}, ${in_num2});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumSub : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* V = X - Y, Y는 long형 */
rc = pfmNumSubLong(&${out_num}, ${in_num}, ${in_long_num});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumSubLong : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* V = X - str , str은 숫자로 인식 */
rc = pfmNumSubStr(&${out_num}, ${in_num}, ${in_str});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumSubStr : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* PfmNumber변수로 문자열을 만듬 */
rc = pfmNumToInFmtStrN(${out_str}, sizeof(${out_str}), "${frmt}", ${right_align_flag}, ${lpad_zero_flag}, ${in_num});
/* right_align_flag : 0 -> 좌정렬 , 1 -> 우정렬
lpad_zero_flag : 0 -> padding 없음 (빈공간 space)
1 -> 0으로 padding */
/* # : 숫자가 있을시 숫자 대입, 없을 시에는 무시됨 */
/* 0 : 숫자가 있을시 숫자 대입, 없을 시에는 '0'이 대입 */
/* ,(comma) : (,) comma가 2개 이상 찍힐 경우 간격이 다르면 에러 */
/* .(point) : (.) 소수점 */
if (rc != RC_NRM ) {
PFM_ERR("pfmNumToInFmtStrN : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* long형으로 변환 */
rc = pfmNumToLong(&${out_long_num}, ${in_num});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumToLong : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* PfmNumber형을 문자열로 변환 */
rc = pfmNumToStrn(${out_str}, ${in_num});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumToStrn : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* PfmNumber형을 N길이의 문자열로 변환 */
rc = pfmNumToStrn(${out_str}, ${in_num}, sizeof(${out_str}));
if (rc != RC_NRM ) {
PFM_ERR("pfmNumToStrn : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* 소수점이하 버림 */
rc = pfmNumTrunc(&${out_num}, ${in_num});
if (rc != RC_NRM ) {
PFM_ERR("pfmNumTrunc : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* 자릿수 지정 버림 */
rc = pfmNumTruncAt(&${out_num}, ${in_num}, pos);
if (rc != RC_NRM ) {
PFM_ERR("pfmNumTruncAt : %s rc : [%ld]", pfmNumGetErrorMsg(), rc);
return RC_ERR;
}${cursor}/* 입력 문자열 왼쪽에 스페이스 추가함 */
rc = pfmSaddLeftSpaceStr (${apInStr}, ${aiStrLen}, ${apAddedStr});
if (rc != RC_NRM) {
PFM_ERR("pfmSaddLeftSpaceStr() : 스페이스 추가오류 rc : [%ld]", rc);
return RC_ERR;
}
/* 입력 문자열 오른쪽에 스페이스 추가함 */
rc = pfmSaddRightSpaceStr (${apInStr}, ${aiStrLen}, ${apAddedStr});
if (rc != RC_NRM) {
PFM_ERR("pfmSaddRightSpaceStr() : 스페이스 추가오류 rc : [%ld]", rc);
return RC_ERR;
}
/* 입력문자 2개를 연결하여 연결된 문자열을 반환 */
rc = pfmSconcatTwoString (${apOneStr}, ${apOtherStr}, ${apMergeStr});
if (rc != RC_NRM) {
PFM_ERR("pfmSconcatTwoString() : 문자열 병합오류 rc : [%ld]", rc);
return RC_ERR;
}
/* 입력된 아스키코드에 해당하는 문자를 구함 */
rc = pfmSconvAsciiToChr(${aiInAscii}, &${acChr});
if(rc != RC_NRM) {
PFM_ERR("pfmSconvAsciiToChr() : 아스키코드 해당 문자 구하기 오류 rc : [%ld]", rc);
return rc;
}/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
rc = pfmSconvBsNoToCorpNo(${apBsNo}, ${apCorpNo});
/* 10자리 사업자번호를 13자리 법인 번호로 변환 */
if (rc != RC_NRM) {
PFM_ERR("pfmSconvBsNoToCorpNo() : 사업자 -> 법인 변환 오류! 입력 사업자등록번호:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apBsNo}, aiStatCode, apStatMsg ,rc);
return rc;
}
/**** 입출력 변수 선언 ***********************************/
char apBsNo [10 + 1]; /* 입력 사업자등록번호(10자리) */
bzero (apBsNo, 10 + 1); /* 문자열 초기화 */
char apCorpNo [13 + 1]; /* 출력 법인번호(13자리) */
bzero (apCorpNo, 13 + 1); /* 문자열 초기화 */
/*********************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/**** 사업자 등록번호 10자리 입력 ***********/
strcpy(apBsNo, ${사업자등록번호10자리});
rc = pfmSconvBsNoToCorpNo(apBsNo, apCorpNo);
/* 10자리 사업자번호를 13자리 법인 번호로 변환 */
if (rc != RC_NRM) {
PFM_ERR("pfmSconvBsNoToCorpNo() : 사업자 -> 법인 변환 오류! 입력 사업자등록번호:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apBsNo, aiStatCode, apStatMsg ,rc);
return rc;
}
/* 입력된 문자의 아스키코드를 구함 */
rc = pfmSconvChrToAscii(${acInChr}, &${aiAscii});
if (rc != RC_NRM) {
PFM_ERR("pfmSconvChrToAscii() : 아스키코드 구하기 오류 rc : [%ld]", rc);
return RC_ERR;
}
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/**** 법인번호 13자리 입력 ***********/
strcpy(apCorpNo, ${법인번호13자리});
rc = pfmSconvCorpNoToBsNo(${apCorpNo},${apBsNo});
/* 13자리 법인번호를 10자리로 변환 */
if (rc != RC_NRM) {
PFM_ERR("pfmSconvCorpNoToBsNo() : 법인 -> 사업자 변환 오류! 입력 법인번호13자리:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apCorpNo}, aiStatCode, apStatMsg ,rc);
return rc;
}
/**** 입출력 변수 선언 ***********************************/
char apCorpNo [13 + 1]; /* 입력 법인번호(13자리) */
bzero (apCorpNo, 13 + 1); /* 문자열 초기화 */
char apBsNo [10 + 1]; /* 출력 사업자등록번호(10자리) */
bzero (apBsNo, 10 + 1); /* 문자열 초기화 */
/*********************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/**** 법인번호 13자리 입력 ***********/
strcpy(apCorpNo, ${법인번호13자리});
rc = pfmSconvCorpNoToBsNo(apCorpNo,apBsNo);
/* 13자리 법인번호를 10자리로 변환 */
if (rc != RC_NRM) {
PFM_ERR("pfmSconvCorpNoToBsNo() : 법인 -> 사업자 변환 오류! 입력 법인번호13자리:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apCorpNo, aiStatCode, apStatMsg ,rc);
return rc;
}
/**** 입출력 변수 선언 ********************************************/
char apInDateDateFormat [10 + 1]; /* 입력한 날짜 */
bzero (apInDateDateFormat, 10 + 1); /* 문자열 초기화 */
char apConvDateDateFormat [10 + 1]; /* 원하는 형태로 변형된 날짜 */
bzero (apConvDateDateFormat, 10 + 1); /* 문자열 초기화 */
long aiModeDateFormat = 0x00; /* 원하는 포맷형태 */
/******************************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
/* 포멧을 변형할 날짜 입력 아래 설명 참조*/
STRNCPY(apInDateDateFormat, ${inDate});
aiModeDateFormat = ${ADDMINUS_DT}; /* default ADDMINUS_DT */
/* 포멧 (aiModeDateFormat) 종류
ADDMINUS_DT: 20070706 -> 2007-07-06
DELMINUS_DT: 2007-07-06 -> 20070706
ADDSLASH_DT: 20070706 -> 2007/07/06
DELSLASH_DT: 2007/07/06 -> 20070706
ADDMINUSYM_DT: 20070706 -> 2007-07
ADDDOT_DT: 20070706 -> 2007.07.06 */
rc = pfmSconvDateFormat (aiModeDateFormat, apInDateDateFormat, apConvDateDateFormat, &aiStatCode, apStatMsg);
/* 입력한 날짜의 포멧을 원하는 형태로 만들어 줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSconvDateFormat () : 날짜포멧 변환 오류! 입력날짜:[%s] 변형포멧[${ADDMINUS_DT}] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apInDateDateFormat, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 입출력 변수 선언 ********************************************/
char apInDateDateFormat [10 + 1]; /* 입력한 날짜 */
bzero (apInDateDateFormat, 10 + 1); /* 문자열 초기화 */
char apConvDateDateFormat [10 + 1]; /* 원하는 형태로 변형된 날짜 */
bzero (apConvDateDateFormat, 10 + 1); /* 문자열 초기화 */
long aiModeDateFormat = 0x00; /* 원하는 포맷형태 */
/******************************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
/* 포멧을 변형할 날짜 입력 아래 설명 참조*/
STRCPY(apInDateDateFormat, ${inDate});
aiModeDateFormat = ${ADDMINUS_DT}; /* default ADDMINUS_DT */
/* 포멧 (aiModeDateFormat) 종류
ADDMINUS_DT: "20070706" -> "2007-07-06"
DELMINUS_DT: "2007-07-06" -> "20070706"
ADDSLASH_DT: "20070706" -> "2007/07/06"
DELSLASH_DT: "2007/07/06" -> "20070706"
ADDMINUSYM_DT: "20070706" -> "2007-07"
ADDDOT_DT: "20070706" -> "2007.07.06" */
rc = pfmSconvDateFormat (aiModeDateFormat, apInDateDateFormat, apConvDateDateFormat, &aiStatCode, apStatMsg);
/* 입력한 날짜의 포멧을 원하는 형태로 만들어 줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSconvDateFormat () : 날짜포멧 변환 오류! 입력날짜:[%s] 변형포멧[${ADDMINUS_DT}] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apInDateDateFormat, aiStatCode, apStatMsg ,rc);
return RC_ERR;
} ]
/* 변경된 포멧의 날짜변수 apConvDateDateFormat */
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
rc = pfmSconvFromDateStrToLong (${apInDate}, &${aiYear}, &${aiMonth}, &${aiDay}, &aiStatCode, apStatMsg);
/* 입력된 문자열의 날짜를 정수값의 년,월,일로 구분하여 돌려줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSconvFromDateStrToLong() : 문자열 변환 오류 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apInDate}, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 입출력 변수 선언 ***********************************/
char apInDateStrToLong [LEN_DATE + 1]; /* YYYYMMDD */
bzero (apInDateStrToLong, LEN_DATE + 1); /* 초기화 */
long aiYearStrToLong = 0x00; /* 년도 출력변수 */
long aiMonthStrToLong = 0x00; /* 월 출력변수 */
long aiDayStrToLong = 0x00; /* 날짜 출력변수 */
/*********************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/* 연월일을 구분할 날짜를 inDate에 입력 YYYYMMDD */
STRNCPY(apInDateStrToLong, ${inDate});
rc = pfmSconvFromDateStrToLong (apInDateStrToLong, &aiYearStrToLong, &aiMonthStrToLong, &aiDayStrToLong, &aiStatCode, apStatMsg);
/* 입력된 문자열의 날짜를 정수값의 년,월,일로 구분하여 돌려줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSconvFromDateStrToLong() : 문자열 변환 오류 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apInDateStrToLong, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
rc = pfmSconvHangleStr(${apInStr}, ${apOutStr});
/* 입력된 한글 문자열 내에서 Ox7F 문자와 한글반자을 삭제 */
if (rc != RC_NRM) {
PFM_ERR("pfmSconvHangleStr() : Ox7F 문자 및 한글반자을 삭제 오류 rc : [%ld]", rc);
return RC_ERR;
}
rc = pfmSconvIntToStr(${aiInNum}, ${apStrNum});
/* Int형 데이터를 string형으로 변환 */
if (rc != RC_NRM) {
PFM_ERR("pfmSconvIntToStr() : Integer data type의 String형 변환 오류 rc : [%ld]", rc);
return RC_ERR;
}
long aiConvBytes = 0x00; /* 변환된 문자열의 크기 */
/* String을 읽어서 KSC5601에 있는 문자인지 확인한다. 아닐경우 ?로 바꿔줌 */
rc = pfmSconvInvalidChar(${apHangleStr}, &aiConvBytes, ${apOutStr});
if (rc != RC_NRM) {
PFM_ERR("pfmSgetStrLen() : 문자열 변환 오류 rc : [%ld]", rc);
return RC_ERR;
}
rc = pfmSconvNumToEnglish(${apInNum}, ${aiMode}, ${apEnglishNum});
/* 출력 모드 설정 (0: 1234 -> one two three four, 1: 1234 -> one thousand two hundred thirty four) */
/* 1234567 -> one billion two hundred thirty four thousand five hundred sixty seven */
if (rc != RC_NRM) {
PFM_ERR("pfmSconvNumToEnglish() : 입력된 숫자값의 영문변환 오류 rc : [%ld]", rc);
return RC_ERR;
}rc = pfmSconvNumToHangle(${apInNum}, ${aiMode}, ${apHangleNum});
/* 출력(aiMode) 모드 설정 (0: 1234 -> 일이삼사, 1: 1234 -> 일천이백삼십사 */
/* 1234567 -> 일백이십삼만사천오백육십칠 */
if (rc != RC_NRM) {
PFM_ERR("pfmSconvNumToHangle() : 입력된 숫자값의 한글변환 오류 rc : [%ld]", rc);
return RC_ERR;
}
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
/* 입력한 시간정보를 원하는 형태로 만들어 줌 */
rc = pfmSconvTimeFormat (${aiMode}, ${apInTime}, ${apConvTime}, &aiStatCode, apStatMsg);
if (rc != RC_NRM) {
PFM_ERR("pfmSconvTimeFormat () : 시간포멧 변환 오류! 입력 시간:[%s] 포맷형태:[${aiMode}] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apInTime}, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 입출력 변수 선언 *************************************************/
char apInTimeTimeFormat [LEN_TIME + 1];/* 입력한 시간 */
bzero (apInTimeTimeFormat, LEN_TIME + 1);/* 문자열 초기화 */
char apConvTimeTimeFormat [8 + 1]; /* 원하는 형태로 변형된 시간 */
bzero (apConvTimeTimeFormat, 8 + 1); /* 문자열 초기화 */
long aiModeTimeFormat = 0x00; /* 원하는 시간포맷형태 */
/***********************************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
/**** 변형할 시간 입력(HHMMSS형태) *************************************/
STRNCPY(apInTimeTimeFormat, ${inTime});/*시간 입력*/
/**** 포멧형식 입력 아래 설명 참조**************************************/
aiModeTimeFormat = ${ADDCOLON_TM}; /* default ADDCOLON_TM */
/* 포맷형식 종류
ADDCOLON_TM: "090909" -> "09:09:09" */
rc = pfmSconvTimeFormat (aiModeTimeFormat, apInTimeTimeFormat, apConvTimeTimeFormat, &aiStatCode, apStatMsg);
/* 입력한 시간정보를 원하는 형태로 만들어 줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSconvTimeFormat () : 시간포멧 변환 오류! 입력 시간:[%s] 포맷형태:[${ADDCOLON_TM}] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]",apInTimeTimeFormat, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
rc = pfmSconvTwoSpaceToOneStr (${apInStr}, ${apConvStr});
/* 두 개 이상의 스페이스를 1개로 줄여 줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSconvTwoSpaceToOneStr() : 스페이스 처리 오류 rc : [%ld]", rc);
return RC_ERR;
}
rc = pfmSdelChrStr(${apInStr}, ${acDelChr}, ${apConvStr});
/* 문자열로부터 특정 문자를 삭제 */
if (rc != RC_NRM) {
PFM_ERR("pfmSdelChrStr() : 문자열 내 문자 삭제오류 rc : [%ld]", rc);
return RC_ERR;
}
pfmSetError("${word_selection}${err_msg}",${word_selection}${para});
pfmSetMessage('${msg_type}', "${msg_code}", ${msg_contents});pfmSetMsgDir(${msg_dir}); /* 정상메시지출력방향 : POPUP - 화면출력 ( "1" ) STATUSBAR - 상태바출력 ( "2" ) MSGBOX - 메시지박스출력 ( "3" ) *//**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
rc = pfmSgetAge (${apBirthDate}, &${aiAge}, &aiStatCode, apStatMsg);
/* 입력된 생년월일을 이용하여 나이를 계산하여 줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetAge () : 나이 계산 오류 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apBirthDate}, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 입출력 변수 선언 *********************************/
char apBirthDate [LEN_DATE + 1]; /* 생년월일 입력변수 */
bzero (apBirthDate, LEN_DATE + 1); /* 초기화 */
long aiAge = 0x00; /* 나이 출력변수 */
/*******************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
/* 생년월일을 inDate에 입력 YYYYMMDD 형식 */
STRNCPY(apBirthDate, ${inDate});
rc = pfmSgetAge (apBirthDate, &aiAge, &aiStatCode, apStatMsg);
/* 입력된 생년월일을 이용하여 나이를 계산하여 줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetAge () : 나이 계산 오류 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apBirthDate, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
rc = pfmSgetAgeAtInDay (${apBirthDate}, ${apInDay}, &${aiAge}, &aiStatCode, apStatMsg);
/* 입력된 기준날짜와 생년월일을 이용하여 나이를 계산하여 줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetAge () : 기준날짜기준 나이 계산 오류 입력날짜:[%s] 기준날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apBirthDate}, ${apInDay}, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 입출력 변수 선언 *********************************/
char apBirthDate [LEN_DATE + 1]; /* 생년월일 입력변수 */
char apInDay [LEN_DATE + 1]; /* 기준날짜 입력변수 */
bzero (apBirthDate, LEN_DATE + 1); /* 초기화 */
bzero (apInDay , LEN_DATE + 1); /* 초기화 */
long aiAge = 0x00; /* 나이 출력변수 */
/*******************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
/* 생년월일과 기준일자 입력 YYYYMMDD 형식 */
STRNCPY(apBirthDate, ${inDate});
STRNCPY(apInDay , ${apInDay});
rc = pfmSgetAgeAtInDay (apBirthDate, apInDay, &aiAge, &aiStatCode, apStatMsg);
/* 입력된 생년월일을 이용하여 나이를 계산하여 줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetAgeAtInDay () : 기준날짜 나이 계산 오류 입력날짜:[%s] 기준날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apBirthDate, apInDay, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/* 입력일자에 입력된 일 수 를 + / - 하여 계산된 일자를 구해줌 */
rc = pfmSgetCountedDate(${apInDate}, ${aiCountDay}, ${apCountedDate}, &aiStatCode, apStatMsg);
if (rc != RC_NRM) {
PFM_ERR("pfmSgetCountedDate() : 몇 일 전/후 연월일 계산오류 입력날짜:[%s] 가감일수:[%ld] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apInDate, aiCountDay, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 일자변수 : ${apCountedDate} */
/********** 입출력변수 선언 ************************************/
char apInDate [LEN_DATE + 1]; /* 기준일 YYYYMMDD */
char apCountedDate [LEN_DATE + 1]; /* 계산된 년월일 YYYYMMDD */
long aiCountDay = 0; /* 가감 일수 */
bzero (apInDate, LEN_DATE + 1); /* 초기화 */
bzero (apCountedDate, LEN_DATE + 1); /* 초기화 */
/***************************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/**** 입력값 셋팅 **********************************************/
STRNCPY(apInDate, ${기준일}); /* 기준일 입력 YYYYMMDD */
aiCountDay = ${가감일수}; /* 가감(+/-) 일수 */
/* 입력일자에 입력된 일 수 를 + / - 하여 계산된 일자를 구해줌 */
rc = pfmSgetCountedDate(apInDate, aiCountDay, apCountedDate, &aiStatCode, apStatMsg);
if (rc != RC_NRM) {
PFM_ERR("pfmSgetCountedDate() : 몇 일 전/후 연월일 계산오류 입력날짜:[%s] 가감일수:[%ld] 옵션:[%ld] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apInDate, aiCountDay, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 일자변수 : apCountedDate */
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/* 입력일자에 입력된 개월수를 + / - 하여 계산된 일자를 구해줌 */
rc = pfmSgetCountedMonth(${apInDate}, ${aiCountMonth}, ${aiOption}, ${apCountedDate}, &aiStatCode, apStatMsg); /* Option 설명 [ 0: 해당 달의 말일 1: 정확한 날짜계산 ] */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetCountedMonthLong() : 몇 개월 전/후 연월일 계산오류 입력날짜:[%s] 가감개월수:[%ld] 옵션:[%ld] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apInDate, aiCountMonth, aiOption, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 일자변수 : ${apCountedDate} */
/********** 입출력변수 선언 ***************************************/
char apInDate [LEN_DATE + 1]; /* 기준일 YYYYMMDD */
char apCountedDate [LEN_DATE + 1]; /* 계산된 년월일 YYYYMMDD */
long aiCountMonth = 0; /* 가감 개월수 */
long aiOption = 0; /* 옵션 */
bzero (apInDate, LEN_DATE + 1); /* 초기화 */
bzero (apCountedDate, LEN_DATE + 1); /* 초기화 */
/******************************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/* 입력값 셋팅 */
STRNCPY(apInDate, ${기준일}); /* 기준일 입력 YYYYMMDD */
aiCountMonth = ${가감개월수}; /* 가감(+/-) 개월수 */
aiOption = ${옵션}; /* 0: 해당 달의 말일 1: 정확한 날짜계산 */
/* 입력일자에 입력된 개월수를 + / - 하여 계산된 일자를 구해줌 */
rc = pfmSgetCountedMonth(apInDate, aiCountMonth, aiOption, apCountedDate, &aiStatCode, apStatMsg);
if (rc != RC_NRM) {
PFM_ERR("pfmSgetCountedMonthLong() : 몇 개월 전/후 연월일 계산오류 입력날짜:[%s] 가감개월수:[%ld] 옵션:[%ld] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apInDate, aiCountMonth, aiOption, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 일자변수 : apCountedDate */
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/* 입력일자에 입력된 개월수를 + / - 하여 계산된 일자를 구해줌 */
rc = pfmSgetCountedMonthLong(&${aiYear}, &${aiMonth}, &${aiDay}, ${aiCountMonth}, ${aiOption}, &aiStatCode, apStatMsg);
if (rc != RC_NRM) {
PFM_ERR("pfmSgetCountedMonthLong() : 몇 개월 전/후 연월일 계산오류 입력날짜:[%04ld%02ld%02ld] 가감개월수:[%ld] 옵션:[%ld] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${aiYear}, ${aiMonth}, ${aiDay}, ${aiCountMonth}, ${aiOption}, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/********** 입출력변수 선언 ********************************/
long aiYear = 0; /* 연도 (I/O) */
long aiMonth = 0; /* 월 (I/O) */
long aiDay = 0; /* 일 (I/O) */
long aiCountMonth = 0; /* 가감 개월수 (I) */
long aiOption = 0; /* 옵션 */
/***********************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
aiYear = ${년도입력}; /* 연도 YYYY */
aiMonth = ${월입력}; /* 월 MM */
aiDay = ${일입력}; /* 일 DD */
aiCountMonth = ${가감개월}; /* 가감(+/-) 개월수 */
aiOption = ${옵션}; /* 0: 해당달의 말일 1: 정확한 날짜계산 */
/* 입력일자에 입력된 개월수를 + / - 하여 계산된 일자를 구해줌 */
rc = pfmSgetCountedMonthLong(&aiYear, &aiMonth, &aiDay, aiCountMonth, aiOption, &aiStatCode, apStatMsg);
if (rc != RC_NRM) {
PFM_ERR("pfmSgetCountedMonthLong() : 몇 개월 전/후 연월일 계산오류 입력날짜:[%04ld%02ld%02ld] 가감개월수:[%ld] 옵션:[%ld] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", aiYear, aiMonth, aiDay, aiCountMonth, aiOption, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 일자 : aiYear aiMonth aiDay 입력변수를 직접 변환함 */
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
rc = pfmSgetFileSize(${apFileName}, &${alFileSize});
/* 입력된 파일의 크기를 계산하여 돌려줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetFileSize() : 파일크기 계산 오류! 입력파일명:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apFileName}, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 입출력 변수 선언 *******************************/
char apFileName [30 + 1]; /* 크기를 계산할 파일명 */
bzero (apFileName, 30| + 1; /* 문자열 초기화 */
long alFileSize = 0x00; /* 계산된 파일 크 */
/*****************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/**** 크기를 계산할 파일명 입력 **************/
strcpy(apFileName, ${fileName});
rc = pfmSgetFileSize(apFileName, &alFileSize);
/* 입력된 파일의 크기를 계산하여 돌려줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetFileSize() : 파일크기 계산 오류! 입력파일명:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apFileName, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
rc = pfmSgetFullAge (${apBirthDate}, &${aiFullAge}, &aiStatCode, apStatMsg);
/* 입력된 생년월일을 이용하여 만나이를 계산하여 줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetFullAge () : 만나이 계산 오류 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apBirthDate}, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}/**** 입출력 변수 선언 *********************************/
char apBirthDate [LEN_DATE + 1]; /* 생년월일 입력변수 */
bzero (apBirthDate, LEN_DATE + 1); /* 문자열 초기화 */
long aiFullAge = 0x00; /* 만나이 출력변수 */
/*******************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
/**** 만나이를 구할 생년월일 날짜를 inDate에 입력 YYYYMMDD */
STRNCPY(apBirthDate, ${inDate});
rc = pfmSgetFullAge (apBirthDate, &aiFullAge, &aiStatCode, apStatMsg);
/* 입력된 생년월일을 이용하여 만나이를 계산하여 줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetFullAge () : 만나이 계산 오류 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apBirthDate, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 만나이 변수 aiFullAge *//**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
rc = pfmSgetFullAgeAtInDay (${apBirthDate}, ${apInDay}, &${aiFullAge}, &aiStatCode, apStatMsg);
/* 입력된 생년월일을 이용하여 만나이를 계산하여 줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetFullAgeAtInDay () : 기준날짜 만나이 계산 오류 입력날짜:[%s] 기준날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apBirthDate}, ${apInDay},aiStatCode, apStatMsg ,rc);
return RC_ERR;
}/**** 입출력 변수 선언 *********************************/
char apBirthDate [LEN_DATE + 1]; /* 생년월일 입력변수 */
char apInDay [LEN_DATE + 1]; /* 기준날짜 입력변수 */
bzero (apBirthDate, LEN_DATE + 1); /* 문자열 초기화 */
bzero (apInDay , LEN_DATE + 1); /* 문자열 초기화 */
long aiFullAge = 0x00; /* 만나이 출력변수 */
/*******************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
/**** 만나이를 구할 생년월일과 기준일을 입력 YYYYMMDD */
STRNCPY(apBirthDate, ${inDate});
STRNCPY(apInDay , ${apInDay});
/* 입력된 기준날짜와 생년월일을 이용하여 만나이를 계산하여 줌 */
rc = pfmSgetFullAgeAtInDay (apBirthDate, apInDay, &aiFullAge, &aiStatCode, apStatMsg);
if (rc != RC_NRM) {
PFM_ERR("pfmSgetFullAgeAtInDay () : 기준날짜 만나이 계산 오류 입력날짜:[%s] 기준날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apBirthDate, apInDay, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 만나이 변수 aiFullAge *//* 문자열에서 찾는 문자가 있을 경우 index를 반환 */
rc = pfmSgetIndexFindChr (${apInStr}, ${acFindChr});
if (rc == RC_ERR) {
PFM_ERR("pfmSgetIndexFindChr() : 위치 인텍스 추출오류 rc : [%ld]", rc);
return RC_ERR;
}
/* 입력문자열 apInStr에서 찾는 문자열 apFindStr 의 Index를 return 오류발생시 RC_ERR 리턴 */
rc = pfmSgetIndexFindStr(${apInStr}, ${apFindStr});
if (rc == RC_ERR) {
PFM_ERR("pfmSgetIndexFindStr() : 문자열내 문자열 검색 오류!! 입력문자열:[%s] 찾는문자열:[%s] rc:[%ld]", ${apInStr}, ${apFindStr}, rc);
return RC_ERR;
}
/* 찾아낸 문자열 시작 Index는 rc값 *//* 문자열에서 찾는 문자가 있을 경우 오른쪽으로부터의 index를 반환 */
rc = pfmSgetIndexRevFindChr(${apInStr}, ${acFindChr});
if (rc == RC_ERR) {
PFM_ERR("pfmSgetIndexRevFindChr() : 위치 인텍스 추출오류 rc:[%ld]", rc);
return RC_ERR;
}/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/* 문자열로 입력된 시작 연월일로부터 종료 연월일까지의 경과일수를 구함 */
rc = pfmSgetIntervalDayNumber (${apFromDate}, ${apToDate}, &${alDayNum}, &aiStatCode, apStatMsg);
if (rc != RC_NRM) {
PFM_ERR("pfmSgetIntervalDayNumber() : 경과일수 계산오류 시작년월일:[%s] 종료연월일:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apFromDate}, ${apToDate}, ${aiStatCode}, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 경과일수 : alDayNum */
/********** 입출력변수 선언 ******************************/
char apFromDate [LEN_DATE + 1]; /* 시작일 YYYYMMDD */
char apToDate [LEN_DATE + 1]; /* 종료일 YYYYMMDD */
long alDayNum = 0; /* 경과일수 */
bzero (apFromDate, LEN_DATE + 1); /* 초기화 */
bzero (apToDate, LEN_DATE + 1); /* 초기화 */
/*********************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/**** 입력값 셋팅 *************************************************/
STRNCPY(apFromDate, ${시작년월일}); /* 시작년월일 입력 YYYYMMDD */
STRNCPY(apToDate, ${종료연월일}); /* 종료연월일 입력 YYYYMMDD */
/* 문자열로 입력된 시작 연월일로부터 종료 연월일까지의 경과일수를 구함 */
rc = pfmSgetIntervalDayNumber (apFromDate, apToDate, &alDayNum, &aiStatCode, apStatMsg);
if (rc != RC_NRM) {
PFM_ERR("pfmSgetIntervalDayNumber() : 경과일수 계산오류 시작년월일:[%s] 종료연월일:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apFromDate, apToDate, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 경과일수 : alDayNum */
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
rc = pfmSgetLastMonthInfo (${apInDate}, ${apFirstDay}, ${apLast}, &aiStatCode, apStatMsg);
/* 입력일자의 전월 시작일과 마지막일을 계산하여 구해줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetLastMonthInfo() : 전월 시작일/마지막일 계산오류 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apInDate}, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/********** 입출력변수 선언 ************************************************/
char apInDateLastMonthInfo [LEN_DATE + 1]; /* 날짜 입력변수 */
char apFirstDayLastMonthInfo [LEN_DATE + 1]; /* 전월의 시작일 출력 변수 */
char apLastDayLastMonthInfo [LEN_DATE + 1]; /* 전월의 마지막일 출력 변수 */
bzero (apInDateLastMonthInfo, LEN_DATE + 1); /* 초기화 */
bzero (apFirstDayLastMonthInfo, LEN_DATE + 1); /* 초기화 */
bzero (apLastDayLastMonthInfo, LEN_DATE + 1); /* 초기화 */
/***************************************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/*** 입력값 세팅 *****************************/
STRNCPY(apInDateLastMonthInfo, ${inDate}); /* 구하고자하는 날짜 입력 YYYYMMDD 형식 */
/* 입력일자의 전월 시작일과 마지막일을 계산하여 구해줌 */
rc = pfmSgetLastMonthInfo (apInDateLastMonthInfo, apFirstDayLastMonthInfo, apLastDayLastMonthInfo, &aiStatCode, apStatMsg );
if (rc != RC_NRM) {
PFM_ERR("pfmSgetLastMonthInfo() : 전월 시작일/마지막일 계산오류 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apInDateLastMonthInfo, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
rc = pfmSgetLeftPadStr (${apInStr}, ${aiStrLen}, ${apAddStr}, ${apPaddedStr});
/* 대상 문자열 왼쪽에 문자열을 Padding */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetLeftPadStr() : 문자열 패딩오류 rc : [%ld]", rc);
return RC_ERR;
}
rc = pfmSgetLeftStr(${apInStr}, ${aiLength}, ${apOutStr});
/* 문자열 왼쪽부터 원하는 길이만큼 문자열 반환 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetLeftStr() : 문자열 추출 오류 rc : [%ld]", rc);
return RC_ERR;
}
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
rc = pfmSgetMonthLastDayLong (${aiYear}, ${aiMonth},&${aiLastDay}, &aiStatCode, apStatMsg);
/* 입력된 년과 월을 이용하여 해당월의 말일자를 구함 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetMonthLastDayLong () : 말일자를 계산 오류 입력년:[%ld], 입력월[%ld], ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${aiYear}, ${aiMonth}, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 입출력 변수 선언 **********************************/
long aiYear = 0x00; /* 년입력 YYYY */
long aiMonth = 0x00; /* 월입력 MM */
long aiLastDay = 0x00; /* 계산된 말일 DD */
/********************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
/**** 입력값 셋팅 ***************/
aiYear = ${년입력}; /* YYYY */
aiMonth = ${월입력}; /* MM */
rc = pfmSgetMonthLastDayLong (${aiYear}, ${aiMonth},&${aiLastDay}, &aiStatCode, apStatMsg);
/* 입력된 년과 월을 이용하여 해당월의 말일자를 구함 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetMonthLastDayLong () : 말일자를 계산 오류 입력년:[%ld], 입력월[%ld], ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${aiYear}, ${aiMonth}, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 월말일 변수 aiLastDay */
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
rc = pfmSgetMonthLastDayStr (${apInDate}, &${aiLastDay}, &aiStatCode, apStatMsg);
/* 입력된 날짜의 전일자를 구하여줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetMonthLastDayStr(): 월말일 계산 오류 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apInDate}, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 말일자 변수 ${aiLastDay} *//**** 입출력 변수 선언 *******************************/
char apInDate [LEN_DATE + 1]; /* 날짜 입력변수 */
bzero (apInDate, LEN_DATE + 1); /* 문자열 초기화 */
long aiLastDay = 0x00; /* 계산된 말일 */
/*****************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/**** 말일자를 구할 날짜 입력 YYYYMMDD 형식 **/
STRNCPY(apInDate, ${입력날짜});
rc = pfmSgetMonthLastDayStr (apInDate, &aiLastDay, &aiStatCode, apStatMsg);
/* 입력된 날짜의 전일자를 구하여줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetMonthLastDayStr():월 말일 계산 오류 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apInDate, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 말일자 변수 aiLastDay */
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
rc = pfmSgetMonthName (${aiInMonth}, ${aiIsFullName}, apMonthName, &aiStatCode, apStatMsg);
/* 입력된 월의 이름을 돌려줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetMonthName() : 월이름 반환 오류 ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", aiStatCode, apStatMsg, rc);
return RC_ERR;
}
/**** 입출력 변수 선언 ********************************/
char apMonthName [20 + 1]; /* 월이름 출력변수 */
bzero (apMonthName, 20 + 1); /* 문자열 초기화 */
long aiInMonth = 0x00; /* 입력된 입력변수 */
long aiIsFullName = 0x00; /* 월이름 형태지정 */
/******************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
/**** 이름을 구하려는 월 및 이름 형태 입력 ***********/
aiInMonth = ${inMoth}; /* long형태 정수 입력 */
aiIsFullName = ${aiIsFullName}; /* 월이름 출력 형태 *
aiIsFullName : 1 ---> "Febrary" 0 ---> "Feb" */
/*****************************************************/
/* 입력된 월의 이름을 돌려줌 */
rc = pfmSgetMonthName (aiInMonth, aiIsFullName, apMonthName, &aiStatCode, apStatMsg);
if (rc != RC_NRM) {
PFM_ERR("pfmSgetMonthName() : 월이름 반환 오류! 입력월:[%dl] 출력형식:[%ld], ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", aiInMonth, aiIsFullName, aiStatCode, apStatMsg, rc);
return RC_ERR;
}
/* 출력 영문월이름 변수 apMonthName *//**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/* 입력된 날짜의 익일자를 구하여줌 */
rc = pfmSgetNextDate (${apInDate}, ${apNextDate}, &aiStatCode, apStatMsg);
if (rc != RC_NRM) {
PFM_ERR("pfmSgetNextDate():익일짜 계산 오류 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apInDate}, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 익일자 변수 apInDateGetNextDate *//**** 입출력 변수 선언 ******************************************/
char apInDateGetNextDate [LEN_DATE + 1]; /* 날짜 입력변수 */
bzero (apInDateGetNextDate, LEN_DATE + 1); /* 문자열 초기화 */
char apNextDateGetNextDate [LEN_DATE + 1]; /* 익일자 출력 변수 */
bzero (apNextDateGetNextDate, LEN_DATE + 1); /* 문자열 초기화 */
/****************************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/**** 익일자를 구할 날짜 입력 YYYYMMDD 형식 ****************/
STRNCPY(apInDateGetNextDate, ${inDate});
rc = pfmSgetNextDate (apInDateGetNextDate, apNextDateGetNextDate, &aiStatCode, apStatMsg);
/* 입력된 날짜의 익일자를 구하여줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetNextDate():익일짜 계산 오류 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apInDateGetNextDate, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 익일자 변수 apInDateGetNextDate *//**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/* 정수형으로 입력된 시작 연도 1월1일부터 계산 연도 월일까지의 경과일수를 구함 */
rc = pfmSgetPassedDay (${aiStartYear}, ${aiInYear}, ${aiInMonth}, ${aiInDay}, &${alPassedDay}, &aiStatCode, apStatMsg);
if (rc != RC_NRM) {
PFM_ERR("pfmSgetPassedDay() : 경과일수 계산오류 시작년도:[%04ld] 입력날짜:[%04ld%02ld%02ld] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${aiStartYear}, ${aiInYear}, ${aiInMonth}, ${aiInDay}, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 경과 일자 : alPassedDay */
/********** 입출력변수 선언 ********************************/
long aiStartYear = 0; /* 시작연도 (I) */
long aiInYear = 0; /* 년 (I) */
long aiInMonth = 0; /* 월 (I) */
long aiInDay = 0; /* 일 (I) */
long alPassedDay = 0; /* 경과일수 (O) */
/***********************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/**** 입력값 세팅 *********************************/
aiStartYear = ${시작년도}; /* 시작년도 YYYY */
aiInYear = ${년도입력}; /* 연도 YYYY */
aiInMonth = ${월입력}; /* 월 MM */
aiInDay = ${일입력}; /* 일 DD */
/* 정수형으로 입력된 시작 연도 1월1일부터 계산 연도 월일까지의 경과일수를 구함 */
rc = pfmSgetPassedDay (aiStartYear, aiInYear, aiInMonth, aiInDay, &alPassedDay, &aiStatCode, apStatMsg);
if (rc != RC_NRM) {
PFM_ERR("pfmSgetPassedDay() : 경과일수 계산오류 시작년도:[%04ld] 입력날짜:[%04ld%02ld%02ld] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", aiStartYear, aiInYear, aiInMonth, aiInDay, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 경과 일자 : alPassedDay */
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
rc = pfmSgetPrevDate (${apInDate}, ${apPrevDate}, &aiStatCode, apStatMsg);
/* 입력된 날짜의 전일자를 구하여줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetPrevDate():전일짜 계산 오류 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apInDate}, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 전일자 변수 apPrevDateGetPrevDate *//**** 입출력 변수 선언 ******************************************/
char apInDateGetPrevDate [LEN_DATE + 1]; /* 날짜 입력변수 */
bzero (apInDateGetPrevDate, LEN_DATE + 1); /* 문자열 초기화 */
char apPrevDateGetPrevDate [LEN_DATE + 1]; /* 전일자 출력 변수 */
bzero (apPrevDateGetPrevDate, LEN_DATE + 1); /* 문자열 초기화 */
/****************************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/**** 전일자를 구할 날짜 입력 YYYYMMDD 형식 **/
STRNCPY(apInDateGetPrevDate, ${inDate});
rc = pfmSgetPrevDate (apInDateGetPrevDate, apPrevDateGetPrevDate, &aiStatCode, apStatMsg);
/* 입력된 날짜의 전일자를 구하여줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetPrevDate():전일짜 계산 오류 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apInDateGetPrevDate, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 전일자 변수 apPrevDateGetPrevDate *//**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/* 입력된 날짜의 전일자와 익일자를 구하여줌 */
rc = pfmSgetPrevNextDate (${apInDate}, ${apPrevDate}, ${apNextDate}, &aiStatCode, apStatMsg);
if (rc != RC_NRM) {
PFM_ERR("pfmSgetPrevNextDate() : 전일/익일짜 계산 오류 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apInDate}, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 입출력 변수 선언 **********************************************/
char apInDateGetPrevNextDate [LEN_DATE + 1]; /* 날짜 입력변수 */
bzero (apInDateGetPrevNextDate, LEN_DATE + 1); /* 문자열 초기화 */
char apPrevDateGetPrevNextDate [LEN_DATE + 1]; /* 전일자 출력 변수 */
bzero (apPrevDateGetPrevNextDate, LEN_DATE + 1); /* 문자열 초기화 */
char apNextDateGetPrevNextDate [LEN_DATE + 1]; /* 익일자 출력 변수 */
bzero (apNextDateGetPrevNextDate, LEN_DATE + 1); /* 문자열 초기화 */
/********************************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/**** 전/익일자를 구할 날짜 입력 YYYYMMDD 형식 **/
STRNCPY(apInDateGetPrevNextDate, ${inDate});
/* 입력된 날짜의 전일자와 익일자를 구하여줌 */
rc = pfmSgetPrevNextDate (apInDateGetPrevNextDate, apPrevDateGetPrevNextDate, apNextDateGetPrevNextDate, &aiStatCode, apStatMsg);
if (rc != RC_NRM) {
PFM_ERR("pfmSgetPrevNextDate() : 전일/익일짜 계산 오류 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apInDateGetPrevNextDate, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 전일자 변수 apPrevDateGetPrevNextDate 익일자 변수 apNextDateGetPrevNextDate */
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
rc = pfmSgetRandNum (${aiWidth}, ${aiSeed}, &${aiRandNum});
/* 입력된 자릿수 만큼의 랜덤한 수 발생 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetWeekCntInfo() : 난수 생성 오류! 생성자릿수[${aiWidth}] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 입출력 변수 선언 *********************************************************/
long aiWidth = ${생성자릿수}; /* 출력 난수의 자릿수 입력 */
long aiSeed = (unsigned )time(NULL); /* 시드값 */
long aiRandNum = 0x00; /* 생성된 난수값 */
/*******************************************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
rc = pfmSgetRandNum (aiWidth, aiSeed, &aiRandNum);
/* 입력된 자릿수 만큼의 랜덤한 수 발생 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetWeekCntInfo() : 난수 생성 오류! 생성자릿수[%ld] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]",aiWidth, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
rc = pfmSgetRightPadStr (${apInStr}, ${aiStrLen}, ${apAddStr}, ${apPaddedStr});
/* 대상 문자열 오른쪽에 문자열을 Padding */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetRightPadStr() : 문자열 패딩오류 rc : [%ld]", rc);
return RC_ERR;
}
rc = pfmSgetRightStr (${apInStr}, ${aiLength}, ${apOutStr});
/* 문자열 오른쪽부터 원하는 길이만큼 문자열 반환 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetRightStr() : 문자열 추출 오류 rc : [%ld]", rc);
return RC_ERR;
}rc = pfmSgetStrLen (${apInStr});
/* 입력된 문자열의 길이를 반환 */
if (rc == RC_ERR) {
PFM_ERR("pfmSgetStrLen() : 문자길이 반환 오류 rc : [%ld]", rc);
return RC_ERR;
}
rc = pfmSgetStrLenKSCTwoBytesToOneByte (${apInStr});
/* 한글 및 영문 숫자 문자열중 한글(KSC5601)도 길이단위 1로 계산 */
if (rc == RC_ERR) {
PFM_ERR("pfmSgetStrLen() : 문자길이 반환 오류 rc : [%ld]", rc);
return RC_ERR;
}
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
/* 출력포맷 목록
YYYYMMDD "20070706"
HHMISS "132403"
YYYYMMDDHHMISS "20070706132403"
YYYYMMDDHHMISSMI "2007070613240351"
MMDDHHMISS "0706132403"
YMDFORM1 "20070706:13:24:03"
YMDFORM2 "07/06/2007 13:24:03"
YMDFORM3 "20070706-13:24:03"
TIMEFORM1 "13:24:03" */
rc = pfmSgetSysDateTime (${aiModeget}, ${apDateStr}, &aiStatCode, apStatMsg);
/* 현재 시스템 시간을 구하여 원하는 형태로 만들어 줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetSysDateTime () : 날짜 출력 오류! 포맷형태:[${aiModeget}] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 입출력 변수 선언 ********************************************/
char apDateStrGetSysDateTime [20 + 1]; /* 원하는 현재 날짜 */
bzero (apDateStrGetSysDateTime , 20 + 1); /* 문자열 초기화 */
long aiModegetSysDateTime = 0x00; /* 원하는 날짜 포맷형태 */
/******************************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
/* 원하는 출력포맷 형태를 입력하세요
YYYYMMDD "20070706"
HHMISS "132403"
YYYYMMDDHHMISS "20070706132403"
YYYYMMDDHHMISSMI "2007070613240351"
MMDDHHMISS "0706132403"
YMDFORM1 "20070706:13:24:03"
YMDFORM2 "07/06/2007 13:24:03"
YMDFORM3 "20070706-13:24:03"
TIMEFORM1 "13:24:03" */
aiModegetSysDateTime = ${YYYYMMDD}; /* default YYYYMMDD */
rc = pfmSgetSysDateTime (aiModegetSysDateTime, apDateStrGetSysDateTime, &aiStatCode, apStatMsg);
/* 현재 시스템 시간을 구하여 원하는 형태로 만들어 줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetSysDateTime () : 날짜 출력 오류! 포맷형태:[${YYYYMMDD}] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
rc = pfmSgetTimeGapSecond (${apOneTime}, ${apOtherTime}, &alTimeGap, &aiStatCode, apStatMsg);
/* 입력된 두개의 시간차의 절대값을 구한다 (24시간 기준) */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetTimeGapSecond() : 시간차 계산 오류! ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 입출력 변수 선언 *******************************************/
char apOneTime [LEN_TIME + 1]; /* 계산을 위한 첫번째 시간 */
bzero (apOneTime, LEN_TIME + 1); /* 문자열 초기화 */
char apOtherTime [LEN_TIME + 1]; /* 두번째 시간 */
bzero (apOtherTime, LEN_TIME + 1); /* 문자열 초기화 */
long alTimeGap = 0x00; /* 계산되어진 두 시간의 차이값 */
/*****************************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
/* 차이를 구할 2개의 시간을 입력 (차이(초단위) = 두번째 - 첫번째로 계산) */
STRNCPY(apOneTime, ${inputTime1});
STRNCPY(apOtherTime, ${inputTime2});
rc = pfmSgetTimeGapSecond (apOneTime, apOtherTime,&alTimeGap, &aiStatCode, apStatMsg);
/* 입력된 두개의 시간차의 절대값을 구한다 (24시간 기준) */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetTimeGapSecond() : 시간차 계산 오류! 입력한 시간:[%s, %s], ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]",apOneTime, apOtherTime, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
rc = pfmSgetTimeMilliSec(${aiMode},${apTimeStr}, ${apMilliSec}, &aiStatCode, apStatMsg);
/* 현재 시스템 날짜와 시간을 원하는 형태에 맞게 구하여 줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetTimeMilliSec() : 날짜/시간 출력 오류! 포맷형태:[${aiMode}] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 입출력 변수 선언 ************************************/
char apTimeStrGetTime [20 + 1]; /* 원하는 현재 날짜 */
bzero (apTimeStrGetTime, 20 + 1); /* 문자열 초기화 */
char apMilliSecGetTime [20 + 1]; /* 원하는 현재 시간 */
bzero (apMilliSecGetTime, 20 + 1); /* 문자열 초기화 */
long aiModeGetTime = 0x00; /* 원하는 날짜 포맷형태 */
/**********************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
/* 원하는 날짜 포맷형태를 입력하세요 */
/* YYYYMMDD = "20070706" YMDFORM3 = "20070706-12:40:02" */
aiModeGetTime = ${YYYYMMDD}; /* default YYYYMMDD */
rc = pfmSgetTimeMilliSec(aiModeGetTime, apTimeStrGetTime, apMilliSecGetTime, &aiStatCode, apStatMsg);
/* 현재 시스템 날짜와 시간을 원하는 형태에 맞게 구하여 줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetTimeMilliSec() : 날짜/시간 출력 오류! 포맷형태:[${YYYYMMDD}] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 출력 시간 변수 apTimeStr(현재 날짜) apMilliSec(현재 시간) */rc = pfmSgetTokenStr (${apInStr}, ${acDelimeter}, ${apTokenStr});
/* 입력 문자열에서 구분자 기준으로 분리 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetTokenStr() : 문자열 분리 오류 rc : [%ld]", rc);
return RC_ERR;
}
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
rc = pfmSgetWeekCntInfo (${apInDate}, &${astOut}, &aiStatCode, apStatMsg);
/* 기준일자에 대한 해당달의 주수를 계산하여 줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetWeekCntInfo() : 해당일 주수계산 오류! ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 입출력 변수 선언 *************************************/
char apInDateWeekCntInfo [LEN_DATE + 1]; /* 날짜 입력변수 */
bzero (apInDateWeekCntInfo, LEN_DATE + 1); /* 문자열 초기화 */
long astOutWeekCntInfo = 0x00; /* 해당달의 주수 */
/***********************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
/* 주수를 구할 날짜를 inDate에 입력 YYYYMMDD */
STRNCPY(apInDateWeekCntInfo, ${inDate});
rc = pfmSgetWeekCntInfo (apInDateWeekCntInfo, &astOutWeekCntInfo, &aiStatCode, apStatMsg);
/* 기준일자에 대한 해당달의 주수를 계산하여 줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetWeekCntInfo() : 해당일 주수계산 오류! 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apInDateWeekCntInfo, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 요일을 숫자로 변환 ※ 요일인덱스 => 월:1, 화:2, 수:3, 목:4, 금:5, 토:6, 일:7 */
rc = pfmSgetWeekDay(${apInDayStr}, &aiDayInx, &aiStatCode, apStatMsg); /* apInDayStr는 문자열 YYYYMMDD 형태로 입력*/
if (rc != RC_NRM) {
PFM_ERR("pfmSgetWeekDayInx() : 요일을 숫자(인덱스)로 변환오류!!! 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apInDayStr}, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 요일 인덱스 aiDayInx *//********** 입출력변수 선언 ******************/
char apInDayStr [LEN_DATE + 1]; /* 입력날짜 */
bzero (apInDayStr, LEN_DATE + 1); /* 초기화 */
long aiDayInx = 0x00; /* 출력요일인덱스 */
/*********************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
STRNCPY(apInDayStr, ${InputDate});
/* 요일을 숫자로 변환 ※ 요일인덱스 => 월:1, 화:2, 수:3, 목:4, 금:5, 토:6, 일:7 */
rc = pfmSgetWeekDay(apInDayStr, &aiDayInx, &aiStatCode, apStatMsg);
if (rc != RC_NRM) {
PFM_ERR("pfmSgetWeekDayInx() : 요일을 숫자(인덱스)로 변환오류!!! 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apInDayStr, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 요일 인덱스 aiDayInx *//**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/* 요일을 숫자로 변환 ※ 요일인덱스 => 월:1, 화:2, 수:3, 목:4, 금:5, 토:6, 일:7 */
rc = pfmSgetWeekDayInx (${aiInYear}, ${aiInMonth}, ${aiInDay}, &aiDayInx, &aiStatCode, apStatMsg);
if (rc != RC_NRM) {
PFM_ERR("pfmSgetWeekDayInx() : 요일을 숫자(인덱스)로 변환오류!!! 입력날짜:[%04ld%02ld%02ld] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", aiInYear, aiInMonth, aiInDay, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 요일 인덱스 aiDayInx */
/********** 입출력변수 선언 ************************************************/
long aiInYear = 0; /* 연도 (I/O) */
long aiInMonth = 0; /* 월 (I/O) */
long aiInDay = 0; /* 일 (I/O) */
long aiDayInx = 0; /* 계산된 요일인덱스 */
/***************************************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/************ 입력값 셋팅 *************/
aiInYear = ${년도입력}; /* 연도 YYYY */
aiInMonth = ${월입력}; /* 월 MM */
aiInDay = ${일입력}; /* 일 DD */
/* 요일을 숫자로 변환 ※ 요일인덱스 => 월:1, 화:2, 수:3, 목:4, 금:5, 토:6, 일:7 */
rc = pfmSgetWeekDayInx (aiInYear, aiInMonth, aiInDay, &aiDayInx, &aiStatCode, apStatMsg);
if (rc != RC_NRM) {
PFM_ERR("pfmSgetWeekDayInx() : 요일을 숫자(인덱스)로 변환오류!!! 입력날짜:[%04ld%02ld%02ld] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", aiInYear, aiInMonth, aiInDay, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 요일 인덱스 aiDayInx */
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
rc = pfmSgetWeekDayName (${apInDate}, ${aiIsFullName}, apDayName, &aiStatCode, apStatMsg);
/* 입력일자의 요일을 구하여 요일이름을 돌려줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetWeekDayName() : 영문요일 반환 오류! 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apInDate}, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 입출력 변수 선언 *********************************************/
char apInDateGetWeekDayName [LEN_DATE + 1]; /* 날짜 입력변수 */
bzero (apInDateGetWeekDayName, LEN_DATE + 1); /* 문자열 초기화 */
char apDayName [10 + 1]; /* 요일이름 출력 변수 */
bzero (apDayName, 10 + 1); /* 문자열 초기화 */
long aiIsFullName = 0x00; /* 요일이름 형태지정 */
/*******************************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
/* 요일이름을 구할 날짜를 inDate에 입력 YYYYMMDD */
STRCPY(apInDateGetWeekDayName, ${inDate}); /* YYYYMMDD */
aiIsFullName = ${출력형태지정}; /* 1:"MonDay" , 0:"MON" */
rc = pfmSgetWeekDayName (apInDateGetWeekDayName, aiIsFullName, apDayName, &aiStatCode, apStatMsg);
/* 입력일자의 요일을 구하여 요일이름을 돌려줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetWeekDayName() : 영문요일 반환 오류! 입력날짜:[%s] 출력형태:[%ld] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apInDateGetWeekDayName, aiIsFullName, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 계산된 영문요일 변수 apDayName *//**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
rc = pfmSgetYearToMonthNum (${apInDate}, ${aiCountNum}, ${apCountDate}, &aiStatCode, apStatMsg);
/* 입력년월에 입력된 개월수를 +,- 하여 계산된 년월을 구해줌 */
if (rc != RC_NRM) {
PFM_ERR("pfmSgetYearToMonthNum () : 년월일 계산 오류 입력날짜:[%s] 입력개월수:[%ld] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apInDate}, ${aiCountNum} ,aiStatCode, apStatMsg ,rc);
return RC_ERR;
}long isHangle = 0x00;
isHangle = pfmSisHangleStr (${apInStr}); /* 입력받은 string이 한글로 된 문자열인지 확인한다 */
/* isHangle == RC_NRM 유효함 */
/* isHangle == RC_ERR 무효함 */
long isKSC = 0x00;
isKSC = pfmSisKSC5601Char (${apInStr}); /* 입력된 문자열의 한글 한자의 유효성 여부를 리턴 */
/* isKSC == RC_NRM 유효함 */
/* isKSC == RC_ERR 무효함 */
/**** 입출력 변수 선언 **********************************/
char apInDayStr [LEN_DATE + 1]; /* 말일여부를 구할 날짜 */
bzero (apInDayStr, LEN_DATE + 1); /* 변수초기화 */
/********************************************************/
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
STRNCPY(apInDayStr, ${apInDay}); /* YYYYMMDD형 문자열 */
rc = pfmSisMonthLastDay(apInDayStr);
if (rc == RC_ERR) {
PFM_ERR("pfmSisMonthLastDay() : 말일여부 계산오류!!! 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", apInDayStr, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* rc == TRUE : 말일 , rc == FALSE : 말일아님, rc == RC_ERR : 계산오류 */
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 문자열 초기화 */
/*********************************************/
rc = pfmSisMonthLastDay(${apInDayStr});
if (rc == RC_ERR) {
PFM_ERR("pfmSisMonthLastDay() : 말일여부 계산오류!!! 입력날짜:[%s] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", ${apInDayStr}, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* rc == TRUE : 말일 , rc == FALSE : 말일아님, rc == RC_ERR : 계산오류 */
long isValid16BitChar = 0x00;
isValid16BitChar = pfmSisValid16BitChar1Byte (${apHangleStr}); /* 입력받은 한글 정보의 유효성 여부를 리턴 */
/* isValid16BitChar == RC_NRM 유효함 */
/* isValid16BitChar == RC_ERR 무효함 */
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/************** 결과값 ***********************/
long datIsValid = 0x00; /* 결과값 */
/*********************************************/
datIsValid = pfmSisValidDateLong (${aiYear}, ${aiMonth}, ${aiDay}, &aiStatCode, apStatMsg); /* 입력된 날짜가 유효한 날짜인지 체크하여 줌 */
/* datIsValid == RC_NRM 유효한 날짜 */
/* datIsValid == RC_ERR 무효한 날짜 */
if (datIsValid != RC_NRM) {
PFM_ERR("pfmSisValidDateLong() : 입력하신 날짜는 유효하지 않습니다. ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]", aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/**** 이미 선언 되어 있으면 초기화만 한다.****/
long aiStatCode = 0x00; /* 에러코드 */
char apStatMsg [100 + 1]; /* 에러메시지 */
bzero (apStatMsg, 100 + 1); /* 초기화 */
/*********************************************/
/*******유효성을 검사할 연월일 입력 *********************/
long aiYearIsValid = ${년도입력}; /* 년도 출력변수 */
long aiMonthIsValid = ${월입력} ; /* 월 출력변수 */
long aiDayIsValid = ${날짜입력}; /* 날짜 출력변수 */
/********************************************************/
/************** 결과값 ***********************/
long datIsValid = 0x00; /* 결과값 */
/*********************************************/
datIsValid = pfmSisValidDateLong (aiYearIsValid, aiMonthIsValid, aiDayIsValid, &aiStatCode, apStatMsg); /* 입력된 날짜가 유효한 날짜인지 체크하여 줌 */
/* datIsValid == RC_NRM 유효한 날짜 */
/* datIsValid == RC_ERR 무효한 날짜 */
if (datIsValid != RC_NRM) {
PFM_ERR("pfmSisValidDateLong() : 입력하신 날짜는 유효하지 않습니다. 입력날짜:[%ld/%ld/%ld] ErrCode:[%ld] ErrMsg:[%s] rc:[%ld]",
aiYearIsValid, aiMonthIsValid, aiDayIsValid, aiStatCode, apStatMsg ,rc);
return RC_ERR;
}
/* 양력일자를 음력일자로 변환 *//* 음력일의 표현 변수(lunar_date)의 길이는 (LENDATE + 1) 9이여하 한다. */
rc = pfmSolarToLunar(${lunar_date}, ${solar_date});
if (rc != RC_NRM ) {
PFM_ERR("pfmSolarToLunar : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}
/* 출력 문자열의 첫번째 문자는 윤달여부 '0'이면 평달, '1'이면 윤달을 표시 */
/* 계산된 음력일자 ${lunar_date} */
/* 문자열에서 특정 문자들을 검색하고 이를 치환시킴 */
rc = pfmSreplaceStr(${apInStr}, ${apFindStr}, ${apChgStr}, ${apConvStr});
if (rc != RC_NRM) {
PFM_ERR("pfmSreplaceStr() : 문자열 치환오류 rc : [%ld]", rc);
return RC_ERR;
}
/* 문자열 앞부분을 잘라내고 이동 시작 위치부터 반환 */
rc = pfmSshiftStr(${apInStr}, ${aiShiftCnt}, ${apOutStr});
if (rc != RC_NRM) {
PFM_ERR("pfmSshiftStr() : 문자열 추출 오류 rc : [%ld]", rc);
return RC_ERR;
}
/* 문자열로부터 특정 문자들을 삭제하고 다른 문자를 삽입 */
rc = pfmSstuffStr(${apOrgStr}, ${aiFromInx}, ${aiDelCnt}, ${apIns}, ${apConvStr});
if (rc != RC_NRM) {
PFM_ERR("pfmSstuffStr() : 문자열 삭제/삽입 오류 rc : [%ld]", rc);
return RC_ERR;
}
/* 문자열에서 원하는 부분의 특정 부분만을 추출하여 반환 */
rc = pfmSsubStr (${apInStr}, ${aiFromInx}, ${aiLen}, ${apOutStr});
if (rc != RC_NRM) {
PFM_ERR("pfmSsubStr() : 문자열 추출오류 rc : [%ld]", rc);
return RC_ERR;
}
/* long형 수를 더함(계산됨) */
rc = pfmStrAddLong(${in_str}, ${long_num});
if(rc != RC_NRM) {
PFM_ERR("pfmStrAddLong : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* ASCII --> EBCDIC */
rc = pfmStrAscToEbc(${out_str}, ${out_str_length}, ${in_str}, ${in_str_length});
if(rc == RC_ERR) {
PFM_ERR("pfmStrAscToEbc : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}
/* 두 길이문자열 ltrim한 결과 비교 */
rc = pfmStrCmpLTrim(${in_str1}, ${in_str2}, ${length});
/* rc == 0 두문자열 같음 */
/* rc != 0 두문자열 다름 *//* 두 길이문자열 space모두 제거한 결과 비교 */
rc = pfmStrCmpRemoveSpace${in_str1}, ${in_str2}, ${length});
/* rc == 0 두문자열 같음 */
/* rc != 0 두문자열 다름 */
/* 두 길이 문자열 rtrim한 결과 비교 */
rc = pfmStrCmpRTrim(${in_str1}, ${in_str2}, ${length});
/* rc == 0 두문자열 같음 */
/* rc != 0 두문자열 다름 */
/* 두 길이문자열 trim한 결과 비교 */
rc = pfmStrCmpTrim(${in_str1}, ${in_str2}, ${length});
/* rc == 0 두문자열 같음 */
/* rc != 0 두문자열 다름 *//* 길이문자열 복사 남는 부분 space로 채움 */
rc = pfmStrCpyRPadSpace(${out_str}, ${in_str}, ${length});
if(rc != RC_NRM) {
PFM_ERR("pfmStrCpyRPadSpace : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* 길이문자열 복사 우정렬하고 남는부분 '0'로 채움 */
rc = pfmStrCpyRPadZero(${out_str}, ${in_str}, ${length});
if(rc == RC_ERR) {
PFM_ERR("pfmStrCpyRPadZero : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* 특정 문자 제거 후 복사 */
rc = pfmStrCpySkip(${out_str}, ${in_str}, '${char_toskip}', ${out_str_length});
if(rc != RC_NRM) {
PFM_ERR("pfmStrCpySkip : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* EBCDIC --> ASCII */
rc = pfmStrEbcToAsc(${out_str}, ${out_str_length}, ${in_str}, ${in_str_length});
if(rc != RC_NRM) {
PFM_ERR("pfmStrEbcToAsc : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* 영문대응코드 --> KSC5601 */
rc = pfmStrEngToKsc(${out_str}, ${out_str_length}, ${in_str}, ${in_str_length});
if(rc != RC_NRM) {
PFM_ERR("pfmStrEngToKsc : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* 문자열 중 정수만 추출하여 정수문자열을 변환 */
rc = pfmStrExtractDigitN(${out_str}, ${out_str_length}, ${in_str}, ${in_str_length});
if(rc != RC_NRM) {
PFM_ERR("pfmStrExtractDigitN : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}pfmStrGetErrorMsg()/* 입력문자열과 N개 문자열 중 일치하는 문자열의 위치 반환 */
rc = pfmStrGetIndex(${str_count},${in_str},"${}");
/* IBM 2byte조합형 --> KSC5601 */
rc = pfmStrIbmToKsc(${out_str}, ${out_str_length}, ${in_str}, ${in_str_length});
if(rc != RC_NRM) {
PFM_ERR("pfmStrIbmToKsc : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}pfmStrIndexOfBrokenKorean(${in_str}, ${in_str_length})/* NULL 종료문자열 알파벳 여부 체크 */
rc = pfmStrIsAlpha(${in_str});
/* TRUE(1) : 길이문자열이 모두 알파벳 FALSE(0) : 첫문자가 NULL이거나 알파벳이 아닌 문자가 존재 *//* NULL 종료문자열 알파벳 또는 숫자 여부 체크 */
rc = pfmStrIsAlphaNumeric(${in_str});
/* TRUE(1) : 모든 문자가 알파벳 또는 숫자만으로 구성된 경우
FALSE(0) : 알파벳 또는 숫자가 아닌 문자가 있는 경우 *//* NULL 종료문자열의 한글여부 체크 */
rc = pfmStrIsKsc(${in_str}, "${option}");
/* option
"A" : 문자열에 알파벳이 있어도 한글로 인정
"N" : 문자열에 숫자가 있어도 한글로 인정
"S" : 문자열에 space(0x20)가 있어도 한글로 인정 */
if(rc == RC_ERR) {
PFM_ERR("pfmStrIsKsc : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* NULL 종료문자열 소문자 여부 체크 */
rc = pfmStrIsLower(${in_str});
/* TRUE(1) : 문자열의 모든 문자가 소문자 */
/* FALSE(0) : 문자열에 대문자가 존재 *//* 첫번째문자 NULL여부 체크 */
rc = pfmStrIsNull(${in_str});
/* TRUE(1) : 첫번째 문자가 NULL */
/* FALSE(0) : 첫번째 문자가 NOT NULL */
/* NULL 종료문자열 숫자 여부 체크 */
rc = pfmStrIsNumber(${in_str});
/* TRUE(1) : 모든 문자가 알파벳 또는 숫자만으로 구성된 경우 */
/* FALSE(0) : 알파벳 또는 숫자가 아닌 문자가 있는 경우 */
/* NULL 종료문자열 space여부 체크 */
rc = pfmStrIsSpace(${in_str});
/* TRUE(1) : 모든 문자가 ' ' 이거나 첫 문자가 '\0' */
/* FALSE(0) : ' ' 이 아닌 문자 존재 */
/* NULL 종료문자열 space이거나 첫 문자 NULL 여부 체크 */
rc = pfmStrIsSpaceNull(${in_str});
/* TRUE(1) : 모든 문자가 ' ' 이거나 첫 문자가 '\0' 이면 */
/* FALSE(0) : ' ' 이 아닌 문자가 있으면 *//* NULL 종료문자열 대문자 여부 체크 */
rc = pfmStrIsUpper(${in_str});
/* TRUE(1) : 문자열의 모든 문자가 대문자 */
/* FALSE(0) : 문자열에 소문자가 존재 *//* NULL 종료문자열 '0' 여부 체크 */
rc = pfmStrIsZero(${in_str});
/* FALSE(0) : 문자열에 '0' 이 아닌 문자가 있거나 첫문자가 NULL */
/* TRUE(1) : 문자열이 모두 '0' *//* 한글을 영문표기법으로 변환 */
rc = pfmStrKscConvEng(${out_str}, ${out_str_length}, ${in_str}, ${in_str_length}, ${conv_flag});
/* PFM_KSC_CONV_ENG_DEFAULT : 일반적인 표기법
PFM_KSC_CONV_ENG_ROMAN : 로마식 표기법 */
if(rc != RC_NRM) {
PFM_ERR("pfmStrKscConvEng : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* KSC5601 --> 영문대응코드 */
rc = pfmStrKscToEng(${out_str}, ${out_str_length}, ${in_str}, ${in_str_length});
if(rc != RC_NRM) {
PFM_ERR("pfmStrKscToEng : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* KSC5601 --> IBM 2byte조합형 */
rc = pfmStrKscToIbm(${out_str}, ${out_str_length}, ${in_str}, ${in_str_length});
if(rc != RC_NRM) {
PFM_ERR("pfmStrKscToIbm : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* KSC5601 2byte --> KSC5601 */
rc = pfmStrKscToOneByte(${out_str}, ${out_str_length}, ${in_str}, ${in_str_length});
if(rc != RC_NRM) {
PFM_ERR("pfmStrKscToOneByte : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* KSC5601에서 SPACE제거 */
rc = pfmStrKscToRemoveSpace(${out_str}, ${out_str_length}, ${in_str}, ${in_str_length});
if(rc != RC_NRM) {
PFM_ERR("pfmStrKscToRemoveSpace : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* KS 2bytes완성형 한글을 IBM SOSI코드로 변환 */
rc = pfmStrKscToSosi(${out_str}, ${out_str_length}, ${out_str_length}, ${in_str}, ${in_str_length});
if(rc != RC_NRM) {
PFM_ERR("pfmStrKscToSosi : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}pfmStrLTrim(${in_str})/* 문자열 기타변환 */
rc = pfmStrnConv(${in_str}, ${in_str_length}, ${type});
/* PFMSTRINGCONVERTSPECIFIEDCHARN_CNTL2SP : 길이 문자열의 control문자를 space(0x20)으로 변환
PFMSTRINGCONVERTSPECIFIEDCHARN_NULL2SP : 길이만큼의 byte중 null을 space(0x20)으로 변환
PFMSTRINGCONVERTSPECIFIEDCHARN_ONLY_ALNUM_UPPER : 길이문자중 alphabet과 숫자만을 대문자로 변환 하여 남김 */
if(rc != RC_NRM) {
PFM_ERR("pfmStrnConv : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* 문자열 기타변환 */
rc = pfmStrnCpyConv(${out_str}, ${in_str}, ${str_length}, ${type});
/* PFMSTRINGCOPYANDCONVERTSPECIFIEDCHARN_CNTL2SP : 길이문자열의 control문자를 space(0x20)으로 변환하여 복사 */
/* PFMSTRINGCOPYANDCONVERTSPECIFIEDCHARN_NULL2SP : 길이만큼의 byte중 null을 space(0x20)으로 변환하여 복사 */
/* PFMSTRINGCOPYANDCONVERTSPECIFIEDCHARN_ONLY_ALNUM_UPPER : 길이문자열중 alphabet과 숫자만을 대문자로 변환하여 복사 */
if(rc != RC_NRM) {
PFM_ERR("pfmStrnCpyConv : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* 길이문자열 알파벳 여부 체크 */
rc = pfmStrnIsAlpha(${in_str}, ${length});
/* TRUE : 길이문자열이 모두 알파벳 FALSE : 첫문자가 NULL이거나 알파벳이 아닌 문자가 존재 *//* 길이문자열 알파벳 또는 숫자 여부 체크 */
rc = pfmStrnIsAlphaNumeric(${in_str}, ${length});
/* TRUE : 모든 문자가 알파벳 또는 숫자 FALSE : 알파벳 또는 숫자가 아닌 문자 존재 *//* 문자열 중에 한글이 포함되어 있는지 Check */
rc = pfmStrnIsKorean(${in_str}, ${in_str_length});
if(rc == RC_ERR) {
PFM_ERR("pfmStrnIsKorean : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}
/* 길이문자열 한글여부 체크 */
rc = pfmStrnIsKsc(${in_str}, ${length}, "${option}");
/* option
"A" : 문자열에 알파벳이 있어도 한글로 인정
"N" : 문자열에 숫자가 있어도 한글로 인정
"S" : 문자열에 space(0x20)가 있어도 한글로 인정 */
if(rc == RC_ERR) {
PFM_ERR("pfmStrnIsKsc : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}
/* 길이문자열 소문자 여부 체크 */
rc = pfmStrnIsLower(${in_str}, ${length});
/* TRUE : 모든 문자 소문자 FALSE : 첫번째 문자열이 NULL이거나 대문자가 존재 *//* N 문자 NULL 여부 체크 */
rc = pfmStrnIsNull(${in_str}, ${length});
/* TRUE : 모든 문자가 NULL */
/* FALSE : NULL 이 아닌 문자가 존재 *//* 길이문자열 숫자 여부 체크 */
rc = pfmStrnIsNumber(${in_str}, ${length});
/* TRUE : 문자열이 숫자 FASLE : 문자열이 숫자가 아님 *//* 길이문자열 space 여부 체크 */
rc = pfmStrnIsSpace(${in_str}, ${length});
/* TRUE : 문자열이 모두 ' ' 문자 FALSE : ' '이 아닌 문자열 존재 */
/* 길이 문자열 space이거나 첫 문자 NULL여부 체크 */
rc = pfmStrnIsSpaceNull(${in_str}, ${length});
/* TRUE : 모든 문자가 ' '이거나 첫 문자가 '\0' FASLE : ' '이 아닌 문자가 존재 */
/* 길이문자열 대문자 여부 체크 */
rc = pfmStrnIsUpper(${in_str}, ${length});
/* TRUE : 모든 문자 대문자 FALSE : 첫번째 문자열이 NULL이거나 소문자가 존재 *//* 길이문자열 '0' 여부체크 */
rc = pfmStrnIsZero(${in_str}, ${length});
/* TRUE : 길이문자열이 모두 '0' */
/* FALSE : 첫문자가 NULL이거나 '0'이 아닌 문자열 존재 */
pfmStrnLTrim(${in_str}, ${length})pfmStrnRemoveSpace(${in_str}, ${length})pfmStrnRTrim(${in_str}, ${length})/* 길이문자열(number 형 문자열)을 long형으로 변환 */
rc = pfmStrnToLong(&${long_num}, ${in_str}, ${length});
if(rc == RC_ERR) {
PFM_ERR("pfmStrnToLong : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}pfmStrnTrim(${in_str}, ${length})/* 깨진 한글 코드 제거 */
rc = pfmStrRemoveBrokenKorean(${out_str}, ${out_str_length}, ${in_str}, ${in_str_length});
if(rc != RC_NRM) {
PFM_ERR("pfmStrRemoveBrokenKorean : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}pfmStrRemoveSpace(${in_str})pfmStrRTrim(${in_str})/* IBM SOSI코드를 KS 2Bytes 완성형 한글로 변환 */
rc = pfmStrSosiToKsc(${out_str}, ${out_str_length}, ${in_str}, ${in_str_length});
if(rc != RC_NRM) {
PFM_ERR("pfmStrSosiToKsc : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* long형 수를 뺌(계산됨) */
rc = pfmStrSubLong(${in_str}, ${long_num});
if(rc != RC_NRM) {
PFM_ERR("pfmStrSubLong : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* 문자열을 hexadecimal 형태로 변환(진수 변환이 아님) */
rc = pfmStrToHex(${out_hex_str}, ${hex_str_length}, ${in_str}, ${in_str_length});
if(rc != RC_NRM) {
PFM_ERR("pfmStrToHex : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}/* NULL 종료문자열을 long형으로 변환 */
rc = pfmStrToLong(&${long_num}, ${in_str});
if(rc == RC_ERR) {
PFM_ERR("pfmStrToLong : %s rc : [%ld]", pfmUtilGetErrorMsg(), rc);
return RC_ERR;
}pfmStrTrim(${in_str})pfmStrTrimKscN(${in_str}, ${in_str_length})/* TCache가 관리하는 메모리로 부터 데이타 읽기 API */
rc = pfmTCacheGet("${cacheName}", (char*)(${key}), (void*)&(${input_data}), (unsigned long)sizeof(${input_data_size}), 0); /* flag (0 : No-Wait, 1: Wait; Default: 0) */
if(rc != RC_NRM) {
PFM_DBG("TCache Get Fail Tcache에서 데이터를 가져오는데 실패하였습니다. rc [%ld]", rc);
}/* TCache가 관리하는 메모리를 초기화 하기 위한 API */
rc = pfmTCacheInvalidate("${cacheName}", (char*)(${key}), 0);
if(rc != RC_NRM) {
if(rc == ERR_NOTFOUND) { /* TCache 에 캐쉬 데이타가 없는 경우 */
PFM_DBG("pfmTCacheInvalidate NOT Found rc[%ld]", rc);
}
else { /* TCache invalidate 에러 처리 */
PFM_DBG("pfmTCacheInvalidate ERROR!! rc[%ld]", rc);
return RC_ERR;
}
}
else {
PFM_DBG("pfmTCacheInvalidate SUCCESS!! rc[%ld]", rc);
}/* TCache가 관리하는 메모리를 초기화 하기 위한 API 해당 cacheName의 모든 데이타를 초기화 시킴 */
rc = pfmTCacheInvalidateAllItems("${cacheName}", 0);
if(rc != RC_NRM) {
if(rc == ERR_NOTFOUND) { /* TCache 에 입력한 캐쉬이름이 없는 경우 */
PFM_DBG("pfmTCacheInvalidateAllItems NOT Found rc[%ld]", rc);
}
else { /* TCache invalidate 에러 처리 */
PFM_DBG("pfmTCacheInvalidateAllItems ERROR!! rc[%ld]", rc);
return RC_ERR;
}
}
else {
PFM_DBG("pfmTCacheInvalidateAllItems SUCCESS rc[%ld]", rc);
}/* TCache가 관리하는 메모리에 데이타를 저장하기 위한 API */
rc = pfmTCachePut("${cacheName}", &${input_data}, (unsigned int)sizeof(${input_data_size}), 0); /* flag ( 0 : No-Wait, 1: Wait; Default: 0 ) */
if(rc != RC_NRM) {
PFM_DBG("Tcache put item [fail] TCache에 데이터를 저장하는데 실패하였습니다. rc [%ld]", rc);
}
else {
PFM_DBG("Tcache put item success~!! TCahce 데이터 저장 성공 rc [%ld]", rc);
} pfmToLower(${in_str})pfmToLowern(${in_str}, ${length})pfmToUpper(${in_str})pfmToUppern(${in_str}, ${length})pfmUtilGetErrorMsg() ${vArrayStructName} *${vArrayPtrName}; /* 가변배열포인터 */
${vArrayPtrName} = pfmVarrayAlloc(${vArray}, ${nSize}); /* 가변배열의 크기를 사용자가 명시적으로 할당 */
/* ${vArrayPtrName}[index] 로 가변배열 접근가능 *//* 가변배열의 맨끝에 데이터를 추가 */
rc = pfmVarrayAppend(${vArray}, &${addVArray});
if(rc != MAPPER_RETURN_OK) {
PFM_ERR("pfmVarrayAppend() : %s rc : [%ld]", pfmMapperGetError(NULL), rc); /* pfmMapperGetError 에 NULL이 아닌 pointer를 넘겨주면 error string을 복사해준다. */
return rc;
}pfmVarrayBufferSize(${vArray})
long vArrayBufferSize = 0x00;
vArrayBufferSize = pfmVarrayBufferSize(${vArray}); /* 가변배열의 할당된 메모리의 byte 크기 return */
pfmVarrayClearCount(${vArray}); /* 가변배열내의 element 개수를 0으로 초기화 */pfmVarrayCount(${vArray})
long vArrayElementCount = 0x00;
vArrayElementCount = pfmVarrayCount(${vArray}); /* 가변배열 내의 element 갯수 리턴 */
${vArrayStructName} *${vArrayPtrName}; /* 가변배열포인터 */
${vArrayPtrName} = pfmVarrayData(${vArray}); /* 가변배열의 pointer를 얻는 함수 */
/* ${vArrayPtrName}[index] 로 가변배열 접근가능 */ ${vArrayStructName} *${vArrayPtrName}; /* 가변배열포인터 */
${vArrayPtrName} = pfmVarrayElementAt(${vArray}, ${index});
/* 특정 index의 element pointer return (기존에 사용되지 않는 영역일 경우 NULL 리턴 ) */
if(${vArrayPtrName} == NULL) {
PFM_ERR("pfmVarrayElementAt() error[index가 음수이거나 out-of-Index] : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}/* 특정 index의 element pointer return */
${vArrayStructName} *${vArrayPtrName}; /* 가변배열포인터 */
${vArrayPtrName} = pfmVarrayGet(${vArray}, &{Index});
/* 특정 index의 element pointer return (기존에 사용되지 않는 영역일 경우 새로 메모리 공간 할당해 리턴) */
if(${vArrayPtrName} == NULL) {
PFM_ERR("pfmVarrayGet() error[index가 음수이거나 malloc에러 발생] : %s rc : [%ld]", pfmMapperGetError(), rc);
return rc;
}pfmVarraySize(${vArray})
long vArraySize = 0x00;
vArraySize = pfmVarraySize(${vArray}); /* 가변배열의 메모리 할당된 element 갯수 리턴 */
pfmVarrayStructSize(${vArray})
long vArrayStructSize = 0x00;
vArrayStructSize = pfmVarrayStructSize(${vArray}); /* element의 byte 크기return */
/* N번째 주 특정 요일을 날짜로 변환 */
rc = pfmWeekDayToDate(${out_date}, ${in_yyyymm}, ${week}, ${PFM_WEEK_DAY_SUN}, ${PFM_CONV_WDATTODATE_BY_CA});
/* PFM_WEEK_DAY_SUN 1 PFM_WEEK_DAY_MON 2 */
/* PFM_WEEK_DAY_TUE 3 PFM_WEEK_DAY_WED 4 */
/* PFM_WEEK_DAY_THU 5 PFM_WEEK_DAY_FRI 6 */
/* PFM_WEEK_DAY_SAT 7 */
/* PFM_CONV_WDATTODATE_BY_CA : 해당 첫 날 + wday */
/* PFM_CONV_WDATTODATE_BY_WC : 해당 끝 날 + wday */
if (rc != RC_NRM ) {
PFM_ERR("pfmWeekDayToDate : %s rc : [%ld]", pfmDateGetErrorMsg(), rc);
return RC_ERR;
}${cursor}
PRINT_${맵명}_INPUT(&${DBIO입력구조체});PRINT_${맵명}_OUTPUT(&${DBIO출력구조체});
/* 맵명은 DBIO의 물리명 대문자로 입력 */RC_APERC_CBERC_CHKRC_CONRC_DUPRC_ECNTRC_EMALLOCRC_ERESUMERC_ERRRC_ERR_DLCALLRC_ERR_NOSEND_COMMITRC_ERR_SEND_COMMITRC_ERR_SEND_ROLLBACKRC_ESUSPENDRC_ETPALLOCRC_ETXBEGINRC_ETXCLOSERC_ETXCOMMITRC_ETXOPENRC_ETXROLLBACKRC_INV_ARGSRC_INV_DATA_TYPERC_INV_LENRC_INV_LINK_CNTRC_INV_LINK_CODERC_INV_LINK_PARAMRC_INV_MSGRC_INV_PFMCOMMRC_INV_PFMIHEADRC_INV_PFMILOGRC_INV_PFMLINKRC_INV_PFMMSGBRC_INV_PFMSHDRRC_INV_SVC_NAMERC_IOF_ERRORRC_LINK_ERR_ENDRC_LINK_NFDRC_NFDRC_NRM_NOSEND_COMMITRC_NRM_NOSEND_ROLLBACKRC_NRM_SEND_ROLLBACKRC_NUSERC_OVERFLOWRC_SUPRC_TP_FORWARD_COMMITRC_TP_FORWARD_ROLLBACKRC_TP_FORWARD_SKIPRC_TP_RELAY_COMMITRC_TP_RELAY_ROLLBACKRC_TP_RELAY_SKIPRC_TP_RETURN_COMMITRC_TP_RETURN_ROLLBACKRC_TPEsizeof(${arg})fprintf(stderr, ${cursor});printf(${cursor});char ${str_name} [${str_len} + 1]; /* string형 데이터 */
bzero (${str_name}, ${str_len} + 1);${cursor}
strlen(${arg});switch (${key}) {
case ${value}:
${cursor}
break;
default:
break;
}char ${_time} [LEN_TIME + 1]; /* hhmmss */
bzero (${_time}, LEN_TIME + 1);
try {
${cursor}
} catch (${Exception} e) {
}using namespace ${namespace};
char ${utime} [LEN_UTIME + 1]; /* hhmmssuuuuuu */
bzero (${utime}, LEN_UTIME + 1);Version 2.4 Short API Name
<추가 및 수정 사항>
1. SET_ERR 수정
2. SET_MSG 수정
3. pfmDbioSetSavePoin()추가
4. pfmDbioRollbackTo() 추가
5. STRNCPY 와 STRCPY는 같은 strncpy의 메크로이나 strncpy의 대문자 STRNCPY가 함수의 기능설명에 적합하다 사료되어 STRNCPY로 통일
STRNCMP, STRNCAT, SNPRINTF <-- 아래함수로 통일
6. pfmMapperPrint${서비스명}_OUT(SVCOUT) 오류 수정
Version 2.5
<추가 및 수정 사항>
1. exception/selectArray추가 : array_cnt를 선언하여 RC_NFD가 리턴되었을때의 예외처리 및 RC_NRM일 때의 처리로직 자동 작성
2. pfmNumCalcLong이 pfmNumCalc으로 출력되는 오류 수정.
3. TRUE, FALSE주석 수정
Version 2.6
<추가 및 수정 사항>
1. exception 계열 템플릿 수정
2. pfmSgetWeekDay 추가
3. pfmSisMonthLastDay 추가
Version 2.7
<추가 및 수정 사항>
1. SET_ERR_EXT 함수 추가
2. pfmSgetIndexFindStr(문자열내 문자열 검색후 검색된 문자열의 인덱스 반환)
3. pfmLogClearError 에러메시지 클리어 추가
4. pfmLogClearMessage 정상메시지 클리어 추가
5. pfmLogClearBuffer 모든 메시지 클리어 추가
Version 2.8
<추가 및 수정 사항>
1. pfmInitError (에러 메시지 클리어 함수)
version 2.9
<추가 및 수정 사항>
1. pfmDateGetErrorMsg() 추가 (에러메세지 반환함수)
2. pfmStrGetErrorMsg() 추가 (에러메세지 반환함수)
3. pfmSetMsgDir(추가) (메시지 출력 방향)
4. 코드인스펙션 반영 LEN+1 -> LEN + 1로 + 1 에 space추가