소개

본 장에서는 ProFrame의 API를 간략히 소개하고 실제로 API를 사용하기 앞서 필요한 준비 작업에 대해 설명한다.

1. 개요

ProFrame의 API는 처리하는 데이터 형태에 따라 다음과 같이 6개의 유틸리티로 나누어진다.

  • Date 유틸리티

    문자열 혹은 숫자형으로 표현된 날짜나 시간의 데이터를 처리하는 유틸리티이다. 이 유틸리티는 날짜 및 시간 정보를 가져오는 API 또는 이것을 계산, 비교, 변환 등을 처리하는 API 들로 구성된다.

  • Number 유틸리티

    C언어의 기본 수치 자료형은 유효 자릿수가 너무 작거나 정밀도에 문제가 있다. 이와 같은 한계를 극복하기 위해 ProFrame는 38자리의 유효자릿수와 이 범위 안에서의 높은 정밀도를 보장하는 자료형을 제공한다. 이 자료형은 PfmNumber이며, 다음과 같은 구조를 가진다.

    typedef struct {
       unsigned char size;
       unsigned char signexp;
       unsigned char coef[NUMBER_MAX_LEN];
    } PfmNumber;

    PfmNumber형은 다른 말로 Number형이라고도 한다. 이 유틸리티는 Number형 변수에 대한 여러 가지 계산, 비교, 변환 등을 처리하는 API들로 구성된다.

  • String 유틸리티

    문자열의 변환, 비교 등을 처리하는 API들로 구성된다.

  • Long 유틸리티

    Long형 값에 대한 반올림, 올림, 내림을 처리하는 API들로 구성된다.

  • 에러 처리 및 디버그 유틸리티

    에러 처리 및 디버깅과 관련된 API들로 구성된다.

  • 기타 유틸리티

    앞에서 언급된 유틸리티 외의 기타 API들로 구성된다.

ProFrame를 이용하여 서비스 또는 업무 모듈을 개발할 때 처리할 데이터에 맞게 위와 같은 유틸리티를 이용한다. 각 유틸리티에 대한 자세한 내용은 Date 유틸리티에서 설명한다.

다음 절에서는 실제 API를 사용하기에 앞서 필요한 작업에 대해 기술한다.

2. 헤더 파일 include

각 유틸리티와 관련된 API를 사용하기 위해서는 다음과 같은 헤더 파일을 소스 내부에 include해야 한다.

#include <pfmUtility.h>

Date, Number, 에러 처리 및 디버그 유틸리티를 사용하기 위해서는 다음의 헤더 파일을 소스 내부에 include해야 한다.

유틸리티 헤더 파일

Date

#include <pfmDateUtilily.h>

Number

#include <pfmNumber.h>

에러처리 및 디버그

#include <pfmLogMacro.h>

3. API 목록

본 절에서는 ProFrame가 제공하는 API을 유틸리티 별로 간략히 설명한다.

3.1. Date 유틸리티

다음은 날짜 또는 시간 처리와 관련된 API 목록이다.

API 헤더 파일

pfmIsValidDate

날짜의 정합성을 체크한다.

pfmIsValidTime

시간의 정합성을 체크한다.

pfmIsInYyyymmdd

날짜 포맷 정합성을 체크한다.

pfmDateCmp

두 날짜의 선후를 비교한다.

pfmGetDate

yyyymmdd 형태로 현재 시스템의 날짜 정보를 가져온다.

pfmGetTime

hhmmss 형태로 현재 시스템의 시간 정보를 가져온다.

pfmGetUTime

hhmmssuuuuuu 형태로 현재 시간 정보를 가져온다.

pfmGetNTime

hhmmssnnnnnnnnn 형태로 현재 시간 정보를 가져온다.

pfmGetDateTime

날짜와 시간 정보를 yyyymmddhhmmss 형태로 한꺼번에 가져온다.

pfmGetDateUTime

날짜와 시간 정보를 yyyymmddhhmmssuuuuuu 형태로 한꺼번에 가져온다.

pfmGetDateNTime

날짜와 시간 정보를 yyyymmddhhmmssnnnnnnnnn 형태로 한꺼번에 가져온다.

pfmGetLastDayOfFebruary

입력 받은 해의 2월 일수를 반환한다.

pfmIsLeapYear

입력 받은 해가 윤년인지를 체크한다.

pfmGetWeekDay

입력 받은 날짜의 요일을 숫자 정보로 반환한다.

