ÀÌ Àý¿¡¼´Â Net.Data ¸ÅÅ©·Î¿¡¼ »ç¿ëµÇ´Â ¾ð¾î ±¸Á¶¸¦ ¼³¸íÇÕ´Ï´Ù.
°¢ ¾ð¾î ±¸¹® ¼³¸í¿¡´Â ´ÙÀ½°ú °°Àº Á¤º¸°¡ µé¾î ÀÖ½À´Ï´Ù.
´ÙÀ½ ±¸¹®Àº ¸ÅÅ©·Î¿¡¼ »ç¿ëµË´Ï´Ù. ±¸¹®°ú ¿¹Á¦¿¡ ´ëÇØ¼´Â °¢ ±¸¹® ¼³¸íÀ» ÂüÁ¶ÇϽʽÿÀ.
¸ñÀû
Net.Data ¸ÅÅ©·ÎÀÇ ÇÔ¼ö¸¦ ¹®¼ÈÇÕ´Ï´Ù. COMMENT ºí·ÏÀº ¸ÅÅ©·ÎÀÇ ¾î´À ÁöÁ¡¿¡¼³ª »ç¿ëÇÒ ¼ö ÀÖÀ¸¹Ç·Î ´Ù¸¥ ±¸¹® µµÇ¥¿¡¼´Â ¹®¼ÈµÇÁö ¾Ê½À´Ï´Ù.
COMMENT ºí·ÏÀº Net.Data ÃʱâÈ ÆÄÀÏ¿¡¼µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
±¸¹®
>>-%{---ÅØ½ºÆ®---%}--------------------------------------------><
°ª
¹®¸Æ
ÁÖ¼®Àº Net.Data ¸ÅÅ©·Î³ª 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 %}
%}
¿¹ 5: Net.Data ÃʱâÈ ÆÄÀÏÀÇ ÁÖ¼®
%{ changes: removed RETURN_CODE parm and DTW_DEFAULT ENVIRONMENT statement %}
...
ENVIRONMENT (DTW_SQL) dtwsql (IN LOCATION, DB2SSID, DB2PLAN, TRANSACTION_SCOPE)
ENVIRONMENT (DTW_ODBC) odbcdll (IN LOCATION, TRANSACTION_SCOPE)
ENVIRONMENT (DTW_PERL) perldll ()
ENVIRONMENT (DTW_REXX) rexxdll ()
ENVIRONMENT (DTW_FILE) filedll ()
ENVIRONMENT (DTW_APPLET) appldll ()
ENVIRONMENT (DTW_SYSTEM) sysdll ()
¸ñÀû
DEFINE ¼½¼ÇÀº ¸ÅÅ©·ÎÀÇ ¼±¾ð ºÎºÐ¿¡ º¯¼ö¸íÀ» Á¤ÀÇÇÏ¸ç ¸í·É¹®ÀÌ µÇ°Å³ª ºí·ÏÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù.
º¯¼ö Á¤ÀÇ´Â Å« µû¿ÈÇ¥("")¸¦ »ç¿ëÇÏ¿© ÇÑ ÇàÀÌ µÇ°Ô ÇÒ ¼öµµ ÀÖ°í, Áß°ýÈ£¿Í ÆÛ¼¾Æ® ±âÈ£({ %})¸¦ »ç¿ëÇÏ¿© ¿©·¯ ÇàÀÌ µÇ°Ô ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. º¯¼ö°¡ Á¤ÀÇµÇ¸é ¸ÅÅ©·ÎÀÇ ÀÓÀÇÀÇ ÁöÁ¡¿¡¼ À̸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù.
±¸¹®
>>-%DEFINE----+----------------------------+-------------------->
| (1) |
'-(--+-STATIC---------+---)--'
| (1) |
'-TRANSIENT------'
>-----+-| Ç׸ñ Á¤ÀÇ |-----------------------------+------------><
'-{--+------------------------------+---%}--'
| .------------------------. |
| V | |
'----+-define entry------+--+--'
'-include statement-'
Ç׸ñ Á¤ÀÇ
.--------------------------.
V |
|---+-variable name--=--+-"-----+--------------------+--+---"---+-+->
| | +-string-------------+ | |
| | +-variable reference-+ | |
| | '-function call------' | |
| | .--------------------------. | |
| | V | | |
| +-{-----+--------------------+--+---%}--+ |
| | +-string-------------+ | |
| | +-variable reference-+ | |
| | +-function call------+ | |
| | '-new_line-----------' | |
| +-exec statement------------------------+ |
| +-table statement-----------------------+ |
| +-envvar statement----------------------+ |
| +-| Á¶°Ç º¯¼ö |-------------------------+ |
| '-| Ãà¾à Á¶°Ç º¯¼ö |--------------------' |
'-list statement----------------------------------------------'
>---------------------------------------------------------------|
Á¶°Ç º¯¼ö
|---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------'
Ãà¾à Á¶°Ç º¯¼ö
.--------------------------.
V |
|---?----+-"-----+--------------------+--+---"---+--------------|
| +-string-------------+ |
| +-variable reference-+ |
| '-function call------' |
| .--------------------------. |
| V | |
'-{-----+--------------------+--+---%}--'
+-string-------------+
+-variable reference-+
'-function call------'
ÁÖ:
°ª
¹®¸Æ
DEFINE ºí·ÏÀ̳ª ¸í·É¹®Àº IF ºí·ÏÀÇ ³»ºÎ ¶Ç´Â Net.Data ¸ÅÅ©·ÎÀÇ ¼±¾ð ºÎºÐ¿¡¼ ´Ù¸¥ ¸ðµç ºí·ÏÀÇ ¿ÜºÎ¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù.
Á¦ÇÑ
%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: ÀÌ Á¶°Ç º¯¼ö ¿¹¿¡¼´Â °á°ú °ª¿¡ ³Î(NULL)ÀÌ Æ÷ÇÔµÇÁö ¾ÊÀº °æ¿ì º¯¼ö varÀÌ ÀÎ¿ë ºÎÈ£("")¾È¿¡ °á°ú °ªÀ» °®µµ·Ï ÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.
%DEFINE var = ? "Hello! $(V)@MyFunc()" %}
¸ñÀû
DEFINE ºí·Ï¿¡¼ º¯¼ö¸¦ ȯ°æ º¯¼ö·Î Á¤ÀÇÇÕ´Ï´Ù. ENVVAR º¯¼ö°¡ ÂüÁ¶µÇ¸é, Net.Data´Â ȯ°æ º¯¼öÀÇ ÇöÀç °ªÀ» µ¿ÀÏÇÑ À̸§À¸·Î ¸®ÅÏÇÕ´Ï´Ù.
±¸¹®
>>-%ENVVAR-----------------------------------------------------><
¹®¸Æ
ENVVAR ¸í·É¹®Àº DEFINE ºí·ÏÀ̳ª ¸í·É¹®ÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù.
°ª
Á¦ÇÑ
ENVVAR ¸í·É¹®Àº ´Ù¸¥ ¿ä¼Ò¸¦ Æ÷ÇÔÇÒ ¼ö ¾ø½À´Ï´Ù.
¿¹
¿¹ 1: ÀÌ ¿¹¿¡¼ ENVVARÀº ÂüÁ¶µÇ¾úÀ» ¶§ À¥ ¼¹öÀÇ À̸§ÀΠȯ°æ º¯¼ö SERVER_SOFTWARE¿¡ ´ëÇÑ ÇöÀç °ªÀ» ¸®ÅÏÇÏ´Â º¯¼ö¸¦ Á¤ÀÇÇÕ´Ï´Ù.
%DEFINE SERVER_SOFTWARE = %ENVVAR
%HTML(REPORT) {
The server is $(SERVER_SOFTWARE).
%}
¸ñÀû
º¯¼ö°¡ ÂüÁ¶µÇ°Å³ª ÇÔ¼ö°¡ È£ÃâµÉ ¶§ ½ÇÇàµÇ´Â ¿ÜºÎ ÇÁ·Î±×·¥À» ÁöÁ¤ÇÕ´Ï´Ù.
Net.Data´Â ¸ÅÅ©·Î¿¡¼ ½ÇÇà °¡´É º¯¼ö¸¦ ¹ß°ßÇϸé, ´ÙÀ½ÀÇ ¹æ¹ýÀ¸·Î ÂüÁ¶µÈ ½ÇÇà °¡´É ÇÁ·Î±×·¥ÀÌ ÀÖ´ÂÁö Á¶È¸ÇÕ´Ï´Ù.
±ÇÇÑ ºÎ¿© Á¤º¸: Net.Data¸¦ ½ÇÇàÇÏ´Â »ç¿ëÀÚ ID´Â EXEC¹®À̳ª ºí·Ï¿¡ ÂüÁ¶µÈ ¸ðµç ÆÄÀÏ¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀ» °¡Áö°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº ¿î¿µ üÁ¦¿¡ ´ëÇÑ Net.Data °ü¸® ¹× ÇÁ·Î±×·¡¹Ö ¾È³»¼ÀÇ ±¸¼º Àå¿¡¼ 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 ºí·ÏÀ̳ª ¸í·É¹®¿¡´Â ´ÙÀ½ÀÇ ¿ä¼Ò°¡ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ÀÇ Net.Data Á¦°ø ¾ð¾î ȯ°æÀº 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 ºí·Ï¿¡ ÀÖ´Â ÇÁ·Î±×·¥ÀÇ ÆÄÀϸíÀ» ÃʱâÈ ÆÄÀÏÀÇ EXEC_PATH ±¸¼º ¸í·É¹®¿¡ ÀÇÇØ Á¤ÇØÁø °æ·Î¸í¿¡ Ãß°¡ÇÕ´Ï´Ù. ÀÌ °á°ú ¾ò¾îÁø ¹®ÀÚ¿ÀÌ ½ÇÇàµÉ ¾ð¾î ȯ°æÀ¸·Î Àü¼ÛµË´Ï´Ù.
¾ð¾î ȯ°æÀÌ EXEC ºí·ÏÀ» ó¸®ÇÏ´Â µ¥ »ç¿ëÇÏ´Â ¹æ¹ýÀº ƯÁ¤ ¾ð¾î ȯ°æ¿¡ µû¶ó ´Ù¸¨´Ï´Ù. REXX, System ¹× Perl Net.Data Á¦°ø ¾ð¾î ȯ°æÀº EXEC ºí·ÏÀ» Áö¿øÇÕ´Ï´Ù.
Net.Data ¾ð¾î ±¸¹®°ú ÀÏÄ¡ÇÏ´Â ¹®ÀÚ°¡ ÇÔ¼ö ºí·ÏÀÇ ¾ð¾î ¸í·É¹® ¼½¼Ç¿¡¼ ±¸¹®»óÀ¸·Î À¯È¿ÇÑ ³»Æ÷ ÇÁ·Î±×·¥ ÄÚµå(¿¹: REXX ¶Ç´Â Perl)ÀÇ ÀϺηΠ»ç¿ëµÇ´Â °æ¿ì, À̵éÀº Net.Data ¾ð¾î ±¸¹®À¸·Î À߸ø ÇØ¼®µÇ¾î ¸ÅÅ©·Î¿¡¼ ¿À·ù³ª ¿¹»óÄ¡ ¸øÇÑ °á°ú¸¦ ÃÊ·¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿¹¸¦ µé¾î, Perl ÇÔ¼ö´Â COMMENT ºí·Ï ºÐ¸®¹®ÀÚ %{¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸ÅÅ©·Î°¡ ¼öÇàµÇ´Â °æ¿ì, %{ ¹®ÀÚ´Â COMMENT ºí·ÏÀÇ ½ÃÀÛÀ¸·Î ÇØ¼®µË´Ï´Ù. ÀÌ °æ¿ì Net.Data´Â COMMENT ºí·ÏÀÇ ³¡À» ã°Ô µÇ°í, ÇÔ¼ö ºí·ÏÀÇ ³¡À» ã°Ô µÇ¸é COMMENT ºí·ÏÀÇ ³¡À» ãÀº °ÍÀ¸·Î »ý°¢ÇÕ´Ï´Ù. Net.Data´Â ´Ù½Ã ÇÔ¼ö ºí·ÏÀÇ ³¡À» ã°Ô µÇ°í ÇÔ¼ö ºí·ÏÀÇ ³¡À» ãÀ» ¼ö ¾ø´Â °æ¿ì ¿À·ù¸¦ ¹ß»ý½Ãŵ´Ï´Ù.
³»Æ÷µÈ ÇÁ·Î±×·¥ Äڵ带 Net.Data¿¡¼ Ư¼ö ¹®ÀÚ·Î ÇØ¼®ÇÏÁö ¾Ê°Ô ÇÏ¸é¼ Net.Data Ư¼ö ¹®ÀÚ¸¦ ³»Æ÷µÈ ÇÁ·Î±×·¥ ÄÚµåÀÇ ÀϺηΠ»ç¿ëÇÏ·Á¸é ´ÙÀ½ ¹æ¹ý Áß Çϳª¸¦ »ç¿ëÇϽʽÿÀ.
¿¹¸¦ µé¾î, ´ÙÀ½°ú °°Àº Perl ÇÔ¼ö´Â COMMENT ºí·Ï ºÐ¸®¹®ÀÚ, %{¸¦ ³ªÅ¸³»´Â ¹®ÀÚ¸¦ Perl ¾ð¾î ¸í·É¹®ÀÇ ÀϺηΠÆ÷ÇÔÇÕ´Ï´Ù.
%function(DTW_PERL) func() {
...
for $num_words (sort bynumber keys %{ $Rtitles{$num} }) {
&make_links($Rtitles{$num}{$num_words});
}
...
%}
Net.Data°¡ %{ ¹®ÀÚ¸¦ Net.Data COMMENT ºí·Ï ºÐ¸®¹®ÀÚ°¡ ¾Æ´Ñ Perl ¼Ò½º ÄÚµå·Î ÇØ¼®ÇÏ°Ô ÇÏ·Á¸é ´ÙÀ½ Áß ÇÑ ¹æ¹ýÀ¸·Î ÇÔ¼ö¸¦ ´Ù½Ã ¾²½Ê½Ã¿À.
%function(DTW_PERL) func() {
%EXEC{ func.prl %}
%}
%define percent_openbrace = "%{"
%function(DTW_PERL) func() {
...
for $num_words (sort bynumber keys $(percent_openbrace) $Rtitles{$num} }) {
&make_links($Rtitles{$num}{$num_words});
}
...
%}
±¸¹®
>>-%FUNCTION--(--lang_env--)--function_name--| ¸Å°³º¯¼ö Àü´Þ ½ºÆå |-->
.-;--------------------------------------.
>----+-| ¸®ÅÏ ½ºÆå |--{--| ÇÔ¼ö ³»¿ë |----%}--+----------------><
¸Å°³º¯¼ö Àü´Þ ½ºÆå
|---(--+---------------------------------------------+---)------|
| .-,-------------------------------------. |
| | (1) | |
| V .-IN-------. | |
'----+----------+---+-----------+---name---+--'
+-OUT------+ '-datatype--'
'-INOUT----'
¸®ÅÏ ½ºÆå
|---+----------------------+------------------------------------|
'-RETURNS--(--name--)--'
ÇÔ¼ö ³»¿ë
|---+-------------------------------+--------------------------->
| .--------------------------. |
| V | |
+----inline statement block---+-+
'-exec block--------------------'
>-----+-----------------------------------------------+---------|
| .---------------------. |
| V (2) | |
+----report block--------+---+----------------+-+
| '-message block--' |
| .--------------------------. |
| V | |
'-message block-----+--------------------+--+---'
| (2) |
'-report block-------'
ÁÖ:
°ª
¹®¸Æ
FUNCTION ºí·ÏÀº ´ÙÀ½ ÄÁÅØ½ºÆ®¿¡ µé¾î ÀÖ½À´Ï´Ù.
Á¦ÇÑ
DB2¿¡´Â ´ÙÀ½ÀÇ Á¦ÇÑ»çÇ×ÀÌ ÀÖ½À´Ï´Ù.
¿¹
´ÙÀ½ ¿¹Á¦´Â ¹ü¿ë ¿¹Á¦·Î½á ¸ðµç ¾ð¾î ȯ°æ¿¡ Àû¿ëµÇÁö´Â ¾Ê½À´Ï´Ù. ƯÁ¤ ¾ð¾î ȯ°æ¿¡¼ 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 ÇÔ¼ö È£ÃâÀÇ °ªÀº sÀÇ °ªÀÎ "long"À¸·Î ´ëüµË´Ï´Ù.
¿¹ 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)
%}
ÇÔ¼öÀÇ INOUT ¸Å°³º¯¼ö a ¹× b¿¡ ÇØ´çÇÏ´Â º¯¼ö w ¹× x. ÀÌ °ª°ú IN ¸Å°³º¯¼ö c¿¡ ÇØ´çÇÏ´Â yÀÇ °ªÀº HTML ¾ç½Ä ÀÔ·ÂÀ̳ª DEFINE ¸í·É¹®¿¡¼ ÀÌ¹Ì Á¤ÀÇÇß¾î¾ß ÇÕ´Ï´Ù. ¸Å°³º¯¼ö a¿Í b°¡ °ªÀ» ¸®ÅÏÇÏ¸é º¯¼ö a ¹× b¿¡ »õ·Î¿î °ªÀÌ ÁöÁ¤µË´Ï´Ù. OUT ¸Å°³º¯¼ö d°¡ °ªÀ» ¸®ÅÏÇÏ¸é º¯¼ö z°¡ Á¤Àǵ˴ϴÙ.
/* Sample REXX Program for Example 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 ÇÁ·Î±×·¥À¸·ÎºÎÅÍ REXX º¯¼ö a, b ¹× d°¡ °Ë»öµÇ°í, ÀÌÀÇ °ªÀÌ Net.Data º¯¼ö w, x ¹× z¿¡ ÁöÁ¤µË´Ï´Ù. my_rexx_pgm FUNCTION ºí·ÏÀÇ Á¤ÀÇ¿¡´Â RETURNS ÀýÀÌ »ç¿ëµÇÁö ¾ÊÀ¸¹Ç·Î, @my_rexx_pgm ÇÔ¼ö È£ÃâÀÇ °ªÀº ³Î(NULL) ¹®ÀÚ¿ ""ÀÌ µÇ°Å³ª(¸®ÅÏ Äڵ尡 0ÀÎ °æ¿ì), REXX ÇÁ·Î±×·¥ ¸®ÅÏ ÄÚµåÀÇ °ªÀÌ µË´Ï´Ù(¸®ÅÏ Äڵ尡 0ÀÌ ¾Æ´Ñ °æ¿ì).
¿¹ 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 ¾ð¾î ȯ°æÀ¸·Î Àü´ÞµÇ¸é, ¾ð¾î ȯ°æÀº named pipe¸¦ ÀÛ¼ºÇϰí ȯ°æ º¯¼ö DTWPIPE¸¦ ÆÄÀÌÇÁ À̸§À¸·Î ¼³Á¤ÇÕ´Ï´Ù.
±×·± ´ÙÀ½, ¿ÜºÎ ÇÁ·Î±×·¥ÀÌ C system() ÇÔ¼ö È£ÃâÀ» »ç¿ëÇÏ¿© È£ÃâµË´Ï´Ù. ¿ÜºÎ ÇÁ·Î±×·¥Àº ÆÄÀÌÇÁ¸¦ ¾²±â Àü¿ëÀ¸·Î ¿¾î Ç¥ÁØ ½ºÆ®¸² ÆÄÀÏÀÎ °Íó·³ ÆÄÀÌÇÁ¿¡ Ãâ·Â ¸Å°³º¯¼öÀÇ °ªÀ» ±â·ÏÇÕ´Ï´Ù. ¿ÜºÎ ÇÁ·Î±×·¥Àº STDOUT¿¡ ±â·ÏÇÏ¿© HTML Ãâ·ÂÀ» »ý¼ºÇÕ´Ï´Ù. ÀÌ ¿¹Á¦¿¡¼, ½Ã½ºÅÛ ³¯Â¥ ÇÁ·Î±×·¥ÀÇ Ãâ·ÂÀº FUNCTION ºí·ÏÀÇ RETURNS Àý¿¡¼ ½Äº°µÇ´Â º¯¼öÀÎ result¿¡ ÁöÁ¤µË´Ï´Ù. 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¿¡¼, System ¾ð¾î ȯ°æÀº Perl ÇÁ·Î±×·¥À» ÇØ¼®ÇÏ´Â ¹æ¹ýÀº ¾ËÁö ¸øÇÏÁö¸¸, ¿ÜºÎ ÇÁ·Î±×·¥À» È£ÃâÇÏ´Â ¹æ¹ýÀº ¾Ë°í ÀÖ½À´Ï´Ù. EXEC ºí·ÏÀº perl ÇÁ·Î±×·¥À» ¿ÜºÎ ÇÁ·Î±×·¥À¸·Î È£ÃâÇϵµ·Ï Áö½ÃÇÕ´Ï´Ù. ½ÇÁ¦ Perl ¾ð¾î ¸í·É¹®Àº ¿ÜºÎ Perl ÇÁ·Î±×·¥¿¡ ÀÇÇØ ÇØ¼®µË´Ï´Ù. ¿¹ 5¿¡´Â Perl ¾ð¾î ȯ°æÀÌ Perl ¾ð¾î ¸í·É¹®À» Á÷Á¢ ÇØ¼®ÇÒ ¼ö ÀÖÀ¸¹Ç·Î EXEC ºí·ÏÀÌ ¾ø½À´Ï´Ù.
¸ñÀû
FUNCTION ºí·Ï, MACRO_FUNCTION ºí·Ï ¶Ç´Â Àμö°¡ ÁöÁ¤µÈ ³»Àå ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù. ÇÔ¼ö°¡ ³»Àå ÇÔ¼ö°¡ ¾Æ´Ñ °æ¿ì, ÇÔ¼ö È£ÃâÀ» ÁöÁ¤Çϱâ Àü¿¡ À̸¦ Net.Data ¸ÅÅ©·Î¿¡ Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù.
±¸¹®
>>-@function_name---(------------------------------------------->
>-----+-----------------------------------------------+--)-----><
| .-,----------------------------------------. |
| V | |
'----+-variable_name-----------------------+--+-'
+-variable reference------------------+
+-function call-----------------------+
| .-------------------------. |
| V | |
'-"----+-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)
%}
¿¹ 4: INOUT ¸Å°³º¯¼öÀÇ »ç¿ëÀ» ¼³¸íÇÏ´Â ¸ÅÅ©·Î.
%DEFINE a = "initial value of a"
%FUNCTION(DTW_REXX) func1(INOUT x) {
Say 'value at start of function:<br>
Say 'x =' x
Say '
<p>
'
x = "new value of a"
%REPORT {
<p>
value at start of report block:<br>
x = $(x)<br>
@dtw_assign(x, "newest value of a")
value at end of report block:<br>
x = $(x)<br>
%}
%}
%HTML(report) {
initial values:<br>
a = $(a)<br>
@func1(a)
value after function call:<br>
a = $(a)<br>
%}
°á°ú Ãâ·Â:
initial values: a = initial value of a value at start of function: x = initial value of a value at start of report block: x = new value of a value at end of report block: x = newest value of a value after function call: a = newest value of a
¸ñÀû
À¥ ÆäÀÌÁö Ç¥½Ã ¹æ¹ýÀ» Á¤ÀÇÇÕ´Ï´Ù. ½ÇÇàÇÒ HTML ºí·ÏÀÇ À̸§Àº Net.Data È£Ãâ½Ã¿¡ URL¿¡ ÁöÁ¤µË´Ï´Ù. HTML ºí·Ï¿¡´Â ´ëºÎºÐÀÇ Net.Data ¸ÅÅ©·Î ¾ð¾î ¸í·É¹®°ú HTML ¹× Javascript¿Í °°Àº À¯È¿ÇÑ Ç¥½Ã ¸í·É¹®ÀÌ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù.
±¸¹®
>>-%HTML----(--name--)------------------------------------------>
.-----------------------------.
V |
>-----{-----+-----------------------+--+---%}------------------><
+-exec_sql statement----+
+-variable reference----+
+-if block--------------+
+-function call---------+
+-HTML statement--------+
+-include statement-----+
+-include_url statement-+
'-while block-----------'
°ª
¹®¸Æ
HTML ºí·ÏÀº ´ÙÀ½ ÄÁÅØ½ºÆ®¿¡ µé¾î ÀÖ½À´Ï´Ù.
Á¦ÇÑ
HTML ºí·Ï¿¡´Â ´ÙÀ½ÀÇ ¿ä¼Ò°¡ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù.
¿¹
¿¹ 1: ¸Ó¸®¸» ¹× ²¿¸®¸»À» À§ÇÑ include ÆÄÀÏÀÌ ÀÖ´Â 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"
%}
¿¹ 2: À̸§¿¡ ¸¶Ä§Ç¥°¡ Æ÷ÇÔµÈ HTML ºí·Ï
%HTML(my.report){
%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 ºí·ÏÀº Çϳª ÀÌ»óÀÇ Á¶°ÇÀ» Å×½ºÆ®Çϰí Á¶°Ç Å×½ºÆ®ÀÇ °á°ú¿¡ µû¶ó ¸í·É¹® ºí·ÏÀ» ¼öÇàÇϵµ·Ï ÇÕ´Ï´Ù. ¶Ç´Ù¸¥ IF ºí·Ï³»¿¡ IF ºí·ÏÀ» Áßø½Ãų ¼ö ÀÖÀ» »Ó ¾Æ´Ï¶ó Net.Data ¸ÅÅ©·ÎÀÇ ¼±¾ðºÎ¿¡ ÀÖ´Â IF ºí·Ï, HTML ºí·Ï, MACRO_FUNCTION ºí·Ï, REPORT ºí·Ï, WHILE ºí·Ï ¹× ROW ºí·ÏÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
Á¶°Ç ¸ñ·ÏÀÇ ¹®ÀÚ¿ °ªÀº À̰ÍÀÌ Á¤¼ö¸¦ ³ªÅ¸³»´Â ¹®ÀÚ¿ÀÌ°í ¼±Çà ¶Ç´Â ÈÄ¹Ì °ø¹éÀÌ ¾ø´Â °æ¿ì ºñ±³¸¦ À§ÇØ ¼ýÀÚ·Î Ãë±ÞµË´Ï´Ù. ¿©±â¿¡´Â ÇϳªÀÇ Ç÷¯½º(+) ¶Ç´Â ¸¶À̳ʽº(-) ±âÈ£°¡ ¼±ÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
Á¦ÇÑ»çÇ×: Net.Data´Â À¯µ¿ ¼Ò¼öÁ¡ ¼ö¿Í °°ÀÌ Á¤¼ö°¡ ¾Æ´Ñ ¼ýÀÚÀÇ ¼ýÀÚ ºñ±³´Â Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.
ÁßøµÈ IF ºí·Ï: IF ºí·Ï ±¸¹®ÀÇ ±ÔÄ¢Àº ¸ÅÅ©·Î¿¡¼ ºí·ÏÀÇ À§Ä¡¿¡ ÀÇÇØ °áÁ¤µË´Ï´Ù. IF ºí·ÏÀÌ ¼±¾ðºÎ¿¡¼ ´Ù¸¥ ºí·ÏÀÇ ¿ÜºÎ¿¡ ÀÖ´Â IF ºí·Ï³»¿¡ ÁßøµÇ¾î ÀÖ´Â °æ¿ì, ¿ÜºÎ ºí·ÏÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Â ¸ðµç ¿ä¼Ò¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. IF ºí·ÏÀÌ IF ºí·Ï¿¡ ÀÖ´Â ´Ù¸¥ ºí·Ï³»¿¡ ÁßøµÇ¾î ÀÖ´Â °æ¿ì, ³»ºÎ¿¡ ÀÖ´Â ºí·ÏÀÇ ±¸¹® ±ÔÄ¢À» µû¸¨´Ï´Ù.
´ÙÀ½ ¿¹¿¡¼ ÁßøµÈ IF ºí·ÏÀº HTML ºí·Ï ³»ºÎ¿¡ ÀÖÀ» ¶§ »ç¿ëµÈ ±ÔÄ¢À» µû¶ó¾ß ÇÕ´Ï´Ù.
%IF block
...
%HTML block
...
%IF block
ÃÖ´ë 1024°³ÀÇ IF ºí·ÏÀ» Áßø½Ãų ¼ö ÀÖ½À´Ï´Ù.
±¸¹®
>>-%IF--| Á¶°Ç ¸ñ·Ï |------------------------------------------->
>-----| statement_block |--| else_if spec |--%ENDIF------------><
Á¶°Ç ¸ñ·Ï
|---(--+-(--condition list--)----------------+---)--------------|
+-condition list--&&--condition list--+
+-condition list--||--condition list--+
+-!--condition list-------------------+
+-| Á¶°Ç |----------------------------+
'-| ¿ë¾î |----------------------------'
statement_block
.---------------------------------.
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---------------'
Á¶°Ç
|---term--+-<--+---term-----------------------------------------|
+->--+
+-<=-+
+->=-+
+-!=-+
'-==-'
¿ë¾î
|---+-variable_name-----------------------+---------------------|
+-variable reference------------------+
+-function call-----------------------+
| .-------------------------. |
| V | |
'-"----+-string-------------+--+---"--'
+-variable reference-+
'-function call------'
else_if spec
|---+---------------------------------------------------------------+->
| .----------------------------------------------------. |
| V | |
'--+----%ELIF--(--condition_list--)--| statement_block |---+-+--'
'-%ELSE--| statement_block |------------------------------'
>---------------------------------------------------------------|
ÁÖ:
°ª
ÂüÀÌ ¾Æ´Ñ Á¶°ÇÀÌ ÀÖ´Â °æ¿ì, ÀϹÝÀûÀÎ ¹®ÀÚ¿ ºñ±³°¡ ¼öÇàµË´Ï´Ù.
¹®¸Æ
IF ºí·ÏÀº ´ÙÀ½ ÄÁÅØ½ºÆ®¿¡ µé¾î ÀÖ½À´Ï´Ù.
Á¦ÇÑ
IF ºí·ÏÀÌ Net.Data ¸ÅÅ©·ÎÀÇ ¼±¾ð ºÎºÐ¿¡ ÀÖ´Â ´Ù¸¥ ºí·ÏÀÇ ¿ÜºÎ¿¡ À§Ä¡ÇÒ °æ¿ì, ´ÙÀ½ÀÇ ¿ä¼Ò¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.
IF ºí·ÏÀÌ Net.Data ¸ÅÅ©·ÎÀÇ HTML ºí·Ï, MACRO_FUNCTION ºí·Ï, REPORT ºí·Ï, ROW ºí·Ï ¶Ç´Â WHILE ºí·Ï¿¡ À§Ä¡ÇÒ °æ¿ì, ÀÌ IF ºí·Ï¿¡´Â ´ÙÀ½ÀÇ ¿ä¼Ò°¡ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù.
ÃÖ´ë 1024°³ÀÇ IF ºí·ÏÀ» Áßø½Ãų ¼ö ÀÖ½À´Ï´Ù.
¿¹
¿¹ 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 ¸í·É¹®¿¡ ÁöÁ¤µÈ µð·ºÅ丮¿¡¼ Include ÆÄÀÏÀ» ã½À´Ï´Ù.
´ëºÎºÐÀÇ °í±Þ ¾ð¾î¿¡¼¿Í µ¿ÀÏÇÑ ¹æ¹ýÀ¸·Î Include ÆÄÀÏÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Include ÆÄÀÏÀº °øÅë ¸Ó¸®¸»°ú ²¿¸®¸»À» »ðÀÔÇϰí, °øÅë º¯¼ö ¼¼Æ®¸¦ Á¤ÀÇÇϰųª FUNCTION ºí·Ï Á¤ÀÇÀÇ °øÅë ¼ºê·çƾ ¶óÀ̺귯¸®¸¦ Net.Data ¸ÅÅ©·Î¿¡ ÅëÇÕ½Ãų ¼ö ÀÖ½À´Ï´Ù.
Net.Data´Â ¸ÅÅ©·Î 󸮽ÿ¡¸¸ INCLUDE ¸í·É¹®À» ½ÇÇàÇÏ°í Æ÷ÇÔµÈ ÆÄÀÏÀÇ ³»¿ëÀ» ¸ÅÅ©·ÎÀÇ INCLUDE ¸í·É¹® À§Ä¡¿¡ »ðÀÔÇÕ´Ï´Ù. Æ÷ÇÔµÈ ÆÄÀÏÀÇ À̸§¿¡ ÀÖ´Â º¯¼ö ÂüÁ¶´Â ÀÌ ÆÄÀÏÀÇ ³»¿ëÀÌ ½ÇÇàµÉ ¿¹Á¤ÀÎ °æ¿ì¸¸ ¾Æ´Ï¸é INCLUDE¹®ÀÌ Ã³À½ ½ÇÇàµÉ ¶§ ÇØ¼®µË´Ï´Ù.
INCLUDE ¸í·É¹®ÀÌ ROW ¶Ç´Â WHILE ºí·Ï¿¡ ÀÖ´Â °æ¿ì, Net.Data´Â INCLUDE ¸í·É¹®À» ¹Ýº¹ÀûÀ¸·Î ½ÇÇàÇÏÁö ¾Ê½À´Ï´Ù. Net.Data´Â ROW ¶Ç´Â WHILE ºí·ÏÀ» óÀ½ ½ÇÇàÇÒ ¶§¸¸ INCLUDE ¸í·É¹®À» ½ÇÇàÇÏ°í Æ÷ÇÔµÈ ÆÄÀÏÀÇ ³»¿ëÀ» ºí·Ï¿¡ ÅëÇÕÇÑ ´ÙÀ½ Æ÷ÇÔµÈ ÆÄÀÏÀÇ ³»¿ëÀ» »ç¿ëÇÏ¿© ROW ¶Ç´Â WHILE ºí·ÏÀ» ¹Ýº¹ÀûÀ¸·Î ½ÇÇàÇÕ´Ï´Ù.
±ÇÇÑ ºÎ¿© °ü·Ã»çÇ×: Net.Data¸¦ ½ÇÇàÇÏ´Â »ç¿ëÀÚ ID´Â 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 ¸í·É¹®¿¡´Â ´ÙÀ½ÀÇ ¿ä¼Ò°¡ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù.
¹®ÀÚ¿¿¡´Â ÇÔ¼ö È£ÃâÀ» »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
ÃÖ´ë 10°³ÀÇ 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 ¸í·É¹®À» »ç¿ëÇϸé ÀÀ¿ëÇÁ·Î±×·¥ »ç¿ëÀÚ°¡ Á¦Ãâ ¹öưÀ» ¼±ÅÃÇÏÁö ¾Ê¾Æµµ ´Ù¸¥ ¸ÅÅ©·Î¿¡¼ ¸ÅÅ©·Î¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.
Net.Data´Â ¸ÅÅ©·Î 󸮽ÿ¡¸¸ INCLUDE_URL ¸í·É¹®À» ½ÇÇàÇÏ°í Æ÷ÇÔµÈ ÆÄÀÏÀÇ ³»¿ëÀ» ¸ÅÅ©·ÎÀÇ INCLUDE_URL ¸í·É¹® À§Ä¡¿¡ »ðÀÔÇÕ´Ï´Ù. Æ÷ÇÔµÈ ÆÄÀÏÀÇ À̸§¿¡ ÀÖ´Â º¯¼ö ÂüÁ¶´Â ÀÌ ÆÄÀÏÀÇ ³»¿ëÀÌ ½ÇÇàµÉ ¿¹Á¤ÀÎ °æ¿ì¸¸ ¾Æ´Ï¸é INCLUDE_URL ¸í·É¹®ÀÌ Ã³À½ ½ÇÇàµÉ ¶§ ÇØ¼®µË´Ï´Ù.
INCLUDE_URL ¸í·É¹®ÀÌ ROW ¶Ç´Â WHILE ºí·Ï¿¡ ÀÖ´Â °æ¿ì, Net.Data´Â INCLUDE_URL ¸í·É¹®À» ¹Ýº¹ÀûÀ¸·Î ½ÇÇàÇÏÁö ¾Ê½À´Ï´Ù. Net.Data´Â ROW ¶Ç´Â WHILE ºí·ÏÀ» óÀ½ ½ÇÇàÇÒ ¶§¸¸ INCLUDE_URL ¸í·É¹®À» ½ÇÇàÇÏ°í Æ÷ÇÔµÈ ÆÄÀÏÀÇ ³»¿ëÀ» ºí·Ï¿¡ ÅëÇÕÇÑ ´ÙÀ½ Æ÷ÇÔµÈ ÆÄÀÏÀÇ ³»¿ëÀ» »ç¿ëÇÏ¿© ROW ¶Ç´Â WHILE ºí·ÏÀ» ¹Ýº¹ÀûÀ¸·Î ½ÇÇàÇÕ´Ï´Ù.
±¸¹®
.-------------------------.
V |
>>-%INCLUDE_URL---"------+-string-------------+--+--"----------><
'-variable reference-'
°ª
¹®¸Æ
INCLUDE_URL ¸í·É¹®Àº ´ÙÀ½ÀÇ ÄÁÅØ½ºÆ®¿¡¼ ãÀ» ¼ö ÀÖ½À´Ï´Ù.
Á¦ÇÑ
INCLUDE_URL ¸í·É¹®¿¡´Â ´ÙÀ½ÀÇ ¿ä¼Ò°¡ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù.
OS/390¿¡¼ INCLUDE_URL ÆÄÀÏÀº ÃÖ´ë 256KBÀÏ ¼ö ÀÖ½À´Ï´Ù. ±âŸ ¿î¿µ üÁ¦¿¡´Â Á¦ÇÑÀÌ ¾ø½À´Ï´Ù.
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 °æ·Î¸¦ °»½ÅÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. stringÀÌ ½½·¡½¬·Î ½ÃÀÛµÇÁö ¾Ê´Â °æ¿ì, 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
conditions="cond1='Sao Paolo'"
conditions="cond2='Seattle'"
conditions="cond3='Shanghai'"
whereClause=conditions ? "WHERE $(conditions)" : ""
%}
¸ñÀû
Net.Data ¸ÅÅ©·Î·ÎºÎÅÍ È£ÃâÇÒ ¼ö ÀÖ´Â ¼ºê·çƾÀ» Á¤ÀÇÇÕ´Ï´Ù. MACRO_FUNCTION ºí·ÏÀÇ ½ÇÇà °¡´É ¸í·É¹®Àº Net.Data ¸ÅÅ©·Î ¾ð¾î ¼Ò½º ¸í·É¹®À̾î¾ß ÇÕ´Ï´Ù.
±¸¹®
>>-%MACRO_FUNCTION--function_name--| ¸Å°³º¯¼ö Àü´Þ ½ºÆå |------->
(4)
>-----| ¸®ÅÏ ½ºÆå |-------{--| ÇÔ¼ö ³»¿ë |----%}---------------->
.--------------------------.
V |
>--------+--------------------+--+--%}-------------------------><
| (3) |
'-report block-------'
¸Å°³º¯¼ö Àü´Þ ½ºÆå
|---(--+-----------------------------+---)----------------------|
| .-,---------------------. |
| | (1) | |
| V .-IN-------. | |
'----+----------+---name---+--'
+-OUT------+
'-INOUT----'
¸®ÅÏ ½ºÆå
(4)
|----------+----------------------+-----------------------------|
'-RETURNS--(--name--)--'
ÇÔ¼ö ³»¿ë
.----------------------------------.
V |
|------+----------------------------+--+------------------------|
+-exec_sql statement---------+
+-variable reference---------+
+-if block-------------------+
+-function call--------------+
+-HTML statement-------------+
+-include statement----------+
| (2) |
+-include_url statement------+
'-while block----------------'
ÁÖ:
°ª
¹®¸Æ
MACRO_FUNCTION ºí·ÏÀº ´ÙÀ½ÀÇ ÄÁÅØ½ºÆ®¿¡¼ ãÀ» ¼ö ÀÖ½À´Ï´Ù.
Á¦ÇÑ
MACRO_FUNCTION ºí·ÏÀº ´ÙÀ½°ú °°Àº ¿ä¼Ò¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.
OS/400¿¡´Â Áö¿øµÇÁö ¾ÊÀ½
¿¹
¿¹ 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 |
>--------+-----------------------------------------------------------------------------+--+>
'--+-| ¸®ÅÏ ÄÚµå ½ºÆå |--+--:---| ¸Þ¼¼Áö ÅØ½ºÆ® ½ºÆå |----+----------------+--'
'-| SQLSTATE |--------' '-| Á¶Ä¡ ½ºÆå |--'
>----%--}------------------------------------------------------><
¸®ÅÏ ÄÚµå ½ºÆå
|---+-DEFAULT---------------+-----------------------------------|
+-+DEFAULT--------------+
+- -DEFAULT-------------+
+-+----+---msg_code-----+
| +- --+ |
| '-+--' |
+-include statement-----+
'-include_url statement-'
SQLSTATE
|---SQLSTATE--:------state_id-----------------------------------|
¸Þ¼¼Áö ÅØ½ºÆ® ½ºÆå
.--------------------------.
V |
|----+-"-----+--------------------+--+---"---+------------------|
| +-string-------------+ |
| +-variable reference-+ |
| +-function call------+ |
| '-(new_line)---------' |
| .--------------------------. |
| V | |
+-{-----+--------------------+--+---%}--+
| +-string-------------+ |
| +-variable reference-+ |
| '-function call------' |
+-include statement---------------------+
'-include_url statement-----------------'
Á¶Ä¡ ½ºÆå
.-EXIT-----.
|---+-:--+----------+--------+----------------------------------|
| '-CONTINUE-' |
+-include statement------+
'-include_url statement--'
°ª
¹®¸Æ
MESSAGE ºí·ÏÀº ´ÙÀ½ÀÇ ÄÁÅØ½ºÆ®¿¡¼ ãÀ» ¼ö ÀÖ½À´Ï´Ù.
Á¦ÇÑ
MESSAGE ºí·Ï¿¡´Â ´ÙÀ½ÀÇ ¿ä¼Ò°¡ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù.
OS/390, OS/2, Windows NT ¹× UNIX ¿î¿µ üÁ¦ÀÇ °æ¿ì: SQL ÇÔ¼ö¸¦ SQL ÇÔ¼ö ³»¿¡¼ È£ÃâÇÒ ¼ö ¾ø½À´Ï´Ù.
¿¹
¿¹ 1: ±¹Áö MESSAGE ºí·Ï
%{ local message block inside a FUNCTION block %}
%FUNCTION(DTW_REXX) my_function() {
%EXEC { my_command.cmd %}
%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>"%} : exit
%}
¿¹ 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
links 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
links 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, OS/2, Windows NT ¹× UNIX ¿î¿µ üÁ¦ÀÇ °æ¿ì: SQL ÇÔ¼ö¸¦ SQL ÇÔ¼ö ³»¿¡¼ È£ÃâÇÒ ¼ö ¾ø½À´Ï´Ù.
OS/390ÀÇ °æ¿ì: REPORT ºí·ÏÀº MACRO_FUNCTION ºí·Ï¿¡¼ Çã¿ëµÇÁö ¾Ê½À´Ï´Ù.
¿¹
¿¹ 1: À̸§ ¹× À§Ä¡ÀÇ ¸ñ·ÏÀ» ³ªÅ¸³»´Â µÎ Ä÷³À¸·Î ±¸¼ºµÈ HTML Å×À̺í
%FUNCTION(DTW_SQL) mytable() {
%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 statements-------+
+-include statement-----+
+-include_url statement-+
'-while block-----------'
°ª
¹®¸Æ
ROW ºí·ÏÀº ´ÙÀ½ÀÇ ÄÁÅØ½ºÆ®¿¡¼ ãÀ» ¼ö ÀÖ½À´Ï´Ù.
Á¦ÇÑ
ROW ºí·Ï¿¡´Â ´ÙÀ½ÀÇ ¿ä¼Ò°¡ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù.
OS/390, OS/2, Windows NT ¹× UNIX ¿î¿µ üÁ¦ÀÇ °æ¿ì: SQL ÇÔ¼ö¸¦ SQL ÇÔ¼ö ³»¿¡¼ È£ÃâÇÒ ¼ö ¾ø½À´Ï´Ù.
¿¹
¿¹ 1: À̸§ ¹× À§Ä¡ÀÇ ¸ñ·ÏÀ» ³ªÅ¸³»´Â µÎ Ä÷³À¸·Î ±¸¼ºµÈ 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 º¯¼ö¸¦ ÂüÁ¶ÇÒ ¶§, Net.Data´Â Å×À̺íÀÇ ³»¿ëÀ» ÀÏ¹Ý ¹®ÀÚ Å×À̺í·Î, DTW_HTML_TABLE º¯¼ö°¡ YES·Î ¼³Á¤µÈ °æ¿ì HTML ÆÄÀϷΠǥ½ÃÇÕ´Ï´Ù.
±¸¹®
>>-%TABLE--| »óÇÑ |--------------------------------------------><
»óÇÑ
|---+--------------------+--------------------------------------|
'-(--+-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)
¸ñÀû
Á¶°ÇºÎ ¹®ÀÚ¿ 󸮿¡ ±âÃÊÇÏ¿© ·çÇÎ ±¸¹®À» Á¦°øÇÕ´Ï´Ù. WHILE ºí·ÏÀº HTML ºí·Ï, REPORT ºí·Ï, ROW ºí·Ï, IF ºí·Ï ¹× MACRO_FUNCTION ºí·Ï¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Á¶°Ç ¸ñ·ÏÀÇ ¹®ÀÚ¿ °ªÀº À̰ÍÀÌ Á¤¼ö¸¦ ³ªÅ¸³»´Â ¹®ÀÚ¿ÀÌ°í ¼±Çà ¶Ç´Â ÈÄ¹Ì °ø¹éÀÌ ¾ø´Â °æ¿ì ºñ±³Çϱâ À§ÇØ ¼ýÀÚ·Î Ãë±ÞµË´Ï´Ù. ¿©±â¿¡´Â ÇϳªÀÇ Ç÷¯½º(+) ¶Ç´Â ¸¶À̳ʽº(-) ±âÈ£°¡ ¼±ÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
±¸¹®
.-----------------------------.
V |
>>-%WHILE--| Á¶°Ç ¸ñ·Ï |---{-------+-----------------------+--+->
+-exec_sql statement----+
+-function call---------+
+-HTML statement--------+
+-if block--------------+
+-include statement-----+
+-include_url statement-+
+-while block-----------+
+-variable reference----+
'-string----------------'
>----%}--------------------------------------------------------><
Á¶°Ç ¸ñ·Ï
|---(--+-(--condition list--)----------------+---)--------------|
+-condition list--&&--condition list--+
+-condition list--||--condition list--+
+-!--condition list-------------------+
+-| Á¶°Ç |----------------------------+
'-| ¿ë¾î |----------------------------'
Á¶°Ç
|---term--+-<--+---term-----------------------------------------|
+->--+
+-<=-+
+->=-+
+-!=-+
'-==-'
¿ë¾î
|---+-variable_name-----------------------+---------------------|
+-variable reference------------------+
+-function call-----------------------+
| .-------------------------. |
| V | |
'-"----+-string-------------+--+---"--'
+-variable reference-+
'-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)
%}
%}