ÀÌ Àý¿¡¼´Â Net.Data ¸ÅÅ©·Î ÆÄÀÏ¿¡¼ »ç¿ëµÇ´Â ¾ð¾î ±¸¼º¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù£®
°¢ ¾ð¾î ±¸¼º ¼³¸í¿¡´Â ´ÙÀ½ Á¤º¸°¡ µé¾î ÀÖ½À´Ï´Ù£®
´ÙÀ½ ±¸¼ºÀÌ ¸ÅÅ©·Î¿¡¼ »ç¿ëµË´Ï´Ù£®±¸¹® ¹× ¿¹Á¦´Â °¢ ±¸¼º ¼³¸íÀ» Âü°íÇϽʽÿÀ£®
¸ñÀû
Net.Data ¸ÅÅ©·Î ÇÔ¼ö¸¦ ¹®¼·Î ÀÛ¼ºÇÕ´Ï´Ù£®COMMENT ºí·ÏÀ» ¸ÅÅ©·Î ÆÄÀÏÀÇ ¸ðµç À§Ä¡¿¡¼ »ç¿ëÇÒ ¼ö ÀÖÀ¸¹Ç·Î ´Ù¸¥ ±¸¹® µµÇ¥¿¡ ¹®¼·Î ³ªÅ¸³ªÁö´Â ¾Ê½À´Ï´Ù£®
±¸¹®
>>-%{---text---%}----------------------------------------------><
°ª
¹®¸Æ
ÁÖ¼®Àº Net.Data ¸ÅÅ©·ÎÀÇ Net.Data ¾ð¾î ±¸¼º »çÀÌÀÇ ¾î´À À§Ä¡¿¡µµ ³õÀÏ ¼ö ÀÖ½À´Ï´Ù£®
Á¦ÇÑ
¸ðµç ÅØ½ºÆ®³ª ¹®ÀÚ°¡ Çã¿ëµÇ³ª ÁÖ¼® ºí·ÏÀº ÁßøµÉ ¼ö ¾ø½À´Ï´Ù£®
¿¹
¿¹Á¦ 1: ±âº» ÁÖ¼® ºí·Ï
%{ This is a comment block. It can contain any number of lines and contain any characters. Its contents are ignored by Net.Data. %}
¿¹Á¦ 2: FUNCTION ºí·ÏÀÇ ÁÖ¼®
%function(DTW_REXX) getAddress(IN name, %{ customer name %} IN phone, %{ customer phone number %} OUT address %{ customer address %} ) { .... %}
¿¹Á¦ 3: HTML ºí·ÏÀÇ ÁÖ¼®
%html(report) { %{ run the query and save results in a table %} @myQuery(resultTable) %{ build a form to display a page of data %} <form method="POST" action="report"> %{ send the table to a REXX function to send the data output %} @displayRows(START_ROW_NUM, submit, resultTable, RPT_MAX_ROWS) %{ pass START_ROW_NUM as a hidden variable to the next invocation %} <input name="START_ROW_NUM" type="hidden" value="$(START_ROW_NUM)"> %{ build the next and previous buttons %} %if (submit == "both" || submit == "next_only") <input name="submit" type="submit" value="next"> %endif %if (submit == "both" || submit == "prev_only") <input name="submit" type="submit" value="previous"> %endif </form> %}
¿¹Á¦ 4: DEFINE ºí·ÏÀÇ ÁÖ¼®
%define { START_ROW_NUM = "1" %{ starting row number for output table %} RPT_MAX_ROWS = "25" %{ maximum number of rows in the table %} resultTable = %table %{ table to hold query results %} %}
¸ñÀû
DEFINE ÀýÀº ¸ÅÅ©·ÎÀÇ ¼±¾ð ºÎºÐ¿¡ º¯¼ö¸íÀ» Á¤ÀÇÇÏ¸ç ¸í·É¹®À̳ª ºí·ÏÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù£®
º¯¼ö´Â Å« µû¿ÈÇ¥("")¸¦ »ç¿ëÇÏ¿© ÇÑ Çà¿¡ Á¤ÀÇÇÒ ¼öµµ ÀÖ°í, Áß°ýÈ£¿Í ÆÛ¼¾Æ® ±âÈ£({ %})¸¦ »ç¿ëÇÏ¿© ¿©·¯ ÁÙ¿¡ Á¤ÀÇÇÒ ¼öµµ ÀÖ½À´Ï´Ù£® º¯¼ö°¡ Á¤ÀÇµÇ¸é ¸ÅÅ©·ÎÀÇ ¾î¶² À§Ä¡¿¡¼µµ À̸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù£®
±¸¹®
>>-%DEFINE----+-| define entry |---------------------------+--->< '- {--+------------------------------+---%}--' | .------------------------. | | V | | '----+-define entry------+--+--' '-include statement-' define entry .--------------------------. V | |---+-variable name--=--+-"-----+--------------------+--+---"----+-+-> | | +-string-------------+ | | | | +-variable reference-+ | | | | '-function call------' | | | | .--------------------------. | | | | V | | | | +- {-----+--------------------+--+---%}--+ | | | +-string-------------+ | | | | +-variable reference-+ | | | | +-function call------+ | | | | '-new_line-----------' | | | +-exec statement-------------------------+ | | +-table statement------------------------+ | | +-envvar statement-----------------------+ | | +-| conditional variable |---------------+ | | '-| abbreviated conditional variable |---' | '-list statement-----------------------------------------------' >---------------------------------------------------------------| conditional variable |---+----------------+--?---------------------------------------> '-variable name--' .--------------------------. V | >-----+-"-----+--------------------+--+---"----+----------------> | +-string-------------+ | | +-variable reference-+ | | '-function call------' | | .--------------------------. | | V | | '- {-----+--------------------+--+---%}--' +-string-------------+ +-variable reference-+ '-function call------' >-----+----------------------------------------------+----------| | .--------------------------. | | V | | '-:--+-"-----+--------------------+--+---"---+-' | +-string-------------+ | | +-variable reference-+ | | '-function call------' | | .--------------------------. | | V | | '-{-----+--------------------+--+---%}--' +-string-------------+ +-variable reference-+ '-function call------' abbreviated conditional variable .--------------------------. V | |---?----+-"-----+--------------------+--+---"----+-------------| | +-string-------------+ | | +-variable reference-+ | | '-function call------' | | .--------------------------. | | V | | '- {-----+--------------------+--+---%}--' +-string-------------+ +-variable reference-+ '-function call------'
°ª
¹®¸Æ
DEFINE ºí·Ï ¶Ç´Â ¸í·É¹®Àº Net.Data ¸ÅÅ©·Î¿¡¼ ¼±¾ð ºÎºÐÀÇ IF ºí·Ï ³»¿¡ ¶Ç´Â ´Ù¸¥ ¸ðµç ºí·Ï ¹Û¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù£®
Á¦ÇÑ
%DEFINE var = "The value is $(var)."
¿¹
¿¹Á¦ 1: ´Ü¼ø º¯¼ö Á¤ÀÇ
%DEFINE var1 = "orders" %DEFINE var2 = "$(var1).html"
·±Å¸ÀÓ Áß¿¡ º¯¼ö ÂüÁ¶ $(var2) ´Â orders.html·Î ÁöÁ¤µË´Ï´Ù£®
¿¹Á¦ 2: ¹®ÀÚ¿ ³»ÀÇ ÀÎ¿ë ºÎÈ£
%DEFINE hi = "say ""hello""" %DEFINE empty = ""
º¯¼ö hi°¡ Ç¥½ÃµÉ ¶§´Â °ª say "hello"°¡ ³ªÅ¸³³´Ï´Ù£®º¯¼ö empty´Â ³Î(NULL)ÀÌ µË´Ï´Ù£®
¿¹Á¦ 3: º¹¼ö º¯¼öÀÇ Á¤ÀÇ
%DEFINE{ DATABASE = "testdb" home = "http://www.software.ibm.com" SHOWSQL = "YES" PI = "3.14150" %}
¿¹Á¦ 4: º¯¼öÀÇ º¹¼ö Çà Á¤ÀÇ
%DEFINE text = {This variable definition spans two lines %}
¿¹Á¦ 5: ´ÙÀ½ÀÇ Á¶°Ç º¯¼ö ¿¹Á¦´Â º¯¼ö varÀÌ °á°ú °ª¿¡ ³Î(NULL) °ªÀÌ ¾øÀ» ¶§ ÀÎ¿ë ºÎÈ£ ("")·Î ¹ÀÎ °á°ú °ªÀ» ÃëÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù£®¾Æ·¡ ¿¹Á¦¿¡¼ $(V)¿Í MyFunc´Â ¸ðµÎ ³Î(NULL) °ªÀ» °á°ú·Î °¡Áú ¼ö ¾ø½À´Ï´Ù£®
%DEFINE var = ? "Hello! $(V)@MyFunc()" %}
¸ñÀû
º¯¼ö¸¦ DEFINE ºí·ÏÀÇ È¯°æ º¯¼ö·Î Á¤ÀÇÇÕ´Ï´Ù£® ENVVAR º¯¼ö°¡ ÂüÁ¶µÇ¸é Net.Data´Â °°Àº À̸§À¸·Î ȯ°æ º¯¼öÀÇ ÇöÀç °ªÀ» ¸®ÅÏÇÕ´Ï´Ù£®ÀÌ ¹æ¹ýÀ» »ç¿ëÇÏ¿© ȯ°æ º¯¼ö¸¦ ÂüÁ¶ÇÏ´Â °ÍÀÌ DTW_GETENV¸¦ »ç¿ëÇÏ´Â °Íº¸´Ù ÈξÀ È¿°úÀûÀÔ´Ï´Ù£® ÀÚ¼¼ÇÑ ³»¿ëÀº DTW_GETENV¸¦ Âü°íÇϽʽÿÀ£®
±¸¹®
>>-%ENVVAR-----------------------------------------------------><
¹®¸Æ
ENVVAR¹®Àº DEFINE ºí·ÏÀ̳ª ¸í·É¹® ³»¿¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù£®
°ª
Á¦ÇÑ
ENVVAR¹®Àº ´Ù¸¥ ¿ä¼Ò¸¦ Æ÷ÇÔÇÒ ¼ö ¾ø½À´Ï´Ù£®
¿¹
¿¹Á¦ 1: ÀÌ ¿¹Á¦¿¡¼ %ENVVAR´Â ÂüÁ¶µÉ ¶§ À¥ ¼¹öÀÇ À̸§ÀΠȯ°æ º¯¼ö SERVER_SOFTWARE¿¡ ´ëÇÑ ÇöÀç °ªÀ» ¸®ÅÏÇÏ´Â º¯¼ö¸¦ Á¤ÀÇÇÕ´Ï´Ù£®
%DEFINE SERVER_SOFTWARE = %ENVVAR %HTML(REPORT) { The server is $(SERVER_SOFTWARE). %}
¸ñÀû
º¯¼ö¸¦ ÂüÁ¶Çϰųª ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ½ÇÇàÇÒ ¿ÜºÎ ÇÁ·Î±×·¥À» ÁöÁ¤ÇÕ´Ï´Ù£®
º¯¼ö°¡ ÂüÁ¶µÇ°Å³ª ÇÔ¼ö°¡ È£ÃâµÉ ¶§, Net.Data´Â ¸ÕÀú Net.Data ÃʱâÈ ÆÄÀÏÀÇ EXEC_PATH º¯¼ö¿¡ ÁöÁ¤µÈ µð·ºÅ丮¸¦ °Ë»öÇϰí ÀÌ µð·ºÅ丮¿¡¼ ãÁö ¸øÇÏ¸é ½Ã½ºÅÛ ½©·Î ½ÇÇà ÆÄÀÏÀÇ À̸§À» Á¦°øÇÕ´Ï´Ù£®
±ÇÇÑ Á¤º¸: À¥ ¼¹ö°¡ EXEC¹®À̳ª ºí·Ï¿¡¼ ÂüÁ¶ÇÏ´Â ÆÄÀÏ¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀ» °¡Áö´ÂÁö È®ÀÎÇϽʽÿÀ£®ÀÚ¼¼ÇÑ ³»¿ëÀº Net.Data Administration and Programming Guide ÀÇ ±¸¼º Àå¿¡¼ Net.Data ÆÄÀÏ¿¡ ´ëÇÑ À¥ ¼¹ö ¾×¼¼½º ±ÇÇÑ ÁöÁ¤¿¡ °üÇÑ ÀýÀ» Âü°íÇϽʽÿÀ£®
EXEC ¸í·É¹®°ú ºí·ÏÀº »ç¿ëµÇ´Â À§Ä¡¿¡ µû¶ó µÎ °³ÀÇ ´Ù¸¥ ¹®¸Æ¿¡ »ç¿ëµÇ°í ¼·Î ´Ù¸¥ ±¸¹®À» °¡Áý´Ï´Ù£®DEFINE ºí·Ï¿¡¼´Â EXEC¹®À» »ç¿ëÇϰí FUNCTION ºí·Ï¿¡¼´Â EXEC ºí·ÏÀ» »ç¿ëÇϽʽÿÀ£®
±¸¹®
DEFINE ºí·Ï¿¡¼ »ç¿ëµÉ ¶§ EXEC¹® ±¸¹®:
.--------------------------. V | >>-%EXEC------"-----+--------------------+--+---"-------------->< +-string-------------+ +-variable reference-+ '-function call------'
FUNCTION ºí·Ï¿¡¼ »ç¿ëµÉ ¶§ EXEC ºí·Ï ±¸¹®:
.-------------------------. V | >>-%EXEC------ {----+-string-------------+--+---%}------------->< +-variable reference-+ '-function call------'
°ª
¹®¸Æ
EXEC ºí·Ï ¶Ç´Â ¸í·É¹®Àº ´ÙÀ½ ¹®¸Æ¿¡ µé¾î ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù£®
Á¦ÇÑ
EXEC ºí·Ï ¶Ç´Â ¸í·É¹®Àº ´ÙÀ½ ¿ä¼Ò¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù£®
¿¹
¿¹Á¦ 1: º¯¼ö¿¡¼ ÂüÁ¶ÇÏ´Â ½ÇÇà ÆÄÀÏ
%DEFINE mycall = %EXEC "MYEXEC.EXE $(empno)" %HTML (report){ <P>Here is the report you requested: <HR>$(mycall) %}
ÀÌ ¿¹Á¦´Â º¯¼ö, mycall¸¦ ÂüÁ¶ÇÒ ¶§¸¶´Ù MYEXEC.EXE¸¦ ½ÇÇàÇÕ´Ï´Ù£®
¿¹Á¦ 2: ÇÔ¼ö¿¡¼ ÂüÁ¶ÇÏ´Â ½ÇÇà ÆÄÀÏ
%FUNCTION(DTW_REXX) my_rexx_pgm(INOUT a, b, IN c, INOUT d){ %EXEC{ mypgm.cmd this is a test %} %}
ÀÌ ¿¹Á¦´Â ÇÔ¼ö my_rexx_pgmÀÌ È£ÃâµÉ ¶§ mypgm.cmd¸¦ ½ÇÇàÇÕ´Ï´Ù£®
¸ñÀû
Net.Data°¡ ¸ÅÅ©·Î ÆÄÀϷκÎÅÍ È£ÃâÇÏ´Â ¼ºê·çƾÀ» Á¤ÀÇÇÕ´Ï´Ù£® FUNCTION ºí·ÏÀÇ ½ÇÇà ¸í·É¹®Àº ¾ð¾î ȯ°æ¿¡¼ Á÷Á¢ ÇØ¼®µÇ´Â ÀζóÀÎ ¸í·É¹®ÀÏ ¼ö ÀÖÀ¸¸ç ¶Ç´Â ¿ÜºÎ ÇÁ·Î±×·¥¿¡ ´ëÇÑ È£ÃâÀ» ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù£®
FUNCTION ºí·Ï¿¡¼ EXEC ºí·ÏÀ» »ç¿ëÇϸé ÀÌ ºí·ÏÀº FUNCTION ºí·Ï¿¡¼ À¯ÀÏÇÑ ½ÇÇà ¸í·É¹®À̾î¾ß ÇÕ´Ï´Ù£®¾ð¾î ȯ°æ¿¡ ½ÇÇà ¸í·É¹®À» Á¦°øÇϱâ Àü¿¡ Net.Data´Â ÃʱâÈ ÆÄÀÏÀÇ EXEC_PATH ±¸¼º ¸í·É¹®¿¡ ÀÇÇØ °áÁ¤µÇ´Â °æ·Î¸íÀ¸·Î EXEC ºí·Ï ³»ÀÇ ÇÁ·Î±×·¥ÀÇ ÆÄÀϸíÀ» ÷ºÎÇÕ´Ï´Ù£® °á°ú ¹®ÀÚ¿Àº ½ÇÇàµÉ ¾ð¾î ȯ°æÀ¸·Î Àü¼ÛµË´Ï´Ù£®
¾ð¾î ȯ°æÀÌ EXEC ºí·ÏÀ» ó¸®ÇÏ´Â µ¥ »ç¿ëÇÏ´Â ¹æ¹ýÀº ƯÁ¤ ¾ð¾î ȯ°æ¿¡ Á¿ìµË´Ï´Ù£®REXX, System ¹× Perl Net.Data Á¦°ø ¾ð¾î ȯ°æ¿¡¼¸¸ EXEC ºí·ÏÀ» Áö¿øÇÕ´Ï´Ù£®
±¸¹®
>>-%FUNCTION--(--lang_env--)--function_name--| parm passing spec |--> .-;----------------------------------------------. >----+-| returns spec |-- {--| function body |----%}--+-------->< parm passing spec |---(--+-----------------------------+---)----------------------| | .-,---------------------. | | | (1) | | | V .-IN-------. | | '----+----------+---name---+--' +-OUT------+ '-INOUT----' return spec |---+----------------------+------------------------------------| '-RETURNS--(--name--)--' function body |---+-------------------------------+---------------------------> | .--------------------------. | | V | | +----inline statement block---+-+ '-exec block--------------------' >-----+----------------------------------+----------------------| +-report block--+----------------+-+ | '-message block--' | '-message block--+---------------+-' '-report block--'
ÁÖ:
°ª
¹®¸Æ
FUNCTION ºí·ÏÀº ´ÙÀ½ ¹®¸Æ¿¡ µé¾î ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù£®
Á¦ÇÑ
FUNCTION ºí·ÏÀº ´ÙÀ½ ¿ä¼Ò¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù£®
REXX, System ¹× Perl Net.Data Á¦°ø ¾ð¾î ȯ°æ¿¡¼¸¸ EXEC ¸í·É¹®À» Áö¿øÇÕ´Ï´Ù£®
¿¹
´ÙÀ½ ¿¹Á¦´Â ¹ü¿ë ¿¹Á¦·Î, ¸ðµç ¾ð¾î ȯ°æ¿¡ Àû¿ëµÇÁö´Â ¾Ê½À´Ï´Ù£® ƯÁ¤ ¾ð¾î ȯ°æ¿¡¼ FUNCTION ºí·ÏÀ» »ç¿ëÇÏ´Â °Í¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº Net.Data Language Environment Reference¸¦ Âü°íÇϽʽÿÀ£®
¿¹Á¦ 1: REXX ºÎ¼Ó ¹®ÀÚ¿ ÇÔ¼ö
%DEFINE lstring = "longstring" %FUNCTION(DTW_REXX) substring(IN x, y, z) RETURNS(s) { s = substr("$(x)", $(y), $(z)); %} %DEFINE a = {@substring(lstring, "1", "4")%} %{ assigns "long" to a %}
a°¡ Æò°¡µÇ¸é @substring ÇÔ¼ö È£ÃâÀÌ ¹ß°ßµÇ°í ºÎ¼Ó ¹®ÀÚ¿ FUNCTION ºí·ÏÀÌ ½ÇÇàµË´Ï´Ù£®FUNCTION ºí·ÏÀÇ ½ÇÇà ¸í·É¹®¿¡¼ º¯¼ö°¡ ´ëüµÇ¸é ÅØ½ºÆ® ¹®ÀÚ¿ s = substr("longstring", 1, 4)°¡ REXX ÇØ¼®±â·Î Á¦°øµÇ¾î ½ÇÇàµË´Ï´Ù£®RETURNS ÀýÀÌ ÁöÁ¤µÇ¾úÀ¸¹Ç·Î aÀÇ Æò°¡¿¡¼ @substring ÇÔ¼ö È£Ãâ °ªÀº "long", °ª s·Î ´ëüµË´Ï´Ù£®
¿¹Á¦ 2: ¿ÜºÎ REXX ÇÁ·Î±×·¥ È£Ãâ
%FUNCTION(DTW_REXX) my_rexx_pgm(INOUT a, b, IN c, OUT d) { %EXEC{ mypgm.cmd this is a test %} %} %HTML(INPUT) { <P> Original variable values: $(w) $(x) $(z) <P> @my_rexx_pgm(w, x, y, z) <P> Modified variable values: $(w) $(x) $(z) %}
º¯¼ö w¿Í x´Â ÇÔ¼ö¿¡¼ INOUT ¸Å°³º¯¼ö a¿Í b¿¡ ÇØ´çÇÕ´Ï´Ù£®À̵éÀÇ °ª°ú IN ¸Å°³º¯¼ö c¿¡ ÇØ´çÇÏ´Â °ª y´Â ÀÌ¹Ì HTML Çü½Ä ÀÔ·ÂÀ̳ª DEFINE¹®À¸·ÎºÎÅÍ Á¤ÀǵǾî ÀÖ¾î¾ß ÇÕ´Ï´Ù£®º¯¼ö a¿Í b´Â ¸Å°³º¯¼ö a¿Í b°¡ °ªÀ» ¸®ÅÏÇÒ ¶§ »õ·Î¿î °ªÀ¸·Î ÁöÁ¤µË´Ï´Ù£®º¯¼ö z´Â OUT ¸Å°³º¯¼ö d°¡ °ªÀ» ¸®ÅÏÇÒ ¶§ Á¤Àǵ˴ϴ٣®
/* Sample REXX Program for ¿¹Á¦ 2 */ /* Test arguments */ num_args = arg(); say 'There are' num_args 'arguments'; do i = 1 to num_args; say 'arg' i 'is "'arg(i)'"' end; /* Set variables passed from Net.Data */ d = a || b || c; /* concatenate a, b, and c forming d */ a = ''; /* reset a to null string */ b = ''; /* reset b to null string */ return;
There are 1 arguments arg 1 is "this is a test"
EXEC¹®Àº REXX ÇØ¼®±â°¡ ¿ÜºÎ REXX ÇÁ·Î±×·¥ mypgm.cmd¸¦ ½ÇÇàÇϵµ·Ï REXX ¾ð¾î ȯ°æ¿¡ Áö½ÃÇÕ´Ï´Ù£®REXX ¾ð¾î ȯ°æÀº REXX ÇÁ·Î±×·¥°ú Á÷Á¢ Net.Data º¯¼ö¸¦ °øÀ¯ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ÀÌ ¾ð¾î ȯ°æÀº mypgm.cmdÀ» ½ÇÇàÇϱâ Àü¿¡ REXX º¯¼ö a£¬ b ¹× c¸¦ Net.Data º¯¼ö°ªÀÎ w£¬ x ¹× y·Î ÁöÁ¤ÇÕ´Ï´Ù£® mypgm.cmd´Â REXX ¸í·É¹®¿¡¼ º¯¼ö a£¬ b ¹× c¸¦ Á÷Á¢ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù£®ÀÌ ÇÁ·Î±×·¥ÀÌ Á¾·áµÇ¸é REXX º¯¼ö a£¬ b ¹× d´Â REXX ÇÁ·Î±×·¥À¸·ÎºÎÅÍ °Ë»öµÇ¸ç ±× °ªµéÀº Net.Data º¯¼ö w£¬ x ¹× z·Î ÁöÁ¤µË´Ï´Ù£® RETURNS ÀýÀÌ my_rexx_pgm FUNCTION ºí·ÏÀÇ Á¤ÀÇ¿¡¼ »ç¿ëµÇÁö ¾ÊÀ¸¹Ç·Î @my_rexx_pgm ÇÔ¼ö È£ÃâÀÇ °ªÀº ³Î(NULL) ¹®ÀÚ¿ÀÌ µÇ°Å³ª (¸®ÅÏ Äڵ尡 0ÀÌ¾Æ´Ñ °æ¿ì) REXX ÇÁ·Î±×·¥ ¸®ÅÏ ÄÚµå °ªÀÌ µË´Ï´Ù£®
¿¹Á¦ 3: SQL Á¶È¸ ¹× º¸°í¼
%FUNCTION(DTW_SQL) query_1(IN x, IN y) { SELECT customer.num, order.num, part.num, status FROM customer, order, shippingpart WHERE customer.num = '$(x)' AND customer.ordernumber = order.num AND order.num = '$(y)' AND order.partnumber = part.num %REPORT{ <P>Here is the status of your order: <P>$(NLIST) <UL> %ROW{ <LI>$(V1) $(V2) $(V3) $(V4) %} </UL> %} %} %DEFINE customer_name="IBM" %DEFINE customer_order="12345" %HTML(REPORT) { @query_1(customer_name, customer_order) %}
@query_1 ÇÔ¼ö È£ÃâÀº SELECT¹®¿¡¼ $(x)¸¦ IBMÀ¸·Î, $(y)¸¦ 12345·Î ´ëüÇÕ´Ï´Ù£®SQL ÇÔ¼ö Á¤ÀÇ query_1ÀÌ Ãâ·Â Å×ÀÌºí º¯¼ö¸¦ ½Äº°ÇÏÁö ¸øÇϹǷΠ»ý·«½Ã Å×À̺íÀÌ »ç¿ëµË´Ï´Ù (ÀÚ¼¼ÇÑ ³»¿ëÀº TABLE º¯¼ö ºí·ÏÀ» Âü°íÇϽʽÿÀ)£® REPORT ºí·Ï¿¡¼ ÂüÁ¶µÇ´Â NLIST ¹× Vi º¯¼ö´Â »ý·«½Ã Å×À̺í Á¤ÀÇ¿¡ ÀÇÇØ Á¤Àǵ˴ϴ٣®REPORT ºí·Ï¿¡¼ »ý¼ºÇÑ º¸°í¼´Â query_1 ÇÔ¼ö°¡ È£ÃâµÇ´Â Ãâ·Â HTML¿¡ ¹èÄ¡µË´Ï´Ù£®
¿¹Á¦ 4: Perl ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇϱâ À§ÇÑ ½Ã½ºÅÛ È£Ã⣮
%FUNCTION(DTW_SYSTEM) today() RETURNS(result) { %exec{ perl "today.prl" %} %} %HTML(INPUT) { @today() %}
$date = `date`; chop $date; open(DTW, "> $ENV{DTWPIPE}") || die "Could not open: $!"; print DTW "result = \"$date\"\n";
System ¾ð¾î ȯ°æÀº FUNCTION ºí·Ï³»ÀÇ ½ÇÇà ¸í·É¹®À» C ¾ð¾î system() ÇÔ¼ö È£ÃâÀ» ÅëÇØ ¿î¿µÃ¼Á¦·Î Àü´ÞÇÏ¿© ÇØ¼®ÇÕ´Ï´Ù£®ÀÌ ¹æ¹ýÀº Net.Data º¯¼ö¸¦ REXX ¾ð¾î ȯ°æÀÌ ÇÏ´Â °Íó·³ ½ÇÇà ¸í·É¹®À¸·Î Á÷Á¢ Àü´ÞÇϰųª °Ë»öÇÏÁö ¾Êµµ·Ï ÇÕ´Ï´Ù£®µû¶ó¼, System ¾ð¾î ȯ°æÀº ´ÙÀ½°ú °°Àº ¹æ½ÄÀ¸·Î º¯¼ö¸¦ Àü´Þ ¹× °Ë»öÇÕ´Ï´Ù£®
@today ÇÔ¼ö È£ÃâÀÌ ¹ß°ßµÇ¸é Net.Data´Â ½ÇÇà ¸í·É¹®¿¡¼ º¯¼ö ´ëü¸¦ ¼öÇàÇÕ´Ï´Ù£®ÀÌ ¿¹Á¦¿¡¼´Â ½ÇÇà ¸í·É¹®¿¡ Net.Data º¯¼ö°¡ ¾øÀ¸¹Ç·Î, ¾î¶°ÇÑ º¯¼ö ´ëüµµ ¼öÇàµÇÁö ¾Ê½À´Ï´Ù£®½ÇÇà ¸í·É¹®°ú ¸Å°³º¯¼ö°¡ System ¾ð¾î ȯ°æÀ¸·Î Àü´ÞµÇ¸é, ¾ð¾î ȯ°æÀº ¸í¸íµÈ ÆÄÀÌÇÁ¸¦ ÀÛ¼ºÇϰí ȯ°æ º¯¼ö DTWPIPE¸¦ ÆÄÀÌÇÁ À̸§À¸·Î ¼³Á¤ÇÕ´Ï´Ù£®
±×·± ´ÙÀ½, ¿ÜºÎ ÇÁ·Î±×·¥ÀÌ C system() ÇÔ¼ö È£ÃâÀ» »ç¿ëÇÏ¿© È£ÃâµË´Ï´Ù£® ¿ÜºÎ ÇÁ·Î±×·¥Àº ÆÄÀÌÇÁ¸¦ ¾²±â Àü¿ëÀ¸·Î ¿°í Ç¥ÁØ ½ºÆ®¸² ÆÄÀÏÀÎ °Íó·³ Ãâ·Â ¸Å°³º¯¼öÀÇ °ªÀ» ÆÄÀÌÇÁ¿¡ ±â·ÏÇÕ´Ï´Ù£®¿ÜºÎ ÇÁ·Î±×·¥Àº STDOUT¿¡ ±â·ÏÇÏ¿© HTML Ãâ·ÂÀ» »ý¼ºÇÕ´Ï´Ù£®ÀÌ ¿¹Á¦¿¡¼, ½Ã½ºÅÛ ³¯Â¥ ÇÁ·Î±×·¥ÀÇ Ãâ·ÂÀº FUNCTION ºí·ÏÀÇ RETURNS Àý¿¡¼ ½Äº°µÇ´Â º¯¼öÀÎ result¿¡ ÁöÁ¤µË´Ï´Ù£® ÀÌ °á°ú º¯¼ö °ªÀº HTML ºí·Ï¿¡¼ @today() ÇÔ¼ö È£ÃâÀ» ´ë½ÅÇÕ´Ï´Ù£®
¿¹Á¦ 5: Perl ¾ð¾î ȯ°æ
%FUNCTION(DTW_PERL) today() RETURNS(result) { $date = `date`; chop $date; open(DTW, "> $ENV{DTWPIPE}") || die "Could not open: $!"; print DTW "result = \"$date\"\n"; %} %HTML(INPUT) { @today() %}
EXEC ºí·ÏÀÌ »ç¿ëµÇ´Â ¹æ½ÄÀ» º¸·Á¸é ¿¹Á¦ 4¿Í ÀÌ ¿¹Á¦¸¦ ºñ±³ÇØ º¸½Ê½Ã¿À. ¿¹Á¦ 4¿¡¼, ½Ã½ºÅÛ ¾ð¾î ȯ°æÀº Perl ÇÁ·Î±×·¥ ÇØ¼® ¹æ¹ýÀ» ¾ËÁö ¸øÇÏÁö¸¸ ¿ÜºÎ ÇÁ·Î±×·¥À» È£ÃâÇÏ´Â ¹æ¹ýÀ» ¾Ë°í ÀÖ½À´Ï´Ù. EXEC ºí·ÏÀº perlÀ̶ó´Â ÇÁ·Î±×·¥À» ¿ÜºÎ ÇÁ·Î±×·¥À¸·Î È£ÃâÇϵµ·Ï Áö½ÃÇÕ´Ï´Ù. ½ÇÁ¦ Perl ¾ð¾î ¸í·É¹®Àº ¿ÜºÎ Perl ÇÁ·Î±×·¥¿¡ ÀÇÇØ ÇØ¼®µË´Ï´Ù. ¿¹Á¦ 5´Â Perl ¾ð¾î ȯ°æÀÌ Perl ¾ð¾î ¸í·É¹®À» Á÷Á¢ ÇØ¼®ÇÒ ¼ö ÀÖÀ¸¹Ç·Î EXEC ºí·ÏÀ» Æ÷ÇÔÇÏÁö ¾Ê½À´Ï´Ù.
¸ñÀû
ÀÌÀü¿¡ Á¤ÀÇµÈ FUNCTION ¶Ç´Â MACRO_FUNCTION ºí·ÏÀ» È£ÃâÇϰųª ÁöÁ¤µÈ Àμö¸¦ »ç¿ëÇÏ¿© ³»Àå ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù. ÇÔ¼ö°¡ ³»Àå ÇÔ¼ö°¡ ¾Æ´Ï¸é ÇÔ¼ö È£ÃâÀ» ÁöÁ¤Çϱâ Àü¿¡ À̸¦ Net.Data ¸ÅÅ©·Î¿¡ ¹Ì¸® Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù.
±¸¹®
>>-@function_name---(----+------------------------------+--)--->< | .-,-----------------------. | | V | | '----+-variable_name------+--+-' +-"--string--"-------+ +-variable reference-+ '-function call------'
°ª
¹®¸Æ
ÇÔ¼ö È£ÃâÀº ´ÙÀ½ ¹®¸Æ¿¡ µé¾î ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.
Á¦ÇÑ
¿¹
¿¹Á¦ 1: SQL ÇÔ¼ö formQuery È£Ãâ
%FUNCTION(DTW_SQL) formQuery(){ SELECT $(queryVal) from $(tableName) %} %HTML (input){ <P>Which columns of $(tableName) do you want to see? <FORM METHOD="POST" ACTION="report"> <INPUT NAME="queryVal" TYPE="CHECKBOX" VALUE="NAME">Name <INPUT NAME="queryVal" TYPE="CHECKBOX" VALUE="MAIL">E-mail <INPUT NAME="queryVal" TYPE="CHECKBOX" VALUE="FAX">FAX <INPUT TYPE="SUBMIT" VALUE="Submit request"> %} %HTML (report){ <P>Here are the columns you selected: <HR>@formQuery() %}
¿¹Á¦ 2: ÀÔÃâ·Â ¸Å°³º¯¼ö¸¦ »ç¿ëÇÑ REXX ÇÔ¼ö È£Ãâ
%FUNCTION(DTW_REXX) my_rexx_pgm(INOUT a, b, IN c, OUT d) { %EXEC{ mypgm.cmd this is a test %} %} %HTML(INPUT) { <P> Original variable values: $(w) $(x) $(z) <P> @my_rexx_pgm(w, x, y, z) <P> Modified variable values: $(w) $(x) $(z) %}
¿¹Á¦ 3: º¯¼ö ÂüÁ¶¿Í ÇÔ¼ö È£ÃâÀ» »ç¿ëÇÏ¿© ÀÔ·Â ¸Å°³º¯¼ö¸¦ ÅëÇÑ REXX ÇÔ¼ö È£Ãâ
%FUNCTION(DTW_REXX) my_rexx_pgm(IN a, b, c, d, OUT e) { ... %} %HTML(INPUT){ <p> @my_rexx_pgm($(myA), @getB(), @retrieveC(), $(myD), myE) %}
¸ñÀû
HTMLÀ» ÀÌÇØÇϴ Ŭ¶óÀ̾ðÆ®ÀÇ À¥ ºê¶ó¿ìÀú³ª Åø¿¡ ÀÇÇØ ó¸®µÉ HTML ű׳ª ÅØ½ºÆ®¸¦ Æ÷ÇÔÇÕ´Ï´Ù. ¶ÇÇÑ HTML ºí·ÏÀº ¼öÇà ½Ã¿¡ Æò°¡µÇ°í ½ÇÇàµÇ´Â ´ëºÎºÐÀÇ Net.Data ¸ÅÅ©·Î ¾ð¾î ¸í·É¹®À» Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù. Net.Data´Â Net.Data ¸ÅÅ©·Î ¸í·É¹®À» ã¾Æ ½ÇÇàÇÕ´Ï´Ù. Net.Data´Â ´Ù¸¥ ¸ðµç ÅØ½ºÆ®¸¦ HTML·Î °¡Á¤Çϰí À̸¦ À¥ ºê¶ó¿ìÀú·Î º¸³À´Ï´Ù.
±¸¹®
>>-%HTML----(--name--)------------------------------------------> .-----------------------------. V | >-----{-----+-----------------------+--+---%}------------------>< +-exec_sql statement----+ +-variable reference----+ +-if block--------------+ +-function call---------+ +-HTML statement--------+ +-include statement-----+ +-include_url statement-+ '-while block-----------'
°ª
¹®¸Æ
HTML ºí·ÏÀº ´ÙÀ½ ¹®¸Æ¿¡ µé¾î ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.
Á¦ÇÑ
HTML ºí·ÏÀº ´ÙÀ½ ¿ä¼Ò¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿¹
¿¹Á¦ 1: ¸Ó¸®¸» ¹× ²¿¸®¸»¿¡ ´ëÇÑ Æ÷ÇÔ ÆÄÀÏÀ» °¡Áö´Â HTML ºí·Ï
%HTML(example1){ %INCLUDE"header.html" <P>You can put <EM>any</EM> HTML in an HTML block. An SQL function call is made like this: @xmp1() %INCLUDE"footer.html" %}
Á¶°ÇºÎ ¹®ÀÚ¿ 󸮸¦ ¼öÇàÇÕ´Ï´Ù. IF ºí·ÏÀº Çϳª ÀÌ»óÀÇ Á¶°ÇÀ» Å×½ºÆ®Çϰí Á¶°Ç Å×½ºÆ®ÀÇ Ãâ·ÂÀ» ±âÃÊ·Î ¸í·É¹® ºí·ÏÀ» ¼öÇàÇÒ ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù. Net.Data ¸ÅÅ©·Î, HTML ºí·Ï, MACRO_FUNCTION ºí·Ï, REPORT ºí·Ï, WHILE ºí·Ï ¹× ROW ºí·ÏÀÇ ¼±¾ð ºÎºÐ¿¡ IP ºí·ÏÀ» »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç À̸¦ ´Ù¸¥ IF ºí·Ï¿¡ ÁßøÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
Á¶°Ç ¸ñ·ÏÀÇ ¹®ÀÚ¿ °ªÀº Á¤¼ö¸¦ ³ªÅ¸³»´Â ¹®ÀÚ¿ÀÌ¸ç ½ÃÀÛ ¶Ç´Â ³¡ °ø¹éÀÌ ¾ø´Â °æ¿ì ºñ±³¸¦ À§ÇØ ¼ýÀÚ·Î Ãë±ÞÇÕ´Ï´Ù. ÀÌµé °ªÀº ÇϳªÀÇ ´õÇϱâ (+) ¶Ç´Â »©±â (-) ºÎÈ£·Î ½ÃÀÛµÉ ¼ö ÀÖ½À´Ï´Ù.
ÁßøµÈ IF ºí·Ï: IF ºí·Ï ±¸¹®¿¡ ´ëÇÑ ±ÔÄ¢Àº ¸ÅÅ©·Î ÆÄÀÏ¿¡¼ ÀÌ ºí·ÏÀÇ À§Ä¡¿¡ ÀÇÇØ Á¿ìµË´Ï´Ù. IF ºí·ÏÀÌ ¼±¾ð ºÎºÐÀÇ ´Ù¸¥ ºí·Ï ¿ÜºÎ¿¡ ÀÖ´Â IF ºí·Ï ³»¿¡ ÁßøµÇ¸é ÀÌ ºí·ÏÀº ¿ÜºÎ ºí·ÏÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Â ¸ðµç ¿ä¼Ò¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. IF ºí·ÏÀÌ IF ºí·Ï¿¡ ÀÖÁö ¾ÊÀº ´Ù¸¥ ºí·Ï ³»¿¡ ÁßøµÇ¸é ÀÌ ºí·ÏÀÌ ÁßøµÈ ºí·Ï¿¡ ´ëÇÑ ±¸¹® ±ÔÄ¢À» ÃëÇÕ´Ï´Ù.
´ÙÀ½ ¿¹Á¦¿¡¼ ÁßøµÈ IF ºí·ÏÀº HTML ºí·Ï³»¿¡ ÀÖÀ» ¶§ »ç¿ëµÇ´Â ±ÔÄ¢À» µû¶ó¾ß ÇÕ´Ï´Ù.
%IF block ... %HTML block ... %IF block
ÀÌ Àý µÞºÎºÐ¿¡ ³ª¿µÈ Á¦ÇÑ»çÇ×À» Âü°íÇϽʽÿÀ.
±¸¹®
>>-%IF--| condition list |--------------------------------------> .---------------------------------. V | >--------+---------------------------+--+-----------------------> | (1) | +-define block--------------+ | (1) | +-define statement----------+ | (2) | +-exec_sql statement--------+ | (1) | +-function block------------+ +-function call-------------+ | (1) | +-HTML block----------------+ | (2) | +-HTML statement------------+ +-if block------------------+ +-include statement---------+ +-include_url statement-----+ | (1) | +-macro_function block------+ | (1) | +-message block-------------+ | (2) | +-string--------------------+ | (2) | +-variable reference--------+ | (2) | '-while block---------------' >-----| else_if spec |--%ENDIF--------------------------------->< condition list |---(--+-(--condition list--)----------------+---)--------------| +-condition list--&&--condition list--+ +-condition list--||--condition list--+ +-!--condition list-------------------+ +-| condition |-----------------------+ '-| term |----------------------------' condition |---term--+-<--+---term-----------------------------------------| +->--+ +-<=-+ +->=-+ +-!=-+ '-==-' term |---+-variable reference-+--------------------------------------| +-"--string--"-------+ +-variable name------+ '-function call------' else_if spec |---+------------------------------------------------------------------------------+-> | .-------------------------------------------------------------------. | | | .---------------------------------. | | | V V | | | '--+----%ELIF--(--condition_list--)-----+---------------------------+--+--+-+--' | | (1) | | | +-define block--------------+ | | | (1) | | | +-define statement----------+ | | | (2) | | | +-exec_sql statement--------+ | | | (1) | | | +-function block------------+ | | +-function call-------------+ | | | (1) | | | +-HTML block----------------+ | | | (2) | | | +-HTML statement------------+ | | +-if block------------------+ | | +-include statement---------+ | | +-include_url statement-----+ | | | (1) | | | +-macro_function block------+ | | | (1) | | | +-message block-------------+ | | | (2) | | | +-string--------------------+ | | | (2) | | | +-variable reference--------+ | | | (2) | | | '-while block---------------' | | .---------------------------------. | | V | | '-%ELSE-----+---------------------------+--+-----------------------------' | (1) | +-define block--------------+ | (1) | +-define statement----------+ | (2) | +-exec_sql statement--------+ | (1) | +-function block------------+ +-function call-------------+ | (1) | +-HTML block----------------+ | (2) | +-HTML statement------------+ +-if block------------------+ +-include statement---------+ +-include_url statement-----+ | (1) | +-macro_function block------+ | (1) | +-message block-------------+ | (2) | +-string--------------------+ | (2) | +-variable reference--------+ | (2) | '-while block---------------'
ÁÖ:
°ª
µÎ Á¶°Ç Áß Çϳª°¡ ÂüÀÌ ¾Æ´Ï¸é ÀϹÝÀûÀÎ ¹®ÀÚ¿ ºñ±³°¡ ¼öÇàµË´Ï´Ù.
¹®¸Æ
IF ºí·ÏÀº ´ÙÀ½ ¹®¸Æ¿¡ µé¾î ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.
Á¦ÇÑ
IF ºí·ÏÀº Net.Data ¸ÅÅ©·ÎÀÇ ¼±¾ð ºÎºÐ¿¡ ÀÖ´Â ´Ù¸¥ ºí·Ï ¿ÜºÎ¿¡ À§Ä¡ÇÒ ¶§ ´ÙÀ½ ¿ä¼Ò¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.
IF ºí·ÏÀº Net.Data ¸ÅÅ©·ÎÀÇ HTML ºí·Ï, MACRO_FUNCTION ºí·Ï£¬ REPORT ºí·Ï, ROW ºí·Ï ¶Ç´Â WHILE ºí·Ï¿¡ À§Ä¡ÇÒ ¶§ ´ÙÀ½ ¿ä¼Ò¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿¹
¿¹Á¦ 1: Net.Data ¸ÅÅ©·ÎÀÇ ¼±¾ð ºÎºÐ¿¡ ÀÖ´Â IF ºí·Ï
%DEFINE a = "1" %DEFINE b = "2" ... %IF ($(DTW_HTML_TABLE) == "YES") %define OUT_FORMAT = "HTML" %ELSE %define OUT_FORMAT = "CHARACTER" %ENDIF %HTML(REPORT){ ... %}
¿¹Á¦ 2: HTML ºí·Ï ³»ÀÇ IF ºí·Ï
%HTML(REPORT){ @myFunctionCall() %IF ($RETURN_CODE) == $(failure_rc)) <P> The function call failed with failure code $(RETURN_CODE). %ELIF ($(RETURN_CODE) == $(warning_rc)) <P> The function call succeeded with warning code $(RETURN_CODE). %ELIF ($(RETURN_CODE) == $(success_rc)) <P>The function call was successful. %ELSE P>The function call returned with unknown return code $(RETURN_CODE). %ENDIF %}
¿¹Á¦ 3: ¼ýÀÚ ºñ±³
%IF (ROW_NUM < "100") <p>The table is not full yet... %ELIF (ROW_NUM == "100") <p>The table is now full... %ELSE <p>The table has overflowed... %ENDIF
³»ÀçÀû Å×ÀÌºí º¯¼öÀÎ ROW_NUMÀÌ Ç×»ó Á¤¼ö°ªÀ» ¸®ÅÏÇÏ¸ç ºñ±³µÇ´Â °ªµµ Á¤¼öÀ̹ǷΠ¼ýÀÚ ºñ±³°¡ ¼öÇàµË´Ï´Ù.
¿¹Á¦ 4: Áßø IF ºí·Ï
%IF (MONTH == "January") %IF (DATE = "1") HAPPY NEW YEAR! %ELSE Ho hum, just another day. %ENDIF %ENDIF
¸ñÀû
ÆÄÀÏÀ» ÀÐ¾î ¸í·É¹®ÀÌ ÁöÁ¤µÈ Net.Data ¸ÅÅ©·Î¿¡ ÅëÇÕ½Ãŵ´Ï´Ù.
Net.Data´Â ÃʱâÈ ÆÄÀÏÀÇ INCLUDE_PATH ¸í·É¹®¿¡ ÁöÁ¤µÈ µð·ºÅ丮¿¡¼ Æ÷ÇÔ ÆÄÀÏÀ» ã½À´Ï´Ù.
´ëºÎºÐÀÇ °í±Þ ¾ð¾î¿¡¼Ã³·³ Æ÷ÇÔ ÆÄÀÏÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. °øÅë ¸Ó¸®¸»°ú ²¿¸®¸»À» »ðÀÔÇϰųª, °øÅë º¯¼ö ¼¼Æ®¸¦ Á¤ÀÇÇϰųª, FUNCTION ºí·Ï Á¤ÀÇÀÇ °øÅë ¼ºê·çƾ ¶óÀ̺귯¸®¸¦ Net.Data ¸ÅÅ©·Î¿¡ ÅëÇÕ½Ãų ¼ö ÀÖ½À´Ï´Ù.
±ÇÇÑ Á¤º¸: À¥ ¼¹ö°¡ INCLUDE¹®¿¡¼ ÂüÁ¶ÇÏ´Â ÆÄÀÏ¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀ» °¡Áö´ÂÁö È®ÀÎÇϽʽÿÀ. ÀÚ¼¼ÇÑ ³»¿ëÀº Net.Data Administration and Programming GuideÀÇ ±¸¼º Àå¿¡¼ Net.Data ÆÄÀÏ¿¡ ´ëÇÑ À¥ ¼¹ö ¾×¼¼½º ±ÇÇÑ ÁöÁ¤¿¡ °üÇÑ ÀýÀ» Âü°íÇϽʽÿÀ.
ÆÁ: ·ÎÄà À¥ ¼¹ö¿¡¼ °¡Á®¿Â HTML ÆÄÀÏÀ» Æ÷ÇÔ½ÃŰ·Á¸é INCLUDE_URL¿¡ ´ëÇØ ¿¹Á¦ 3¿¡¼ ³ªÅ¸³ª´Â °Íó·³ INCLUDE_URL ±¸¼ºÀ» »ç¿ëÇϽʽÿÀ. ¿¹Á¦ ±¸¹®À» »ç¿ëÇϸé À¥ ¼¹ö°¡ ÀÌ¹Ì ¾Ë°í ÀÖ´Â µð·ºÅ丮¸¦ ÁöÁ¤Çϱâ À§ÇØ Net.Data ÃʱâÈ ÆÄÀÏ¿¡¼ INCLUDE_PATH¸¦ ÁöÁ¤ÇÒ Çʿ䰡 ¾ø½À´Ï´Ù.
±¸¹®
.-------------------------. V | >>-%INCLUDE----"----+-string-------------+--+---"-------------->< '-variable reference-'
°ª
¹®¸Æ
INCLUDE¹®Àº ´ÙÀ½ ¹®¸Æ¿¡ µé¾î ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.
Á¦ÇÑ
INCLUDE¹®Àº ´ÙÀ½ ¿ä¼Ò¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿¹
¿¹Á¦ 1: HTML ºí·ÏÀÇ INCLUDE¹®
%HTML(start){ %INCLUDE "header.hti" ... %}
¿¹Á¦ 2: REPORT ºí·ÏÀÇ INCLUDE¹®
%REPORT { %INCLUDE "report_header.txt" %ROW { %INCLUDE "row_include.txt" %} %INCLUDE "report_footer.txt" %}
¿¹Á¦ 3: INCLUDE¹®ÀÇ º¯¼ö ÂüÁ¶
%define library = "/qsys.lib/mylib.lib/" %define filename = "macros.file/incfile.mbr" %include "$(library)$(filename)"
¸ñÀû
´Ù¸¥ ÆÄÀÏÀ» ÀÐ¾î ¸í·É¹®ÀÌ ÁöÁ¤µÈ Net.Data »ý¼º Ãâ·ÂÀ¸·Î ÅëÇÕ½Ãŵ´Ï´Ù. ÁöÁ¤µÈ ÆÄÀÏÀº ±¹Áö ¶Ç´Â ¿ø°Ý ¼¹ö¿¡ Á¸ÀçÇÒ ¼ö ÀÖ½À´Ï´Ù.
INCLUDE_URL¹®À» »ç¿ëÇϸé ÀÀ¿ë ÇÁ·Î±×·¥ »ç¿ëÀÚ°¡ Á¦Ãâ ¹öưÀ» ¼±ÅÃÇÏÁö ¾Ê¾Æµµ ´Ù¸¥ ¸ÅÅ©·Î¿¡¼ ¸ÅÅ©·Î¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.
±¸¹®
.-------------------------. V | >>-%INCLUDE_URL---"------+-string-------------+--+--"---------->< '-variable reference-'
°ª
¹®¸Æ
INCLUDE_URL¹®Àº ´ÙÀ½ ¹®¸Æ¿¡ µé¾î ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.
Á¦ÇÑ
INCLUDE_URL¹®Àº ´ÙÀ½ ¿ä¼ÒµéÀ» Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.
INCLUDE_URL ÆÄÀÏÀº ´ÙÀ½ÀÇ ÆÄÀÏ Å©±â Á¦ÇÑÀ» °¡Áý´Ï´Ù.
INCLUDE_URL´Â OS/400 ȯ°æ¿¡¼´Â Áö¿øµÇÁö ¾Ê½À´Ï´Ù.
¿¹
¿¹Á¦ 1: ´Ù¸¥ ¼¹ö·ÎºÎÅÍÀÇ HTML ÆÄÀÏ Æ÷ÇÔ
%include_url "http://www.ibm.com/path/myfile.html"
¿¹Á¦ 2: ¼¹ö¸íÀ» È£ÃâÇÏ¿© ¿ø°Ý ¼¹ö·ÎºÎÅÍÀÇ HTML ÆÄÀÏ Æ÷ÇÔ
%include_url "myserver/path/myfile.html"
¿©±â¿¡¼ myserver´Â ¼¹ö¸íÀÔ´Ï´Ù.
¿¹Á¦ 3: ±¹Áö À¥ ¼¹ö·ÎºÎÅÍÀÇ HTML ÆÄÀÏ Æ÷ÇÔ
%include_url "/path/myfile.html"
ÆÁ: ÀÌ ¸Þ¼µå¸¦ »ç¿ëÇϸé À¥ ¼¹ö°¡ ÀÌ¹Ì ¾Ë°í ÀÖ´Â µð·ºÅ丮¸¦ ÁöÁ¤Çϱâ À§ÇØ Net.Data ±¸¼º ÆÄÀÏ¿¡¼ INCLUDE_URL °æ·Î¸¦ °»½ÅÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. ¹®ÀÚ¿ÀÌ ½½·¡½Ã·Î ½ÃÀÛµÇÁö ¾ÊÀ¸¸é Net.Data´Â ÀÌ ¹®ÀÚ¿À» ¼¹ö¸íÀ¸·Î °¡Á¤Çϰí ÇØ´ç À̸§À» °¡Áø ¼¹ö·ÎºÎÅÍ ÆÄÀÏÀ» °Ë»öÇÏ·Á ÇÕ´Ï´Ù.
¿¹Á¦ 4: ¿ø°Ý ¼¹ö·ÎºÎÅÍÀÇ ´Ù¸¥ Net.Data ¸ÅÅ©·Î Æ÷ÇÔ
%REPORT{ <P>Current hot pick as of @DTW_rTIME(): %include_url "http://www.ibm.com/cgi-bin/db2www/hotpic.mac/report?custno=$(custno)"
ÀÌ ¿¹Á¦¿¡¼´Â ¸ÅÅ©·Î ÆÄÀÏ hotpic.mac°¡ È£ÃâµÇ°í custno°¡ º¯¼ö·Î ¼Û½ÅµË´Ï´Ù. ¹®ÀÚ¿ÀÌ ½½·¡½Ã·Î ½ÃÀ۵Ǹé Net.Data´Â ±¹Áö À¥ ¼¹ö·ÎºÎÅÍ INCLUDE ÆÄÀÏÀ» °Ë»öÇÕ´Ï´Ù.
¸ñÀû
°ªÀÇ ±¸ºÐ ¸ñ·ÏÀ» ÀÛ¼ºÇÕ´Ï´Ù. ÀϺΠWHERE ¶Ç´Â HAVING Àý¿¡¼ ãÀ» ¼ö ÀÖ´Â °Í°ú °°ÀÌ ¿©·¯ Ç׸ñÀÌ ÀÖ´Â SQL Á¶È¸¸¦ ±¸¼ºÇÒ ¶§ LIST¹®À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
±¸¹®
.--------------------------. V | >>-%LIST--"-----+--------------------+--+---"----variable name-->< +-string-------------+ +-variable reference-+ '-function call------'
°ª
¹®¸Æ
LIST¹®Àº ´ÙÀ½ ¹®¸Æ¿¡¼ ãÀ» ¼ö ÀÖ½À´Ï´Ù.
Á¦ÇÑ
LIST¹®Àº ´ÙÀ½ ¿ä¼Ò¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿¹
¿¹Á¦ 1: º¯¼ö ¸ñ·Ï
%DEFINE{ DATABASE="custcity" %LIST " OR " conditions cond1="cond1='Sao Paolo'" cond2="cond2='Seattle'" cond3="cond3='Shanghai'" whereClause=conditions ? "WHERE $(conditions)" : "" %}
¸ñÀû
Net.Data ¸ÅÅ©·Î¿¡¼ È£ÃâÇÒ ¼ö ÀÖ´Â ¼ºê·çƾÀ» Á¤ÀÇÇÕ´Ï´Ù. MACRO_FUNCTION ºí·ÏÀÇ ½ÇÇà ¸í·É¹®Àº Net.Data ¸ÅÅ©·Î ¾ð¾î ¼Ò½º ¸í·É¹®À̾î¾ß ÇÕ´Ï´Ù.
±¸¹®
>>-%MACRO_FUNCTION--function_name--| parm passing spec |--------> >-----{--| function body |----+---------------+--%}------------>< '-report block--' parm passing spec |---(--+-----------------------------+---)----------------------| | .-,---------------------. | | | (1) | | | V .-IN-------. | | '----+----------+---name---+--' +-OUT------+ '-INOUT----' function body .-----------------------------. V | |------+-----------------------+--+-----------------------------| +-exec_sql statement----+ +-variable reference----+ +-if block--------------+ +-function call---------+ +-HTML statement--------+ +-include statement-----+ +-include_url statement-+ '-while block-----------'
ÁÖ:
°ª
¹®¸Æ
MACRO_FUNCTION ºí·ÏÀº ´ÙÀ½ ¹®¸Æ¿¡¼ ãÀ» ¼ö ÀÖ½À´Ï´Ù.
Á¦ÇÑ
ÀÌ ±¸¼ºÀº OS/390 ¿î¿µÃ¼Á¦¿¡¼´Â »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
MACRO_FUNCTION ºí·ÏÀº ´ÙÀ½ ¿ä¼Ò¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿¹
¿¹Á¦ 1: ¸Þ¼¼Áö 󸮸¦ ÁöÁ¤ÇÏ´Â ¸ÅÅ©·Î ÇÔ¼ö
%MACRO_FUNCTION setMessage(IN rc, OUT message) { %IF (rc == "0") @dtw_assign(message, "Function call was successful.") %ELIF (rc == "-1") @dtw_assign(message, "Function failed, out of memory.") %ELIF (rc == "-2") @dtw_assign(message, "Function failed, invalid parameter.") %ENDIF %}
¿¹Á¦ 2: Çì´õ Á¤º¸¸¦ ÁöÁ¤ÇÏ´Â ¸ÅÅ©·Î ÇÔ¼ö
%MACRO_FUNCTION setup(IN browserType) { %{ call this function at the top of each HTML block in the macro %} %INCLUDE "header_info.html" @dtw_rdate() %IF (browserType == "IBM") @setupIBM() %ELIF (browserType == "MS") @setupMS() %ELIF (browserType == "NS") @setupNS() %ELSE @setupDefault() %ENDIF %}
¸ñÀû
ÇÔ¼ö·ÎºÎÅÍÀÇ ¸®ÅÏ Äڵ带 ±âÃʷΠǥ½ÃÇÒ ¸Þ¼¼Áö¿Í ÃëÇÒ Á¶Ä¡¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
MESSAGE ºí·Ï¿¡¼ ÇØ´ç ¸Þ¼¼Áö¿Í Á¶Ä¡¿Í ÇÔ²² ¸®ÅÏ ÄÚµå ÁýÇÕÀ» Á¤ÀÇÇÕ´Ï´Ù. ÇÔ¼ö È£ÃâÀÌ ¿Ï·áµÇ¸é, Net.Data´Â ¿©±â¼ ¸®ÅÏµÈ ¸®ÅÏ Äڵ带 MESSAGE ºí·Ï¿¡ Á¤ÀǵǾî ÀÖ´Â ¸®ÅÏ ÄÚµå¿Í ºñ±³ÇÕ´Ï´Ù. ÇÔ¼öÀÇ ¸®ÅÏ Äڵ尡 MESSAGE ºí·Ï¿¡ Á¤ÀǵǾî ÀÖ´Â ¸®ÅÏ ÄÚµå¿Í ÀÏÄ¡Çϸé Net.Data´Â 󸮸¦ °è¼ÓÇÒÁö ¶Ç´Â Net.Data ¸ÅÅ©·Î¸¦ Á¾·áÇÒÁöÀÇ ¿©ºÎ¸¦ ÆÇº°Çϱâ À§ÇØ ¸Þ¼¼Áö¸¦ Ç¥½ÃÇÏ°í ±ÇÀå Á¶Ä¡¸¦ Æò°¡ÇÕ´Ï´Ù.
MESSAGE ºí·ÏÀº ¹üÀ§³»¿¡¼ Àü¿ªÀ̰ųª ÇϳªÀÇ FUNCTION ºí·Ï¿¡ ´ëÇØ ±¹Áö°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. MESSAGE ºí·ÏÀÌ °¡Àå ¹Ù±ùÀÇ ¸ÅÅ©·Î °èÃþ¿¡ Á¤ÀǵǾî ÀÖÀ¸¸é, ÀÌ´Â ¹üÀ§³»¿¡¼´Â Àü¿ªÀ¸·Î °£Áֵ˴ϴÙ. º¹¼öÀÇ Àü¿ª MESSAGE ºí·ÏÀÌ Á¤ÀǵǾî ÀÖÀ¸¸é, ¸¶Áö¸·À¸·Î ó¸®µÈ ºí·Ï¸¸ »ç¿ë ÁßÀÎ °ÍÀ¸·Î °£Áֵ˴ϴÙ. MESSAGE ºí·ÏÀÌ FUNCTION ºí·Ï ³»ºÎ¿¡ Á¤ÀǵǾî ÀÖÀ¸¸é, ºí·ÏÀÌ Á¤ÀÇµÈ FUNCTION ºí·Ï¿¡ ´ëÇÑ ¹üÀ§³»¿¡¼´Â ±¹ÁöÀÔ´Ï´Ù. ¸®ÅÏ ÄÚµå ó¸® ±ÔÄ¢¿¡ ´ëÇØ¼´Â Net.Data Administration and Programming Guide¿¡¼ MESSAGE ºí·Ï ÀýÀ» Âü°íÇϽʽÿÀ.
±¸¹®
>>-%MESSAGE--{--------------------------------------------------> .---------------------------------------------------------------------------------. V | >--------+---------------------------------------------------------------------------+--+> '--+-| return code spec |--+--:---| message text spec |----| action spec |--' '-| SQLSTATE |----------' >----%--}------------------------------------------------------>< action spec |--+------------------+-----------------------------------------| '-| action spec |--' return code spec |---+-DEFAULT------------+--------------------------------------| +-+DEFAULT-----------+ +- -DEFAULT----------+ +-+----+---msg_code--+ | +- --+ | | '-+--' | '-include statement--' SQLSTATE |---SQLSTATE--:----+-state_id------------+----------------------| '-alphanumeric string-' message text spec .--------------------------. V | |----+-"-----+--------------------+--+---"---+------------------| | +-string-------------+ | | +-variable reference-+ | | +-function call------+ | | '-(new_line)---------' | | .--------------------------. | | V | | +-{-----+--------------------+--+---%}--+ | +-string-------------+ | | +-variable reference-+ | | '-function call------' | '-include statement---------------------' action spec .-EXIT-----. |---+-:--+----------+----+--------------------------------------| | '-CONTINUE-' | '-include statement--'
°ª
¹®¸Æ
MESSAGE ºí·ÏÀº ´ÙÀ½ ¹®¸Æ¿¡¼ ãÀ» ¼ö ÀÖ½À´Ï´Ù.
Á¦ÇÑ
MESSAGE ºí·ÏÀº ´ÙÀ½ ¿ä¼Ò¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.
SQLSTATE´Â OS/400 Ç÷§Æû¿¡¼´Â Áö¿øµÇÁö ¾Ê½À´Ï´Ù.
¿¹
¿¹Á¦ 1: ±¹Áö MESSAGE ºí·Ï
%MESSAGE{ -601: {<H3>The table has already been created, please go back and enter your name.</H3> <P><a href="input">Return</a> %} default: "<H3>Can't continue because of error $(RETURN_CODE)</H3>" %}
¿¹Á¦ 2: Àü¿ª MESSAGE ºí·Ï
%{ global message block %} %MESSAGE { -100 : "Return code -100 message" : exit 100 : "Return code 100 message" : continue +default : { This is a long message that spans more than one line. You can use HTML tags, including anchors and forms, in this message. %} : continue %} %{ local message block inside a FUNCTION block %} %FUNCTION(DTW_REXX) my_function() { %EXEC { my_command.cmd %} %MESSAGE { -100 : "Return code -100 message" : exit 100 : "Return code 100 message" : continue -default : { This is a long message that spans more than one line. You can use HTML tags, including anchors and forms, in this message. %} : exit %}
¿¹Á¦ 3: INCLUDE¹®À» Æ÷ÇÔÇÏ´Â MESSAGE ºí·Ï.
%message { %include "rc1000.msg" %include "rc2000.msg" %include "defaults.msg" %}
¸ñÀû
ÇÔ¼ö È£Ãâ·ÎºÎÅÍÀÇ Ãâ·Â Çü½ÄÀ» ÁöÁ¤ÇÕ´Ï´Ù. º¸°í¼°¡ ¸í¸íµÈ Å×À̺íÀÇ ÀڷḦ »ç¿ëÇϵµ·Ï ÁöÁ¤Çϱâ À§ÇØ Å×À̺í¸í ¸Å°³º¯¼ö¸¦ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸Å°³º¯¼ö¸¦ ÀÔ·ÂÇÏÁö ¾ÊÀ¸¸é ÇÔ¼ö ¸Å°³º¯¼ö ¸ñ·Ï¿¡¼ ãÀ» ¼ö Àִ ù¹øÂ° Ãâ·Â Å×À̺íÀ» »ç¿ëÇÏ¿© º¸°í¼°¡ »ý¼ºµÇ¸ç ¸ñ·Ï¿¡ Å×À̺í¸íÀÌ ¾øÀ¸¸é »ý·«½Ã Å×À̺í ÀڷḦ »ç¿ëÇÏ¿© º¸°í¼°¡ »ý¼ºµË´Ï´Ù.
±¸¹®
>>-%REPORT----+-------------+--{--------------------------------> '-(--name--)--' .-----------------------------. V | >--------+-----------------------+--+---+-----------+-----------> +-string----------------+ '-row block-' +-if block--------------+ +-variable reference----+ +-function call---------+ +-HTML statements-------+ +-include statement-----+ +-include_url statement-+ '-while block-----------' .-----------------------------. V | >--------+-----------------------+--+--%}---------------------->< +-string----------------+ +-if block--------------+ +-variable reference----+ +-function call---------+ +-HTML statements-------+ +-include statement-----+ +-include_url statement-+ '-while block-----------'
°ª
¹®¸Æ
REPORT ºí·ÏÀº ´ÙÀ½ ¹®¸Æ¿¡¼ ãÀ» ¼ö ÀÖ½À´Ï´Ù.
Á¦ÇÑ
REPORT ºí·ÏÀº ´ÙÀ½ ¿ä¼Ò¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.
OS/390 Ç÷§ÆûÀÇ °æ¿ì: SQL ÇÔ¼ö´Â SQL ÇÔ¼ö ³»ºÎ¿¡¼ È£ÃâÇÒ ¼ö ¾ø½À´Ï´Ù.
¿¹
¿¹Á¦ 1: À̸§ ¹× À§Ä¡ ¸ñ·ÏÀ» ³ªÅ¸³»´Â 2°³ ¿·Î ÀÌ·ç¾îÁø HTML Å×À̺í
%REPORT{ <H2>Query Results</H2> <P>Select a name for details. <TABLE BORDER=1> <TR><TD>Name</TD><TD>Location</TD> %ROW{ <TR> <TD> <a href="/cgi-bin/db2www/name.mac/details?name=$(V1)&location=$(V2)">$(V1)</a></TD> <TD>$(V2)</TD> %} </TABLE> %}
Å×À̺íÀÇ À̸§À» ¼±ÅÃÇϸé name.mac Net.Data ¸ÅÅ©·ÎÀÇ details HTML ºí·ÏÀ» È£ÃâÇϰí URLÀÇ ÀϺÎÀÎ µÎ °ª¿¡ À̸¦ ¼Û½ÅÇÕ´Ï´Ù. ÀÌ ¿¹Á¦¿¡¼ À̸§¿¡ ´ëÇÑ Á»´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ ¾ò±â À§ÇØ name.mac¿¡¼ °ªÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸ñÀû
ÇÔ¼ö È£Ãâ·ÎºÎÅÍ ¸®ÅÏµÈ °¢ Å×À̺í ÇàÀ» ó¸®ÇÕ´Ï´Ù. Net.Data´Â °¢ Çึ´Ù Çѹø¾¿ ROW ºí·Ï³»ÀÇ ¸í·É¹®À» ó¸®ÇÕ´Ï´Ù.
±¸¹®
.-----------------------------. V | >>-%ROW--{-------+-----------------------+--+--%}-------------->< +-string----------------+ +-if block--------------+ +-variable reference----+ +-function call---------+ +-HTML statement-----------+ +-include statement-----+ +-include_url statement-+ '-while block-----------'
°ª
¹®¸Æ
ROW ºí·ÏÀº ´ÙÀ½ ¹®¸Æ¿¡¼ ãÀ» ¼ö ÀÖ½À´Ï´Ù.
Á¦ÇÑ
ROW ºí·ÏÀº ´ÙÀ½ ¿ä¼Ò¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.
OS/390 Ç÷§ÆûÀÇ °æ¿ì: SQL ÇÔ¼ö´Â SQL ÇÔ¼ö ³»ºÎ¿¡¼ È£ÃâÇÒ ¼ö ¾ø½À´Ï´Ù.
¿¹
¿¹Á¦ 1: À̸§ ¹× À§Ä¡ ¸ñ·ÏÀ» ³ªÅ¸³»´Â 2°³ ¿·Î ÀÌ·ç¾îÁø HTML Å×À̺í
%REPORT{ <H2>Query Results</H2> <P>Select a name for details. <TABLE BORDER=1> <TR><TD>Name</TD><TD>Location</TD> %ROW{ <TR> <TD> <a href="/cgi-bin/db2www/name.mac/details?name=$(V1)&location=$(V2)">$(V1)</a></TD> <TD>$(V2)</TD> %} </TABLE> %}
Å×À̺íÀÇ À̸§À» ¼±ÅÃÇϸé name.mac Net.Data ¸ÅÅ©·ÎÀÇ details HTML ºí·ÏÀ» È£ÃâÇϰí URLÀÇ ÀϺÎÀÎ µÎ °ª¿¡ À̸¦ ¼Û½ÅÇÕ´Ï´Ù. ÀÌ ¿¹Á¦¿¡¼ À̸§¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸¸¦ ¾ò±â À§ÇØ name.mac¿¡¼ °ªÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸ñÀû
°ü·Ã ÀÚ·áÀÇ ÁýÇÕ¿¡ ÇØ´çÇÏ´Â º¯¼ö¸¦ Á¤ÀÇÇÕ´Ï´Ù. ¿©±â¿¡´Â µ¿ÀÏÇÑ ·¹ÄÚµå ¹è¿, Çà ¹× °¢ ÇàÀÇ Çʵ带 ¼³¸íÇÏ´Â Ä÷³ À̸§ÀÇ ¹è¿ÀÌ Æ÷ÇԵ˴ϴÙ. Å×ÀÌºí ¸í·É¹®Àº DEFINE¹®À̳ª ºí·Ï ³»¿¡¼¸¸ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù.
±¸¹®
>>-%TABLE--| upper limit |------------------------------------->< upper limit |---+--------------------+--------------------------------------| '-(--+-number-+---)--' '-ALL----'
°ª
¹®¸Æ
TABLE¹®Àº ´ÙÀ½ ¹®¸Æ¿¡¼ ãÀ» ¼ö ÀÖ½À´Ï´Ù.
Á¦ÇÑ
TABLE¹®Àº ´ÙÀ½ ¿ä¼Ò¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿¹
¿¹Á¦ 1: 30°³ÀÇ Çà ¼ö »óÇÑÀ» °¡Áö´Â Net.Data Å×À̺í
%DEFINE myTable1=%TABLE(30)
¿¹Á¦ 2: »ý·«½Ã °ªÀÌ ¸ðµç ÇàÀ» »ç¿ëÇÏ´Â Net.Data Å×À̺í
%DEFINE myTable2=%TABLE
¿¹Á¦ 3: ¸ðµç ÇàÀ» ÁöÁ¤ÇÏ´Â Net.Data Å×À̺í
%DEFINE myTable3=%TABLE(ALL)
¸ñÀû
Á¶°ÇºÎ ¹®ÀÚ¿ 󸮸¦ ±âÃÊ·Î ·çÇÎ ±¸¼ºÀ» Á¦°øÇÕ´Ï´Ù. HTML ºí·Ï, REPORT ºí·Ï, ROW ºí·Ï, IF ºí·Ï ¹× MACRO_FUNCTION ºí·Ï¿¡ WHILE ºí·ÏÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Á¶°Ç ¸ñ·ÏÀÇ ¹®ÀÚ¿ °ªÀº Á¤¼ö¸¦ ³ªÅ¸³»´Â ¹®ÀÚ¿ÀÌ¸ç ½ÃÀÛ ¶Ç´Â ³¡ °ø¹éÀÌ ¾ø´Â °æ¿ì ºñ±³¸¦ À§ÇØ ¼ýÀÚ·Î Ãë±ÞÇÕ´Ï´Ù. ÀÌµé °ªÀº ÇϳªÀÇ ´õÇϱâ (+) ¶Ç´Â »©±â (-) ºÎÈ£·Î ½ÃÀÛµÉ ¼ö ÀÖ½À´Ï´Ù.
±¸¹®
>>-%WHILE--| condition list |---{-------------------------------> .--------------------------. V | >--------+--------------------+--+--%}------------------------->< +-exec_sql statement-+ +-function call------+ +-HTML statement-----+ +-if block-----------+ +-while block--------+ +-variable reference-+ '-string-------------' condition list |---(--+-(--condition list--)----------------+---)--------------| +-condition list--&&--condition list--+ +-condition list--||--condition list--+ +-!--condition list-------------------+ +-| condition |-----------------------+ '-| term |----------------------------' condition |---term--+-<--+---term-----------------------------------------| +->--+ +-<=-+ +->=-+ +-!=-+ '-==-' term |---+-variable reference-+--------------------------------------| +-"--string--"-------+ +-variable name------+ '-function call------'
°ª
µÎ Á¶°Ç Áß Çϳª°¡ ÂüÀÌ ¾Æ´Ï¸é ÀϹÝÀûÀÎ ¹®ÀÚ¿ ºñ±³°¡ ¼öÇàµË´Ï´Ù.
¹®¸Æ
WHILE ºí·ÏÀº ´ÙÀ½ ¹®¸Æ¿¡¼ ãÀ» ¼ö ÀÖ½À´Ï´Ù.
Á¦ÇÑ
WHILE ºí·ÏÀº ´ÙÀ½ ¿ä¼Ò¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿¹
¿¹Á¦ 1: Å×ÀÌºí¿¡ ÇàÀ» »ý¼ºÇÏ´Â WHILE ºí·Ï
%DEFINE loopCounter = "1" %HTML(build_table) { %WHILE (loopCounter <= "100") { %{ generate table tag and column headings %} %IF (loopCounter == "1") <TABLE BORDER> <TR> <TH>Item # <TH>Description </TR> %ENDIF %{ generate individual rows %} <TR> <TD> <TD>$(loopCounter) <TD>@getDescription(loopCounter) </TR> %{ generate end table tag %} %IF (loopCounter == "100") </TABLE> %ENDIF %{ increment loop counter %} @dtw_add(loopCounter, "1", loopCounter) %} %}