pfmWeekDayToDate

N번째 주 특정 요일을 날짜로 변환한다.

pfmDateFormat

날짜를 원하는 포맷으로 변환한다.

pfmDateJulianToGregorian

율리우스 날짜를 그레고리언 날짜로 변환한다.

pfmDateGregorianToJulian

그레고리언 날짜를 율리우스 날짜로 변환한다.

pfmDateSolarToLunar

양력 날짜를 음력 날짜로 변환한다.

pfmDateLunarToSolar

음력 날짜를 양력 날짜로 변환한다.

pfmCountDays

시작일과 종료일 사이의 일수, 월수를 계산한다.

pfmCalcDate

시작일을 입력한 경우 종료일을 종료일을 입력한 경우 시작일을 계산한다.

pfmDateCalcQuarterStartDateEndDate

입력 날짜의 분기, 분기 시작일, 분기 종료일 계산한다.

pfmDateGetErrorMsg

Date 유틸리티를 사용하는 중에 에러가 발생하였을 때 해당 에러 메시지를 보여준다.

3.2. Number 유틸리티

다음은 숫자 처리와 관련된 API 목록이다.

API 헤더 파일

pfmNumAssign

PfmNumber형 파라미터를 다른 PfmNumber형 파라미터에 대입한다.

pfmNumToLong

PfmNumber형을 Long형으로 변환한다.

pfmNumGetFromLong

Long형을 PfmNumber형으로 변환한다.

pfmNumToDouble

PfmNumber형을 Double형으로 변환한다.

pfmNumGetFromDouble

Double형을 PfmNumber형으로 변환한다.

pfmNumGetFromDouble2

Double형을 반올림하여, PfmNumber형으로 변환한다.

pfmNumGetFromStr

NULL 종료 무자열로 표현된 값을 PfmNumber형으로 변환한다.

pfmNumGetFromStrn

특정 길이 문자열을 PfmNumber형으로 변환한다.

pfmNumGetStrLPadZeroN

PfmNumber형을 Char형 문자열로 변환한 후 오른쪽 정렬하여 앞 부분을 0으로 채운다.

pfmNumToStr

PfmNumber형을 Char형 문자열로 변환한다.

pfmNumToStrn

PfmNumber형을 특정 길이 문자열로 변환한다.

pfmNumCmp

두 PfmNumber형의 값을 비교한다.

pfmNumCmpAbs

두 PfmNumber형의 절댓값을 비교한다.

pfmNumIsInteger

입력 받은 값이 정수인지 체크한다.

pfmNumCmpLong

PfmNumber형 파라미터와 Long형 파라미터의 값을 비교한다.

pfmNumCmpStr

PfmNumber형 파라미터와 Char형 문자열을 숫자로 변환하여 두 수의 크기를 비교한다.

pfmNumCmpStrn

PfmNumber형 파라미터와 특정 길이의 문자열을 숫자로 변환하여 두 수의 크기를 비교한다.

pfmNumNegate

PfmNumber형 파라미터를 음수 처리한다.

pfmNumAbs

PfmNumber형 파라미터를 절댓값 처리한다.

pfmNumAdd

두 PfmNumber형 파라미터를 덧셈 처리한다.

pfmNumSub

두 PfmNumber형 파라미터를 뺄셈 처리한다.

pfmNumMul

두 PfmNumber형 파라미터를 곱셈 처리한다.

pfmNumDiv

두 PfmNumber형 파라미터를 나눗셈 처리한다.

pfmNumIntDiv

두 PfmNumber형 파라미터를 나눗셈 처리한 후 결과 값을 정수화한다.

pfmNumMod

두 PfmNumber형 파라미터를 나눗셈 처리한 후 나머지를 반환한다.

pfmNumModDiv

두 PfmNumber형 파라미터를 나눗셈 처리한 후 몫과 나머지를 반환한다.

pfmNumTruncAt

입력 값의 특정 위치 이후 숫자를 버림 처리한다.

pfmNumRoundAt

소수점 이하의 특정 위치를 반올림한다.

pfmNumTrunc

소수점 이하를 버림 처리한다.

pfmNumRound

소수점 이하를 반올림 처리한다.

pfmNumSqr

입력 값을 제곱 처리한다.

pfmNumPower

입력 받은 x, y 파라미터를 이용하여 xy 처리한다.

pfmNumInc

두 입력 값을 덧셈 처리하여 한 파라미터에 결과 값을 출력한다.

