È£½ºÆ® º¯¼ö´Â SQL¹®¿¡¼ ÂüÁ¶µÇ´Â FORTRAN ¾ð¾î º¯¼öÀÔ´Ï´Ù. ÀÌ·± º¯¼ö¸¦ »ç¿ëÇÏ¿© ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥À¸·Î ÀÔ·Â µ¥ÀÌÅ͸¦ Àü´ÞÇÏ°í ±×·ÎºÎÅÍ Ãâ·Â µ¥ÀÌÅ͸¦ ¼ö½ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥À» »çÀü ó¸® ÄÄÆÄÀÏÇϸé ÄÄÆÄÀÏ·¯¿¡¼ ´Ù¸¥ FORTRAN º¯¼ö¿Í ¸¶Âù°¡Áö·Î È£½ºÆ® º¯¼ö¸¦ »ç¿ëÇÕ´Ï´Ù. È£½ºÆ® º¯¼ö¸¦ ¸í¸íÇϰí, ¼±¾ðÇϰí, »ç¿ëÇÒ¶§ ´ÙÀ½ Á¦¾ÈÀ» Ȱ¿ëÇϽʽÿÀ.
SQL »çÀü ó¸® ÄÄÆÄÀÏ·¯¿¡¼ ¼±¾ðµÈ À̸§À¸·Î È£½ºÆ® º¯¼ö¸¦ ½Äº°ÇÕ´Ï´Ù. ´ÙÀ½ Á¦ÇÑÀÌ Àû¿ëµË´Ï´Ù.
SQL ¼±¾ð ÀýÀº È£½ºÆ® º¯¼ö ¼±¾ðÀ» ½Äº°Çϴµ¥ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ÀýÀº ÈÄ¼Ó SQL¹®¿¡¼ ÂüÁ¶ÇÒ ¼ö Àִ ȣ½ºÆ® º¯¼ö¸¦ ÈÄ¼Ó »çÀü ó¸® ÄÄÆÄÀÏ·¯¿¡ ¾Ë·Á ÁÝ´Ï´Ù.
FORTRAN »çÀü ó¸® ÄÄÆÄÀÏ·¯¸¸ÀÌ À¯È¿ÇÑ FORTRAN ¼±¾ðÀÇ ºÎ¼Ó ÁýÇÕÀ» À¯È¿ÇÑ È£½ºÆ® º¯¼ö ¼±¾ðÀ¸·Î ÀνÄÇÕ´Ï´Ù. ÀÌ·± ¼±¾ð¿¡¼ ¼ýÀÚ³ª ¹®ÀÚ º¯¼ö¸¦ Á¤ÀÇÇÕ´Ï´Ù. ¼ýÀÚ È£½ºÆ® º¯¼ö´Â ¼ýÀÚ SQL ÀÔ·Â ¶Ç´Â Ãâ·Â °ªÀÇ ÀÔ·Â ¶Ç´Â Ãâ·Â º¯¼ö·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹®ÀÚ È£½ºÆ® º¯¼ö´Â ¹®ÀÚ, ³¯Â¥, ½Ã°£ ¶Ç´Â ½Ã°£¼ÒÀÎ SQL ÀÔ·Â ¶Ç´Â Ãâ·Â °ªÀÇ ÀÔ·Â ¶Ç´Â Ãâ·Â º¯¼ö·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÁ·Î±×·¡¸Ó°¡ Ãâ·Â º¯¼ö°¡ ¼ö½ÅÇÑ °ªÀ» Æ÷ÇÔÇÒ¸¸Å ÃæºÐÈ÷ ±ä Áö È®ÀÎÇØ¾ß ÇÕ´Ï´Ù. FORTRAN¿¡¼ ¼ýÀÚ È£½ºÆ® º¯¼öÀÇ ±¸¹®Àº ¼ýÀÚ È£½ºÆ® º¯¼öÀÇ ±¸¹®À» ³ªÅ¸³À´Ï´Ù.
±¸Á¶È À¯Çü¿¡ ´ëÇØ È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇÏ´Â °Í¿¡ ´ëÇÑ Á¤º¸´Â ±¸Á¶È À¯Çü È£½ºÆ® º¯¼ö ¼±¾ðÀ» ÂüÁ¶ÇϽʽÿÀ.
FORTRAN¿¡¼ ¼ýÀÚ È£½ºÆ® º¯¼öÀÇ ±¸¹® >>-+-INTEGER*2--------+-----------------------------------------> +-INTEGER*4--------+ +-REAL*4-----------+ +-REAL *8----------+ '-DOUBLE PRECISION-' .-,-----------------------------------. V | >--------varname--+---------------------+---+------------------>< '- / initial-value / -'
¼ýÀÚ È£½ºÆ® º¯¼ö °í·Á»çÇ×:
FORTRAN¿¡¼ ¹®ÀÚ È£½ºÆ® º¯¼öÀÇ ±¸¹®: °íÁ¤ ±æÀÌ´Â ¹®ÀÚ È£½ºÆ® º¯¼öÀÇ ±¸¹®À» ³ªÅ¸³À´Ï´Ù.
FORTRAN¿¡¼ ¹®ÀÚ È£½ºÆ® º¯¼öÀÇ ±¸¹®: °íÁ¤ ±æÀÌ .-,-----------------------------------. V | >>-CHARACTER--+----+-----varname--+---------------------+---+-->< '-*n-' '- / initial-value / -'
º¯¼ö ±æÀÌ
.-,----------. V | >>-SQL TYPE IS VARCHAR--(length)-----varname---+---------------><
¹®ÀÚ È£½ºÆ® º¯¼ö °í·Á»çÇ×:
VARCHAR ¿¹:
¼±¾ð:
sql type is varchar(1000) my_varchar
±× °á°ú ´ÙÀ½ ±¸Á¶°¡ »ý¼ºµË´Ï´Ù.
character my_varchar(1000+2) integer*2 my_varchar_length character my_varchar_data(1000) equivalence( my_varchar(1), + my_varchar_length ) equivalence( my_varchar(3), + my_varchar_data )
¿¹¸¦ µé¾î, ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ my_varchar_length¿Í my_varchar_data¸¦ Á¶ÀÛÇÏ¿© È£½ºÆ® º¯¼öÀÇ ³»¿ëÀ» ¼³Á¤Çϰųª °Ë»çÇÒ ¼ö ÀÖ½À´Ï´Ù. VARCHAR¸¦ Àüü·Î ÂüÁ¶Çϱâ À§ÇØ ±âº» À̸§(ÀÌ °æ¿ì, my_varchar)ÀÌ SQL¹®¿¡¼ »ç¿ëµË´Ï´Ù.
LONG VARCHAR ¿¹:
¼±¾ð:
sql type is varchar(10000) my_lvarchar
±× °á°ú ´ÙÀ½ ±¸Á¶°¡ »ý¼ºµË´Ï´Ù.
character my_lvarchar(10000+2) integer*2 my_lvarchar_length character my_lvarchar_data(10000) equivalence( my_lvarchar(1), + my_lvarchar_length ) equivalence( my_lvarchar(3), + my_lvarchar_data )
¿¹¸¦ µé¾î, ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ my_lvarchar_length¿Í my_lvarchar_data¸¦ Á¶ÀÛÇÏ¿© È£½ºÆ® º¯¼öÀÇ ³»¿ëÀ» °Ë»çÇϰųª ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. VARCHAR¸¦ Àüü·Î ÂüÁ¶Çϱâ À§ÇØ ±âº» À̸§(ÀÌ °æ¿ì, my_lvarchar)ÀÌ SQL¹®¿¡¼ »ç¿ëµË´Ï´Ù.
ÁÖ: | ¾Æ·¡ÀÇ ¿¹¿Í °°Àº CONNECT¹®¿¡¼ FORTRAN ¹®ÀÚ¿ È£½ºÆ® º¯¼ö
dbname°ú userid µÚ¿¡ °ø¹éÀÌ Æ÷ÇÔµÇÁö¸¸
ó¸® Àü¿¡ Á¦°ÅµË´Ï´Ù.
EXEC SQL CONNECT TO :dbname USER :userid USING :passwd±×·¯³ª ¾ÏÈ£¿¡¼ °ø¹éÀÌ Áß¿äÇÒ ¼ö ÀÖÀ¸¹Ç·Î VARCHAR°ú °°Àº ¾ÏÈ£¿¡ È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇÏ°í ½ÇÁ¦ ¾ÏÈ£ ±æÀ̸¦ ¹Ý¿µÇϵµ·Ï ±æÀÌ Çʵ带 ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù.
EXEC SQL BEGIN DECLARE SECTION character*8 dbname, userid sql type is varchar(18) passwd EXEC SQL END DECLARE SECTION character*18 passwd_string equivalence(passwd_data,passwd_string) dbname = 'sample' userid = 'userid' passwd_length= 8 passwd_string = 'password' EXEC SQL CONNECT TO :dbname USER :userid USING :passwd |
Ç¥½Ã±â º¯¼ö´Â INTEGER*2 µ¥ÀÌÅÍ À¯ÇüÀ¸·Î ¼±¾ðÇØ¾ß ÇÕ´Ï´Ù.
FORTRAN¿¡¼ ´ëÇü ¿ÀºêÁ§Æ®(LOB) È£½ºÆ® º¯¼öÀÇ ±¸¹®Àº FORTRAN¿¡¼ ´ëÇü ¿ÀºêÁ§Æ®(LOB) È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇÏ´Â ±¸¹®À» ³ªÅ¸³À´Ï´Ù.
FORTRAN¿¡¼ ´ëÇü ¿ÀºêÁ§Æ®(LOB) È£½ºÆ® º¯¼öÀÇ ±¸¹® .-,----------------. V | >>-SQL TYPE IS--+-BLOB-+---(length-+---+--)------variable-name---+-> '-CLOB-' +-K-+ +-M-+ '-G-' >--------------------------------------------------------------><
LOB È£½ºÆ® º¯¼ö °í·Á»çÇ×:
BLOB ¿¹:
¼±¾ð:
sql type is blob(2m) my_blob
±× °á°ú ´ÙÀ½ ±¸Á¶°¡ »ý¼ºµË´Ï´Ù.
character my_blob(2097152+4) integer*4 my_blob_length character my_blob_data(2097152) equivalence( my_blob(1), + my_blob_length ) equivalence( my_blob(5), + my_blob_data )
CLOB ¿¹:
¼±¾ð:
sql type is clob(125m) my_clob
±× °á°ú ´ÙÀ½ ±¸Á¶°¡ »ý¼ºµË´Ï´Ù.
character my_clob(131072000+4) integer*4 my_clob_length character my_clob_data(131072000) equivalence( my_clob(1), + my_clob_length ) equivalence( my_clob(5), + my_clob_data )
FORTRAN¿¡¼ ´ëÇü ¿ÀºêÁ§Æ®(LOB) À§Ä¡ ÁöÁ¤ÀÚ È£½ºÆ® º¯¼öÀÇ ±¸¹®Àº FORTRAN¿¡¼ ´ëÇü ¿ÀºêÁ§Æ®(LOB) À§Ä¡ ÁöÁ¤ÀÚ È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇÏ´Â ±¸¹®À» ³ªÅ¸³À´Ï´Ù.
FORTRAN¿¡¼ ´ëÇü ¿ÀºêÁ§Æ®(LOB) À§Ä¡ ÁöÁ¤ÀÚ È£½ºÆ® º¯¼öÀÇ ±¸¹® .-,----------------. V | >>-SQL TYPE IS--+-BLOB_LOCATOR-+------variable-name---+-------->< '-CLOB_LOCATOR-'
LOB À§Ä¡ ÁöÁ¤ÀÚ È£½ºÆ® º¯¼ö °í·Á»çÇ×:
CLOB À§Ä¡ ÁöÁ¤ÀÚ ¿¹(BLOB À§Ä¡ ÁöÁ¤ÀÚ¿Í ºñ½Á):
¼±¾ð:
SQL TYPE IS CLOB_LOCATOR my_locator
±× °á°ú ´ÙÀ½ ¼±¾ðÀÌ »ý¼ºµË´Ï´Ù.
integer*4 my_locator
FORTRAN¿¡¼ ÆÄÀÏ ÂüÁ¶ È£½ºÆ® º¯¼öÀÇ ±¸¹®Àº FORTRAN¿¡¼ ÆÄÀÏ ÂüÁ¶ È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇÏ´Â ±¸¹®À» ³ªÅ¸³À´Ï´Ù.
FORTRAN¿¡¼ ÆÄÀÏ ÂüÁ¶ È£½ºÆ® º¯¼öÀÇ ±¸¹® .-,----------------. V | >>-SQL TYPE IS--+-BLOB_FILE-+------variable-name---+----------->< '-CLOB_FILE-'
ÆÄÀÏ ÂüÁ¶ È£½ºÆ® º¯¼ö °í·Á»çÇ×:
BLOB ÆÄÀÏ ÂüÁ¶ º¯¼öÀÇ ¿¹ (CLOB ÆÄÀÏ ÂüÁ¶ º¯¼ö¿Í ºñ½Á):
SQL TYPE IS BLOB_FILE my_file
±× °á°ú ´ÙÀ½ ¼±¾ðÀÌ »ý¼ºµË´Ï´Ù.
character my_file(267) integer*4 my_file_name_length integer*4 my_file_data_length integer*4 my_file_file_options character*255 my_file_name equivalence( my_file(1), + my_file_name_length ) equivalence( my_file(5), + my_file_data_length ) equivalence( my_file(9), + my_file_file_options ) equivalence( my_file(13), + my_file_name )