C용 스택 함수

C 함수를 호출하기 위해 EGL이 함수 및 호출 코드 간에 인수를 전달하는 메커니즘인 인수 스택을 사용합니다. EGL 호출 함수는 인수를 스택에 푸시하고 피호출 C 함수는 이를 스택에서 가져와 값을 사용합니다. 피호출 함수는 해당 리턴 값을 스택에 푸시하고 호출자는 이를 가져와 값을 검색합니다. pop 및 return 외부 함수는 인수 스택 라이브러리와 함께 제공됩니다. pop 외부 함수는 각각 인수 스택에서 가져온 값의 데이터 유형에 따라 아래에서 설명합니다. return 외부 함수는 C용 Return 함수에서 설명합니다.

참고: pop 함수는 원래 IBM® Informix® 4GL (I4GL)에서 사용했으므로 함수 이름에 "4gl"이 포함됩니다.

값을 리턴하는 라이브러리 함수

C 함수에서 다음 라이브러리 함수를 호출하여 인수 스택에서 숫자 값을 가져올 수 있습니다.
  • extern void ibm_lib4gl_popMInt(int *iv)
  • extern void ibm_lib4gl_popInt2(short *siv)
  • extern void ibm_lib4gl_popInt4(int *liv)
  • extern void ibm_lib4gl_popFloat(float *fv)
  • extern void ibm_lib4gl_popDouble(double *dfv)
  • extern void ibm_lib4gl_popDecimal(dec_t *decv)
  • extern void ibm_lib4gl_popInt8(ifx_int8_t *bi)
다음 표 및 라애의 유사한 표에서는 I4GL 7.31 이전 버전과 버전 7.31 이상 간에 리턴 함수 이름을 맵핑합니다.
7.31 이전 버전 이름 버전 7.31 이상 이름
popint ibm_lib4gl_popMInt
popshort ibm_lib4gl_popInt2
poplong ibm_lib4gl_popInt4
popflo ibm_lib4gl_popFloat
popdub ibm_lib4gl_popDouble
popdec ibm_lib4gl_popDecimal
값을 가져오는 모든 라이브러리 함수와 마찬가지로 이러한 각 함수에서 다음 조치를 수행합니다.
  1. 인수 스택에서 한 개의 값을 제거합니다.
  2. 필요한 경우 해당 데이터 유형을 변환합니다. 스택의 값을 지정된 유형으로 변환할 수 없으면 오류가 발생합니다.
  3. 값을 지정된 변수에 복사합니다.

구조 유형 dec_tifx_int8_t를 사용하여 C 프로그램의 DECIMAL 및 BIGINT 데이터를 표현합니다. dec_tifx_int8_t 구조 유형 및 DECIMAL 및 BIGINT 변수를 조작하고 인쇄하는 라이브러리 함수에 대한 자세한 정보는 IBM Informix ESQL/C 프로그래머용 매뉴얼을 참조하십시오.

문자열를 가져오기 위한 라이브러리 함수

다음 라이브러리 함수를 호출하여 문자 값을 제거할 수 있습니다.
  • extern void ibm_lib4gl_popQuotedStr(char *qv, int len)
  • extern void ibm_lib4gl_popString(char *qv, int len)
  • extern void ibm_lib4gl_popVarChar(char *qv, int len)
7.31 이전 버전 이름 버전 7.31 이상 이름
popquote ibm_lib4gl_popQuotedStr
popstring ibm_lib4gl_popString
popvchar ibm_lib4gl_popVarChar

ibm_lib4gl_popQuotedStr( )ibm_lib4gl_popVarChar( ) 둘 다 len 바이트를 문자열 버퍼 *qv에 정확히 복사합니다. 여기서 ibm_lib4gl_popQuotedStr( )은 필요한 대로 공백으로 채우지만, ibm_lib4gl_popVarChar( )는 전체 길이까지 채우지 않습니다. 버퍼에 복사된 최종 바이트는 문자열을 종료하는 널 바이트이므로 최대 문자열 데이터 길이는 len-1입니다. 스택에 저장된 인수의 길이가 len-1보다 크면 후미 바이트가 유실됩니다.

len 인수는 수신 문자열 버퍼의 최대 크기를 설정합니다. ibm_lib4gl_popQuotedStr( )을 사용하여 스택의 값이 비어 있는 문자열인 경우에도 정확히 len 바이트(후미 공백 공간 및 널 포함)를 수신합니다. ibm_lib4gl_popQuotedStr( )에서 수신된 문자열의 실제 데이터 길이를 찾으려면 가져온 값에서 후미 공간을 잘라야 합니다.
참고: 함수 ibm_lib4gl_popString( )ibm_lib4gl_popQuotedStr( )ibm_lib4gl_popString( )이 자동으로 후미 공백을 자른다는 점을 제외하고 동일합니다.

시간 값을 가져오기 위한 라이브러리 함수

다음 라이브러리 함수를 호출하여 DATE, INTERVAL 및 DATETIME(TIMESTAMP) 값을 가져올 수 있습니다.
  • extern void ibm_lib4gl_popDate(int *datv)
  • extern void ibm_lib4gl_popInterval(intrvl_t *iv, int qual)
다음 라이브러리 함수를 호출하여 TIMESTAMP 값을 가져올 수 있습니다.
  • extern void ibm_lib4gl_popDateTime(dtime_t *dtv, int qual)
7.31 이전 버전 이름 버전 7.31 이상 이름
popdate ibm_lib4gl_popDate
popdtime ibm_lib4gl_popDateTime
popinv ibm_lib4gl_popInterval

구조 유형 dtime_tintrvl_t를 사용하여 C 프로그램의 DATETIME 및 INTERVAL 데이터를 표합니다. qual 인수는 DATETIME 또는 INTERVAL 규정자의 2진 표현을 수신합니다. dtime_tintrvl_t 구조 유형과 DATE, DATETIME 및 INTERVAL 변수를 조작하고 인쇄하는 라이브러리 함수에 대한 자세한 정보는 IBM Informix ESQL/C 프로그래머용 매뉴얼을 참조하십시오.

BYTE 또는 TEXT 값을 가져오기 위한 라이브러리 함수

다음 함수를 호출하여 BYTE 또는 TEXT 인수를 가져올 수 있습니다.
  • extern void ibm_lib4gl_popBlobLocator(loc_t **blob)
7.31 이전 버전 이름 버전 7.31 이상 이름
poplocator ibm_lib4gl_popBlobLocator
구조 유형 loc_t는 BYTE 또는 TEXT 값을 정의하고 IBM Informix ESQL/C 프로그래머용 매뉴얼에서 논의됩니다. .

EGL이 자동 데이터 유형 변환을 제공하므로 BYTE 또는 TEXT 인수를 BYTE 또는 TEXT로 가져와야 합니다.