pfmNumDec

두 입력 값을 뺄셈 처리하여 한 파라미터에 결과 값을 출력한다.

pfmNumAddStr

문자열을 숫자로 변환하여 다른 입력 값과 덧셈처리한다.

pfmNumSubStr

문자열을 숫자로 변환하여 다른 입력 값과 뺄셈처리한다.

pfmNumMulStr

문자열을 숫자로 변환하여 다른 입력 값과 곱셈처리한다.

pfmNumDivString

문자열을 숫자로 변환하여 다른 입력 값과 나눗셈 처리한다.

pfmNumAddStrn

특정 길이 문자열을 숫자로 변환하여 다른 입력 값과 덧셈 처리한다.

pfmNumSubStrn

특정 길이 문자열을 숫자로 변환하여 다른 입력 값과 뺄셈 처리한다.

pfmNumMulStrn

특정 길이 문자열을 숫자로 변환하여 다른 입력 값과 곱셈 처리한다.

pfmNumDivStrn

특정 길이 문자열을 숫자로 변환하여 다른 입력 값과 나눗셈 처리한다.

pfmNumAddLong

PfmNumber형 입력 값과 Long형 입력 값을 덧셈 처리한다.

pfmNumSubLong

PfmNumber형 입력 값과 Long형 입력 값을 뺄셈 처리한다.

pfmNumMulLong

PfmNumber형 입력 값과 Long형 입력 값을 곱셈 처리한다.

pfmNumDivLong

PfmNumber형 입력 값과 Long형 입력 값을 나눗셈 처리한 후 결과 값을 Long형으로 반환한다.

pfmNumModDivLong

PfmNumber형 입력 값과 Long형 입력 값을 나눗셈 처리한 후 몫과 나머지를 반환한다.

pfmNumAddN

입력된 값을 N번 덧셈 처리한다.

pfmNumMulN

입력된 값을 N번 곱셈 처리한다.

pfmNumPowLong

입력 받은 x, y로 xy 처리한다.

pfmNumRound

입력된 값의 특정 소수점 자리를 반올림 처리한다.

pfmNumRoundUp

입력된 값의 특정 소수점 자리를 올림 처리한다.

pfmNumCalc

사칙연산의 계산 결과를 PfmNumber형으로 출력한다.

pfmNumCalcLong

사칙연산의 계산 결과를 Long형으로 출력한다.

pfmNumToCommaStrN

PfmNumber형의 숫자 데이터를 콤마(,)가 포함된 문자열로 변환한다.

pfmNumToInFmtStrN

PfmNumber형의 숫자 데이터를 특정 포맷의 문자열로 변환한다.

pfmNumPrint

PfmNumber형의 입력 값을 메시지용 임시 문자열로 변환한다.

pfmNumPrintComma

PfmNumber형의 입력 값을 메시지용 임시 문자열로 변환한 후 천단위 구분자를 표시하여 반환한다.

pfmNumFindLocationOfLeastSignificantDigit

입력 값의 소수점 자리수를 반환한다.

pfmNumDump

PfmNumber형의 입력 값을 Hex 문자열로 변환한다.

pfmNumGetErrorMsg

Number 유틸리티를 사용하는 중 에러가 발생한 경우 해당 에러 메시지를 출력한다.

3.3. String 유틸리티

다음은 문자열 처리와 관련된 API 목록이다.

API 헤더 파일

pfmStrIsLower

NULL 종료 문자열의 모든 문자가 소문자인지를 체크한다.

pfmStrnIsLower

길이 문자열의 모든 문자가 소문자인지를 체크한다.

pfmStrIsUpper

NULL 종료 문자열의 모든 문자가 대문자인지를 체크한다.

pfmStrnIsUpper

길이 문자열의 모든 문자가 대문자인지를 체크한다.

pfmStrIsAlpha

NULL 종료 문자열의 모든 문자가 알파벳인지를 체크한다.

pfmStrnIsAlpha

길이 문자열의 모든 문자가 알파벳인지를 체크한다.

pfmStrIsAlphaNumeric

NULL 종료 문자열의 모든 문자가 알파벳 또는 숫자인지를 체크한다.

pfmStrnIsAlphaNumeric

길이 문자열의 모든 문자가 알파벳 또는 숫자인지를 체크한다.

pfmStrIsNull

문자열의 첫 번째 문자가 NULL(‘\0’)인지를 체크한다.

pfmStrnIsNull

N개의 연속된 문자가 모두 NULL(‘\0’)인지를 체크한다.

pfmStrIsNumber

NULL 종료 문자열의 모든 문자가 숫자인지를 체크한다.

pfmStrnIsNumber

길이 문자열의 모든 문자가 숫자인지를 체크한다.

pfmStrIsSpace

NULL 종료 문자열의 모든 문자가 공백으로 처리되어 있는지를 체크한다.

pfmStrnIsSpace

길이 문자열의 모든 문자가 공백으로 처리되어 있는지를 체크한다.

pfmStrIsSpaceNull

NULL 종료 문자열의 모든 문자가 공백으로 처리되어 있는지 또는 첫 번째 문자가 NULL인지를 체크한다.

pfmStrnIsSpaceNull

길이 문자열의 모든 문자가 공백으로 처리되어 있는지 또는 첫 번째 문자가 NULL인지를 체크한다.

pfmStrIsZero

NULL 종료 문자열의 모든 문자가 0인지를 체크한다.

pfmStrnIsZero

길이 문자열의 모든 문자가 0인지를 체크한다.

pfmStrIsValidDigit

주어진 문자열의 주민등록번호나 사업자등록번호의 유효성을 체크한다.

pfmStrIsKsc

NULL 종료 문자열의 모든 문자가 한글인지를 체크한다.

pfmStrnIsKsc

길이 문자열의 모든 문자가 한글인지를 체크한다.

pfmStrnIsKorean

입력된 문자열에 한글이 한자라도 포함되어 있는지를 체크한다.

pfmStrLTrim

NULL 종료 문자열의 왼쪽 공백을 제거한다.

pfmStrnLTrim

길이 문자열의 왼쪽 공백을 제거한다.

pfmStrRTrim

NULL 종료 문자열의 오른쪽 공백을 제거한다.

pfmStrnRTrim

길이 문자열의 오른쪽 공백을 제거한다.

pfmStrTrim

NULL 종료 문자열의 좌우 공백을 제거한다.

pfmStrnTrim

길이 문자열의 좌우 공백을 제거한다.

pfmStrRemoveSpace

NULL 종료 문자열의 space(0x20)를 제거한다.

pfmStrnRemoveSpace

길이 문자열의 space(0x20)를 제거한다.

pfmStrCmpLTrim

두 문자열의 왼쪽 공백을 제거한 후 결과를 비교한다.

pfmStrCmpRTrim

두 문자열의 오른쪽 공백을 제거한 후 결과를 비교한다.

pfmStrCmpTrim

두 문자열의 좌우 공백을 제거한 후 결과를 비교한다.

pfmStrCmpRemoveSpace

두 문자열의 space(0x20)를 제거한 후 결과를 비교한다.

pfmStrCpyRPadSpace

원하는 길이만큼 문자열을 복사하고 끝에 남는 부분은 space(0x20)로 채운다.

pfmStrCpyRPadZero

원하는 길이만큼 문자열을 복사한 후 오른쪽 정렬하고 앞에 남는 부분은 0으로 채운다.

pfmStrCpySkip

원본 문자열에서 특정 문자를 제거한 후 다른 문자열로 복사한다.

pfmStrExtractDigitN

NULL 종료 문자열에서 정수만 추출하여 정수형 문자열을 반환한다.

pfmStrCmpMulti

입력된 여러 문자열이 기준 문자열과 같은지 비교한다.

pfmStrGetIndex

N개의 NULL 종료 문자열 중 일치하는 문자열을 검색하여 일치 문자열의 위치를 알려준다.

pfmToLower

입력된 NULL 종료 문자열을 소문자로 변환한다.

pfmToLowern

입력된 길이 문자열을 소문자로 변환한다.

pfmUpper

입력된 NULL 종료 문자열을 대문자로 변환한다.

pfmToUppern

입력된 길이 문자열을 대문자로 변환한다.

pfmAscToInt

정수 문자열을 Int형으로 변환한다.

pfmAscToLong

정수 문자열을 Long형으로 변환한다.

pfmStrToLong

NULL 종료 문자열을 Long형으로 변환한다.

pfmStrnToLong

길이 문자열을 Long형으로 변환한다.

pfmLongToStrn

Long형 숫자를 문자열로 변환한다.

pfmLongToStrnLpadZero

Long형 숫자를 문자열로 변환한 후 오른쪽 정렬하여 공백을 0으로 채운다.

pfmStrAddLong

정수 문자열에 Long형 정수를 더한 후 문자열로 변환한다.

pfmStrSubLong

정수 문자열에서 Long형 정수를 뺀 후 문자열로 변환한다.

pfmStrToHex

NULL 종료 문자열을 hexadecimal 형태로 변환한다.

pfmStrAscToEbc

ASCII 문자열을 EBCDIC형으로 변환한다.

pfmStrEbcToAsc

EBCDIC 문자열을 ASCII형으로 변환한다.

pfmStrEngToKsc

영문 대응 코드를 KSC5601형으로 변환한다.

pfmStrKscToEng

KSC5601 문자열을 영문 대응 코드로 변환한다.

pfmStrKscToIbm

KSC5601 문자열을 IBM 2Bytes 조합형 코드로 변환한다.

pfmStrIbmToKsc

IBM 2Bytes 조합형 코드를 KSC5601 문자열로 변환한다.

pfmStrKscToSosi

KS 2Bytes 완성형 한글 문자열을 IBM SOSI 한글 코드로 변환한다.

pfmStrSosiToKsc

IBM SOSI 한글 코드를 KS 2Bytes 완성형 한글 문자열로 변환한다.

pfmStrKscConvEng

한글 문자열을 영문 문자열로 변환한다.

pfmStrKscToRemoveSpace

KSC5601 한글 문자열에서 space를 제거한다.

pfmStrKscToTwoBytes

KSC5601 문자열을 KSC5601 2Bytes형으로 변환한다.

pfmStrKscToOneByte

KSC5601 2Bytes 문자열을 KSC5601형으로 변환한다.

pfmStrnConv

문자열을 입력된 방식으로 변환한다.

pfmStrnCpyConv

문자열을 입력된 방식으로 변환한 후 변환 결과를 다른 문자열로 복사한다.

pfmStrRemoveBrokenKorean

입력 문자열에서 깨진 한글 코드를 제거한다.

pfmStrIndexOfBrokenKorean

입력 문자열에서 한글 코드가 깨지기 시작한 위치를 알려준다.

pfmStrRemoveBrokenKsc

문자 구분 값에 깨진 문자는 삭제하고 한글, 전각문자를 표시한다. (pfmStrRemoveBrokenKorean를 보완한 API)

pfmStrTrimKscN

문자열 앞 또는 뒤의 공백이나 KSC5601 SPACE를 제거한다.

pfmStrGetErrorMsg

String 유틸리티 사용하는 중 에러가 발생할 경우 해당 에러 메시지를 보여준다.

3.4. Long 유틸리티

다음은 Long형의 데이터 처리와 관련된 API 목록이다.

API 헤더 파일

pfmLongRoundAt

입력 값을 소수점 pos 자리까지 반올림한다.

pfmLongCeilAt

입력 값을 소수점 pos 자리까지 올림 처리한다.

pfmLongFloorAt

입력 값을 소수점 pos 자리까지 버림 처리한다.

3.5. 에러 처리 및 디버그 유틸리티

다음은 에러 처리 및 디버깅과 관련된 API 목록이다.

API 헤더 파일

PFM_ERR

해당 서버의 로그 파일에 에러 정보를 출력한다.

PFM_DBG

해당 서버의 로그 파일에 디버깅 정보를 출력한다.

PFM_TRY

함수가 호출되기 전과 후에 해당 함수를 추적(trace) 로그로 출력한다.

PFM_TRYNJ

함수가 호출되기 전과 후에 해당 함수를 추적(trace) 로그로 출력한다.

PFM_HEXDUMP

버퍼의 내용을 Hexa 코드로 로그에 출력한다.

pfmUtilGetErrorMsg

Date, Number, String 유틸리티 사용하는 중 에러가 발생하면 에러 메시지를 출력한다.

3.6. 기타 유틸리티

다음은 앞 절에서 다룬 유틸리티 외의 기타 API 목록이다.

API 헤더 파일

pfmCalcAge

주민등록번호를 입력받아 만 나이를 계산한다.

PFM_MIN

입력 받은 두 값 중에 작은 값을 알려준다.

PFM_MIN3

입력 받은 세 값 중에서 가장 작은 값을 반환한다.

PFM_MAX

입력 받은 두 값 중에 큰 값을 반환한다.

PFM_MAX3

입력 받은 세 값 중에서 가장 큰 값을 반환한다.

PFM_ABS

입력 받은 값을 절댓값 처리한다.