14 DCLÀ» »ç¿ëÇÑ °í±Þ ÇÁ·Î±×·¡¹Ö
°í±Þ DCL ÇÁ·Î±×·¡¹Ö¿¡´Â º¹ÀâÇÑ ¸í·É ÇÁ·Î½ÃÀú¿Í PIPE ¸í·ÉÀÌ »ç¿ëµË´Ï´Ù.
13ÀåÀ» Àаí DCL ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ±âº» Áö½ÄÀ» ¾òÀº ÈÄ °í±Þ ÇÁ·Î±×·¡¹Ö ¹æ¹ýÀ» ¹è¿ì·Á¸é ÀÌ ÀåÀ» Àоî¾ß ÇÕ´Ï´Ù.
º¹ÀâÇÑ ¸í·É ÇÁ·Î½ÃÀú´Â ÇÁ·Î±×·¥°ú À¯»çÇÑ ±â´ÉÀ» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸í·É ÇÁ·Î½ÃÀú¿¡¼ °¡º¯ ÀÔ·Â »ç¿ë, ƯÁ¤ Á¶°ÇÀÌ ÂüÀÎ °æ¿ì ÇÁ·Î½ÃÀúÀÇ ¼½¼Ç ½ÇÇà, ¼ºê ·çƾ ½ÇÇà ¶Ç´Â ´Ù¸¥ ¸í·É ÇÁ·Î½ÃÀú È£Ãâ µîÀÌ °¡´ÉÇÕ´Ï´Ù.
¶ÇÇÑ, DCL ¸í·ÉÀÎ PIPE ¸í·ÉÀ» »ç¿ëÇÏ¿© ÇÁ·Î±×·¥°ú °°Àº ±â´ÉÀ» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, µ¿ÀÏÇÑ DCL ¸í·ÉÇà¿¡¼ PIPE ¸í·ÉÀ» »ç¿ëÇÏ¿© ´ÙÀ½ Áß ÇÑ °¡Áö ÀÌ»óÀÇ ÀÛ¾÷À» ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿©·¯ ¸í·É ¹× Á¶°Ç ¸í·É ½ÇÇà
ÀÌ Àå¿¡¼´Â ´ÙÀ½ »çÇ׿¡ ´ëÇÏ¿© ¼³¸íÇÕ´Ï´Ù.
¸Å°³ º¯¼ö¸¦ »ç¿ëÇÏ¿© ÁßøµÈ ¸í·É ÇÁ·Î½ÃÀú¿¡ µ¥ÀÌÅÍ Àü´Þ
ÆÄÀÏ ÀÐ±â ¹× ¾²±â(ÆÄÀÏ I/O)
¸í·É ÇÁ·Î½ÃÀú¿¡´Â »ç¿ëÀÚ°¡ Á¦°øÇÏ´Â µ¥ÀÌÅÍ°¡ ÇÊ¿äÇÑ °æ¿ì°¡ ¸¹½À´Ï´Ù. ÀÌ·¯ÇÑ µ¥ÀÌÅÍ´Â
13Àå¿¡¼ ¼³¸íÇÑ °Íó·³ ´ëÈÇüÀ¸·Î ÀÔ·ÂÇϰųª ºñ´ëÈÇüÀ¸·Î Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Àå¿¡¼´Â ºñ´ëÈÇü ÀÔ·Â ¹æ¹ý°ú
13Àå¿¡¼ ¼³¸íÇÏÁö ¾ÊÀº ´Ù¸¥ ´ëÈÇü ÀÔ·Â ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.
ƯÁ¤ ¸í·É ÇÁ·Î½ÃÀú°¡ ½ÇÇàµÉ ¶§¸¶´Ù µ¿ÀÏÇÑ µ¥ÀÌÅ͸¦ »ç¿ëÇÏ·Á¸é µ¥ÀÌÅÍ°¡ ÇÊ¿äÇÑ ¸í·É µÚ¿¡ ¿À´Â µ¥ÀÌÅÍ ÇàÀÇ ¸í·É ÇÁ·Î½ÃÀú¿¡ µ¥ÀÌÅ͸¦ Æ÷ÇÔ½ÃÅ°½Ê½Ã¿À.
´ÙÀ½ ¸í·É ÇÁ·Î½ÃÀú´Â CENSUS.EXE¶ó´Â ¸í·É ÇÁ·Î½ÃÀú¸¦ ½ÇÇàÇÕ´Ï´Ù. CENSUS.EXE´Â ¸í·É ÇÁ·Î½ÃÀú°¡ ½ÇÇàµÉ ¶§¸¶´Ù 1993, 1994, 1995ÀÇ µ¥ÀÌÅ͸¦ ÀнÀ´Ï´Ù.
$ ! CENSUS.COM
$ !
$ RUN CENSUS
1993
1994
1995
$ EXIT
¸í·É ÇÁ·Î½ÃÀú¿¡ µ¥ÀÌÅÍ Æ÷ÇÔ ½Ã Á¦ÇÑ »çÇ×
µ¥ÀÌÅÍ ÇàÀÇ ÅؽºÆ®°¡ ¸í·É ÇÁ·Î½ÃÀú¿¡ Á÷Á¢ Àü´ÞµÇ¹Ç·Î ´ÙÀ½°ú °°ÀÌ ¹ø¿ªµÇ¾î¾ß ÇÒ µ¥ÀÌÅʹ ó¸®µÇÁö ¾Ê½À´Ï´Ù.
¸í·É ÇÁ·Î½ÃÀú¸¦ À§ÇÑ ±× ¹ÛÀÇ µ¥ÀÌÅÍ ÀÔ·Â ¹æ¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù.
¸Å°³ º¯¼ö¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅÍ Àü´Þ
¸Å°³ º¯¼ö¸¦ »ç¿ëÇÏ¿© ÀÏ°ý ó¸® ÀÛ¾÷¿¡ µ¥ÀÌÅÍ Àü´Þ
¸Å°³ º¯¼ö¸¦ »ç¿ëÇÏ¿© ÁßøµÈ ¸í·É ÇÁ·Î½ÃÀú¿¡ µ¥ÀÌÅÍ Àü´Þ
INQUIRE ¹× READ ¸í·ÉÀ» »ç¿ëÇÏ¿© µ¥ÀÌÅÍ ÇÁ·ÒÇÁÆ® Ç¥½Ã
SYS$INPUT ³í¸® À̸§À» »ç¿ëÇÏ¿© µ¥ÀÌÅÍ ÀÔ·Â
¸Å°³ º¯¼ö¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅÍ Àü´Þ
µ¥ÀÌÅ͸¦ ¸Å°³ º¯¼ö·Î¼ ¸í·É ÇÁ·Î½ÃÀú¿¡ Àü´ÞÇÒ ¶§´Â ´ÙÀ½ ÁöħÀ» µû¸£½Ê½Ã¿À.
¸í·É ÇÁ·Î½ÃÀúÀÇ ÆÄÀÏ ÁöÁ¤ µÚ¿¡ ¸Å°³ º¯¼ö¸¦ ³ÖÀ¸½Ê½Ã¿À.
ÇÑ ¸í·É ÇÁ·Î½ÃÀú¿¡ ÃÖ´ë 8°³ÀÇ ¸Å°³ º¯¼ö±îÁö Àü´ÞÇÒ ¼ö ÀÖ½À´Ï´Ù.
8°³ ÀÌÇÏÀÇ ¸Å°³ º¯¼ö¸¦ Àü´ÞÇÒ °æ¿ì¿¡´Â null °ª¿¡ º°µµÀÇ ±âÈ£°¡ ÇÒ´çµË´Ï´Ù.
null °ªÀº ¹®ÀÚ°¡ ¾ø´Â ¹®ÀÚ¿À̸ç ÀÎ¿ë ºÎÈ£(
¡±)·Î Ç¥½ÃµË´Ï´Ù.
°¢ ¸Å°³ º¯¼ö´Â Çϳª ÀÌ»óÀÇ °ø¹éÀ̳ª ÅÇÀ¸·Î ±¸ºÐÇϽʽÿÀ.
¸í·É ÇÁ·Î½ÃÀú¿¡ Àü´ÞµÈ ¸Å°³ º¯¼ö´Â ·ÎÄà ±âÈ£ P1¿¡¼ P8¿¡ ¹èÄ¡µË´Ï´Ù. ù ¹ø° ¸Å°³ º¯¼ö °ª¿¡ P1, µÎ ¹ø° ¸Å°³ º¯¼ö °ª¿¡ P2, ¼¼ ¹ø°¿¡ P3 ÇÏ´Â ½ÄÀ¸·Î ÇÒ´çµË´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ¸í·ÉÀº SUM.COM ¸í·É ÇÁ·Î½ÃÀú¸¦ È£ÃâÇÏ°í ±× ÇÁ·Î½ÃÀú¿¡ 8°³ÀÇ ¸Å°³ º¯¼ö¸¦ Àü´ÞÇÕ´Ï´Ù.
$ @SUM 34 52 664 89 2 72 87 3
Á¤¼ö¸¦ ¸Å°³ º¯¼ö·Î ÁöÁ¤ÇÏ¸é ¹®ÀÚ¿·Î º¯È¯µË´Ï´Ù. ´ÙÀ½ º¸±â¿¡¼ P1Àº ¹®ÀÚ¿ °ª 24; P2´Â ¹®ÀÚ¿ °ª 25ÀÔ´Ï´Ù.
ÇÊ¿äÇÑ º¯È¯ÀÌ ÀÚµ¿À¸·Î ¼öÇàµÇ¹Ç·Î Á¤¼ö¿Í ¹®ÀÚ¿ Ç¥Çö½Ä ¸ðµÎ P1¿¡¼ P8 ±âÈ£¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸Å°³ º¯¼ö¸¦ ¹®ÀÚ¿·Î ÁöÁ¤
¹®ÀÚ¿ÀÇ °ø¹é, ÅÇ ¶Ç´Â ¼Ò¹®ÀÚ¸¦ ±×´ë·Î À¯ÁöÇÏ·Á¸é ´ÙÀ½ º¸±â¿Í °°ÀÌ ¹®ÀÚ¿ ÀüÈÄ¿¡ ÀÎ¿ë ºÎÈ£(¡°
¡±)¸¦ ³Ö½À´Ï´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°½À´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼ P1Àº Paul CramerÀÌ°í P2´Â nullÀÔ´Ï´Ù. ÀÎ¿ë ºÎÈ£¸¦ »ý·«ÇÏ¸é ´ÙÀ½ º¸±â¿Í °°ÀÌ °¢ ¹®ÀÚ¿ÀÌ º°°³ÀÇ ¸Å°³ º¯¼ö·Î Àü´ÞµË´Ï´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°½À´Ï´Ù.
ÀÌ º¸±â¿¡¼´Â ¹®ÀÚ¿ Paul°ú Cramer°¡ ´ë¹®ÀÚ·Î º¯È¯µÇ¾î P1Àº PAULÀÌ°í P2´Â CRAMERÀÔ´Ï´Ù.
´ÙÀ½ ¸í·ÉÀ» »ç¿ëÇÏ¿© DATA.COMÀ» È£ÃâÇÏ´Â °æ¿ì´Â ´ÙÀ½°ú °°½À´Ï´Ù.
$ @DATA "Paul Cramer" 24 "(555) 111-1111")
DATA.COM¿¡¼ P1¿¡¼ P8´Â ¾Æ·¡¿Í °°ÀÌ Á¤Àǵ˴ϴÙ.
¸Å°³ º¯¼ö °ªÀ» ±âÈ£·Î Àü´ÞÇÏ·Á¸é ±âÈ£ Àü/ÈÄ¿¡ ¾îÆ÷½ºÆ®·ÎÇǸ¦ ³Ö½À´Ï´Ù. ±âÈ£ °ªÀÇ °ø¹é, ÅÇ, ¼Ò¹®ÀÚ¸¦ ±×´ë·Î À¯ÁöÇÏ·Á¸é ±âÈ£ °ªÀ» ¼¼ ½ÖÀÇ ÀÎ¿ë ºÎÈ£·Î ¹¾î¾ß ÇÕ´Ï´Ù. ÀÎ¿ë ºÎÈ£¸¦ ¹®ÀÚ¿ÀÇ ÀϺηΠÆ÷ÇÔ½Ãų °æ¿ì¿¡µµ ¼¼ ½ÖÀÇ ÀÎ¿ë ºÎÈ£¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
ÅؽºÆ®¸¦ ÀÎ¿ë ºÎÈ£·Î ¹°í ¾îÆ÷½ºÆ®·ÎÇǸ¦ ±âÈ£ ¾Õ¿¡ µÎ °³, µÚ¿¡ ÇÑ °³¾¿ ³Ö´Â ¹æ¹ýµµ ÀÖ½À´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼´Â ±âÈ£¸¦ ¸í·É ÇÁ·Î½ÃÀú¿¡ Àü´ÞÇÒ ¶§ ÀÎ¿ë ºÎÈ£°¡ Á¦°ÅµÇ¾ú±â ¶§¹®¿¡ P1´Â PaulÀÌ°í P2´Â CramerÀÔ´Ï´Ù.
$ NAME = "Paul Cramer"
$ @DATA 'NAME'
´ÙÀ½ º¸±â¿¡¼ P1ÀÌ ¡°Paul Cramer
¡±ÀÌ°í P2´Â nullÀÔ´Ï´Ù.
$ NEW_NAME = """Paul Cramer"""
$ @DATA 'NEW_NAME'
´ÙÀ½ º¸±â¿¡¼ P1Àº Paul Cramer·Î º¯È¯µË´Ï´Ù.
$ ! DATA.COM
$ @NAME "''P1'"
¸Å°³ º¯¼ö¸¦ null °ªÀ¸·Î ÁöÁ¤
null ¸Å°³ º¯¼ö¸¦ Àü´ÞÇÏ·Á¸é ¸í·É ¹®ÀÚ¿¿¡ ÀÚ¸® Ç¥½ÃÀÚ·Î ÇÑ ½ÖÀÇ ÀÎ¿ë ºÎÈ£¸¦ »ç¿ëÇÕ´Ï´Ù. ´ÙÀ½ º¸±â¿¡¼ DATA.COMÀ¸·Î Àü´ÞµÈ ù ¹ø° ¸Å°³ º¯¼ö´Â null ¸Å°³ º¯¼öÀÔ´Ï´Ù.
ÀÌ º¸±â¿¡¼ P1Àº null, P2´Â Paul CramerÀÔ´Ï´Ù.
¸Å°³ º¯¼ö¸¦ »ç¿ëÇÏ¿© ÀÏ°ý ó¸® ÀÛ¾÷¿¡ µ¥ÀÌÅÍ Àü´Þ
¸Å°³ º¯¼ö¸¦ ÀÏ°ý ó¸® ¸ðµå·Î ¸í·É ÇÁ·Î½ÃÀú¿¡ Àü´ÞÇÏ·Á¸é SUBMIT ¸í·ÉÀ» /PARAMETERS ÇÑÁ¤ÀÚ¿Í ÇÔ²² »ç¿ëÇÕ´Ï´Ù.
ÇϳªÀÇ SUBMIT ¸í·ÉÀ» »ç¿ëÇÏ¿© µÎ °³ ÀÌ»óÀÇ ¸í·É ÇÁ·Î½ÃÀú¸¦ ½ÇÇàÇÏ´Â °æ¿ì¿¡´Â ÀÏ°ý ó¸® ÀÛ¾÷ÀÇ °¢ ¸í·É ÇÁ·Î½ÃÀú¿¡ ´ëÇØ ÁöÁ¤µÈ ¸Å°³ º¯¼ö°¡ »ç¿ëµË´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼´Â ¼¼ °³ÀÇ ¸Å°³ º¯¼ö°¡ ÀÏ°ý ó¸® ÀÛ¾÷À¸·Î ½ÇÇàµÇ´Â ASK.COM°ú GO.COM ¸í·É ÇÁ·Î½ÃÀú¿¡ Àü´ÞµË´Ï´Ù.
$ SUBMIT/PARAMETERS=(TODAY,TOMORROW,YESTERDAY) ASK.COM, GO.COM)
´ÙÀ½ º¸±â¿¡¼´Â µÎ °³ÀÇ ¸Å°³ º¯¼ö°¡ LIBRARY.COM°ú SORT.COM ¸í·É ÇÁ·Î½ÃÀú¿¡ Àü´ÞµË´Ï´Ù.
$ SUBMIT-
_$ /PARAMETERS=(DISK:[ACCOUNT.BILLS]DATA.DAT,DISK:[ACCOUNT]NAME.DAT) -
_$ LIBRARY.COM, SORT.COM
ÀÏ°ý ó¸® ÀÛ¾÷Àº ·Î±×ÀÎÇÏ¿© °¢ ¸í·É ÇÁ·Î½ÃÀú¸¦ ½ÇÇàÇÑ °Íó·³ ½ÇÇàµË´Ï´Ù.
ÀÌ SUBMIT ¸í·ÉÀº »ç¿ëÀÚ °èÁ¤À¸·Î ·Î±×ÀÎµÈ ÀÏ°ý ó¸® ÀÛ¾÷À» ½ÇÇàÇÏ°í, ·Î±×ÀÎ ¸í·É ÇÁ·Î½ÃÀú¸¦ ½ÇÇàÇÑ ÈÄ ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇÕ´Ï´Ù.
$ @LIBRARY DISK:[ACCOUNT.BILLS]DATA.DAT DISK:[ACCOUNT]NAME.DAT)
$ @SORT DISK:[ACCOUNT.BILLS]DATA.DAT DISK:[ACCOUNT]NAME.DAT)
µ¥ÀÌÅ͸¦ ¸í·É ÇÁ·Î½ÃÀú¿¡ Æ÷ÇÔ½ÃÅ°°Å³ª SYS$INPUT ÆÄÀÏÀ» Á¤ÀÇÇÏ¿© ÀÏ°ý ó¸® ÀÛ¾÷¿¡ µ¥ÀÌÅ͸¦ Àü´ÞÇÏ´Â ¹æ¹ýµµ ÀÖ½À´Ï´Ù. ÀÏ°ý ó¸® ÀÛ¾÷ÀÇ °¢ ¸í·É ÇÁ·Î½ÃÀú¿¡ ´ëÇØ ÁöÁ¤µÈ ¸Å°³ º¯¼ö°¡ »ç¿ëµË´Ï´Ù.
¸Å°³ º¯¼ö¸¦ »ç¿ëÇÏ¿© ÁßøµÈ ¸í·É ÇÁ·Î½ÃÀú¿¡ µ¥ÀÌÅÍ Àü´Þ
ÃÖ´ë 8°³ÀÇ ¸Å°³ º¯¼ö¸¦ ÁßøµÈ ¸í·É ÇÁ·Î½ÃÀú¿¡ Àü´ÞÇÒ ¼ö ÀÖ½À´Ï´Ù. ÁßøµÈ ÇÁ·Î½ÃÀúÀÇ P1¿¡¼ P8ÀÇ ·ÎÄà ±âÈ£´Â È£ÃâÇÏ´Â ÇÁ·Î½ÃÀúÀÇ P1¿¡¼ P8 ·ÎÄà ±âÈ£¿Í °ü°è°¡ ¾ø½À´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼ DATA.COMÀº ÁßøµÈ ¸í·É ÇÁ·Î½ÃÀúÀÎ NAME.COMÀ» È£ÃâÇÕ´Ï´Ù.
$ ! DATA.COM
$ @NAME 'P1' Joe Cooper
DATA.COMÀÇ P1ÀÌ ÀÎ¿ë ºÎÈ£°¡ ¾ø´Â ¹®ÀÚ¿ Paul CramerÀ̸é NAME.COM¿¡ µÎ °³ÀÇ ¸Å°³ º¯¼ö·Î Àü´ÞµË´Ï´Ù. NAME.COM¿¡¼ P1-P8Àº ´ÙÀ½°ú °°ÀÌ Á¤Àǵ˴ϴÙ.
DATA.COM¿¡¼ P1ÀÌ ÀÎ¿ë ºÎÈ£°¡ ÀÖ´Â ¡°Paul Cramer
¡±ÀÌ¸é ´ÙÀ½°ú °°ÀÌ ¼¼ ½ÖÀÇ ÀÎ¿ë ºÎÈ£·Î ¹¾î ÇϳªÀÇ ¸Å°³ º¯¼ö·Î NAME.COM¿¡ Àü´ÞÇÒ ¼ö ÀÖ½À´Ï´Ù.
$ ! DATA.COM
$ QUOTE = """
$ P1 = QUOTE + P1 + QUOTE
$ @NAME 'P1' "Joe Cooper"
ÀÌ º¸±â¿¡¼ NAME.COM ¸í·É ÇÁ·Î½ÃÀúÀÇ P1Àº Paul CramerÀÌ°í P2´Â Joe CooperÀÔ´Ï´Ù.
INQUIRE ¸í·É(
13Àå¿¡¼ ¼³¸í)À» »ç¿ëÇϰųª READ ¸í·ÉÀ» »ç¿ëÇÏ¿© ¸í·É ÇÁ·Î½ÃÀú¿¡ ÇÊ¿äÇÑ µ¥ÀÌÅ͸¦ ´ëÈÇüÀ¸·Î ÀÔ·ÂÇϵµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ µÎ ¸í·ÉÀº ¸ðµÎ ÀÔ·ÂÀ» À§ÇÑ ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÏ°í ±× ÀÀ´äÀ» ±âÈ£¿¡ ÇÒ´çÇÕ´Ï´Ù.
READ ¸í·É°ú INQUIRE ¸í·ÉÀº ´ÙÀ½°ú °°Àº Â÷ÀÌ°¡ ÀÖ½À´Ï´Ù.
|
|
°ªÀ» À§ÇÑ ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù.
|
°ªÀ» À§ÇÑ ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù.
|
Å͹̳ηκÎÅÍ °ªÀ» ÀнÀ´Ï´Ù.
|
ù ¹ø° ¸Å°³ º¯¼ö·Î ÁöÁ¤µÈ ¼Ò½º·ÎºÎÅÍ °ªÀ» ÀнÀ´Ï´Ù
|
|
°ªÀ» µÎ ¹ø° ¸Å°³ º¯¼ö·Î¼ À̸§ÀÌ ÁöÁ¤µÈ ±âÈ£¿¡ ÇÒ´çÇÕ´Ï´Ù
|
READ ¸í·ÉÀº ÇÁ·ÒÇÁÆ®¿¡ ´ëÇÑ ÀÀ´äÀ¸·Î Å͹̳ο¡ ÀÔ·ÂµÈ ¸ðµç ¹®ÀÚ¸¦ ´ë/¼Ò¹®ÀÚ, °ø¹é, ÅÇÀ» Æ÷ÇÔÇÏ¿© ±×´ë·ÎÀÇ ¹®ÀÚ¿·Î ¹Þ¾ÆµéÀÔ´Ï´Ù. /PROMPT ÇÑÁ¤ÀÚ¸¦ »ý·«ÇÏ¸é ±âº» ÇÁ·ÒÇÁÆ®ÀÎ Data:°¡ Ç¥½ÃµË´Ï´Ù.
¶ÇÇÑ, ¸Å°³ º¯¼ö¸¦ ¹Þ¾ÆµéÀ̰ųª Çʼö ¸Å°³ º¯¼ö°¡ ÁöÁ¤µÇÁö ¾ÊÀ» °æ¿ì »ç¿ëÀÚ¿¡°Ô ÀÔ·ÂÇ϶ó´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÒ ¼ö ÀÖ´Â ¸í·É ÇÁ·Î½ÃÀú¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ ¸í·ÉÀº Å͹̳ο¡ Filename:À̶ó´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÏ°í ³í¸® À̸§ÀÎ SYS$COMMAND¿¡ ÀÇÇØ ÁöÁ¤µÈ ¼Ò½º(±âº»ÀûÀ¸·Î Å͹̳Î)·ÎºÎÅÍ ÀÀ´äÀ» ÀÐ¾î ±× ÀÀ´äÀ» FILE:À̶ó´Â ±âÈ£¿¡ ÇÒ´çÇÕ´Ï´Ù.
$ READ/PROMPT="Filename: " SYS$COMMAND FILE
´ÙÀ½ º¸±â¿¡¼ ÇÁ·Î½ÃÀú°¡ È£ÃâµÉ ¶§ ÆÄÀÏ À̸§ÀÌ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é »ç¿ëÀÚ¿¡°Ô ÆÄÀÏ À̸§À» ÀÔ·ÂÇ϶ó´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù.
$ ! Prompt for a file name if name
$ ! is not passed as a parameter
$ IF P1 .EQS. "" THEN INQUIRE P1 "Filename"
$ COPY 'P1' DISK5:[RESERVED]*.*
$ EXIT
ÁÖ ÀÏ°ý ó¸® ÀÛ¾÷À¸·Î ½ÇÇàÇϱâ À§ÇØ ¸í·É ÇÁ·Î½ÃÀú¸¦ Á¦ÃâÇÏ´Â °æ¿ì¿¡´Â INQUIRE ¸í·É µÚ¿¡ ³ª¿À´Â µ¥ÀÌÅÍ ÇàÀ¸·ÎºÎÅÍ INQUIRE ¸í·É¿¡ ÁöÁ¤µÈ ±âÈ£ÀÇ °ªÀ» ÀнÀ´Ï´Ù. µ¥ÀÌÅÍ ÇàÀ» Æ÷ÇÔ½ÃÅ°Áö ¾ÊÀ¸¸é ±âÈ£¿¡´Â null °ªÀÌ ÇÒ´çµË´Ï´Ù.
SYS$INPUT ³í¸® À̸§À» »ç¿ëÇÏ¿© µ¥ÀÌÅÍ ÀÔ·Â
¸í·É, À¯Æ¿¸®Æ¼ ¹× ±× ¹ÛÀÇ ½Ã½ºÅÛ À̹ÌÁö´Â ±âº»
ÀÔ·Â ½ºÆ®¸²ÀÎ ³í¸® À̸§ SYS$INPUT¿¡ ÀÇÇØ ÁöÁ¤µÈ ¼Ò½º·ÎºÎÅÍ ÀÔ·Â µ¥ÀÌÅ͸¦ ¾ò½À´Ï´Ù. ¸í·É ÇÁ·Î½ÃÀú¿¡¼ SYS$INPUTÀº ¸í·É ÇÁ·Î½ÃÀú ÆÄÀÏ·Î Á¤Àǵ˴ϴÙ. µ¥ÀÌÅ͸¦ ÇÊ¿ä·Î ÇÏ´Â ¸í·É ¶Ç´Â À̹ÌÁöÀÎ °æ¿ì¿¡´Â ±× ÆÄÀÏÀÇ µ¥ÀÌÅÍ Çà¿¡¼ µ¥ÀÌÅ͸¦ °Ë»öÇÕ´Ï´Ù.
±×·¯³ª SYS$INPUTÀ» ÀçÁ¤ÀÇÇÏ¿© Å͹̳ÎÀ̳ª º°µµÀÇ ÀÔ·Â ÆÄÀϷκÎÅÍ µ¥ÀÌÅ͸¦ Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù.
SYS$INPUTÀ» Å͹̳ηΠÀçÁ¤ÀÇ
SYS$INPUTÀ» Å͹̳ηΠÀçÁ¤ÀÇÇÏ¿© ¸í·É ÇÁ·Î½ÃÀú·ÎºÎÅÍ È£ÃâµÈ À̹ÌÁö¿¡ ´ëÈÇüÀ¸·Î µ¥ÀÌÅ͸¦ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸í·É ÇÁ·Î½ÃÀú¿¡ ´ëÈÇüÀ¸·Î µ¥ÀÌÅ͸¦ ÀÔ·ÂÇØ¾ß ÇÏ´Â DCL ¸í·ÉÀ̳ª À¯Æ¿¸®Æ¼¸¦ »ç¿ëÇÏ·Á¸é SYS$INPUTÀ» Å͹̳ηΠÀçÁ¤ÀÇÇØ¾ß ÇÕ´Ï´Ù.
´ÙÀ½ ¸í·É ÇÁ·Î½ÃÀú´Â CENSUS.EXE À̹ÌÁö¿¡ ´ëÈÇüÀ¸·Î ÀÔ·Â »çÇ×À» Á¦°øÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.
$ ! Execute CENSUS getting data from the terminal
$ DEFINE/USER_MODE SYS$INPUT SYS$COMMAND
$ RUN CENSUS
$ EXIT
DEFINE/USER_MODE ¸í·ÉÀº CENSUS.EXE°¡ ½ÇÇàµÇ´Â µ¿¾È ÀϽÃÀûÀ¸·Î SYS$INPUTÀ» ÀçÁ¤ÀÇÇÏ¿© CENSUS.EXE¿¡ Å͹̳ηκÎÅÍ ÀÔ·Â »çÇ×À» Á¦°øÇÕ´Ï´Ù. SYS$INPUTÀº CENSUS.EXE°¡ ¿Ï·áµÈ ÈÄ ¿ø·¡ÀÇ Á¤ÀÇÀÎ ¸í·É ÇÁ·Î½ÃÀú ÆÄÀÏ·Î µÇµ¹¾Æ°©´Ï´Ù.
´ÙÀ½ ¸í·É ÇÁ·Î½ÃÀú´Â EVE¸¦ ÅؽºÆ® ÆíÁý±â·Î »ç¿ëÇÕ´Ï´Ù.
$ ! Obtain a list of your files
$ DIRECTORY
$ !
$ ! Get file name and invoke the EVE editor
$ EDIT_LOOP:
$ INQUIRE FILE "File to edit (Press Return to end)"
$ IF FILE .EQS. "" THEN EXIT
$ DEFINE/USER_MODE SYS$INPUT SYS$COMMAND
$ EDIT/TPU 'FILE'
$ GOTO EDIT_LOOP
¸í·É ÇÁ·Î½ÃÀú´Â »ç¿ëÀÚ°¡ Return Å°¸¦ ´·¯ ·çÇÁ¸¦ Á¾·áÇÒ ¶§±îÁö ÆÄÀÏ À̸§À» À§ÇÑ ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù. ÀÌ ÇÁ·Î½ÃÀú´Â »ç¿ëÀÚ°¡ ÆÄÀÏ À̸§À» ÀÔ·ÂÇϸé ÆÄÀÏ ÆíÁýÀ» À§ÇØ EVE¸¦ ÀÚµ¿À¸·Î È£ÃâÇÕ´Ï´Ù. ÆíÁý±â°¡ ½ÇÇàµÇ°í ÀÖ´Â µ¿¾È SYS$INPUTÀº Å͹̳ηΠÁ¤ÀǵǾî ÆíÁý »çÇ×À» ´ëÈÇüÀ¸·Î ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù.
SYS$INPUTÀ» º°°³ÀÇ ÆÄÀÏ·Î Á¤ÀÇ
SYS$INPUTÀ» ÆÄÀÏ·Î Á¤ÀÇÇÏ¿© ÆÄÀÏÀ» ÅëÇØ ¸í·É ÇÁ·Î½ÃÀú¿¡ ÀÔ·Â »çÇ×À» Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù. µ¥ÀÌÅÍ ÇàÀº 󸮵ÇÁö ¾Ê´Â´Ù´Â Á¡À» ÁÖÀÇÇϽʽÿÀ. ¸í·É ÇÁ·Î½ÃÀú´Â µ¥ÀÌÅÍ ÇàÀÇ ÅؽºÆ®¸¦ ¸í·ÉÀ̳ª À̹ÌÁö·Î Á÷Á¢ Àü´ÞÇÏ¸ç µ¥ÀÌÅÍ Çà¿¡ DCL ±âÈ£³ª Ç¥Çö½ÄÀ» Æ÷ÇÔ½Ãų °æ¿ì ±âÈ£¸¦ °ªÀ¸·Î ´ëüÇϰųª Ç¥Çö½ÄÀ» Æò°¡ÇÏÁö ¾Ê½À´Ï´Ù. µ¥ÀÌÅÍ Çà¿¡ °¨Åº ºÎÈ£(!)¸¦ »ç¿ëÇÏ¸é µ¥ÀÌÅ͸¦ Àü´Þ¹ÞÀº À̹ÌÁö¿¡¼ ó¸®ÇÕ´Ï´Ù.
¶ÇÇÑ, µ¥ÀÌÅÍ ÆÄÀÏ À̸§À» SYS$INPUTÀ¸·Î ÁöÁ¤ÇÏ¿© ¸í·É ÇÁ·Î½ÃÀú ÆÄÀÏ¿¡ ÇÁ·Î±×·¥À» Æ÷ÇÔ½Ãų ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô Çϸé ÄÄÆÄÀÏ·¯°¡ ´Ù¸¥ ÆÄÀÏÀÌ ¾Æ´Ñ ¸í·É ÇÁ·Î½ÃÀú¿¡¼ ÇÁ·Î±×·¥À» ÀÐ°Ô µË´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼´Â ÇÁ·Î±×·¥ ¹®ÀÌ µÚ¿¡ ¿À´Â FORTRAN ¸í·ÉÀ» Æ÷ÇÔÇÏ´Â ¸í·É ÇÁ·Î½ÃÀú¸¦ º¸¿© ÁÝ´Ï´Ù.
$ FORTRAN/OBJECT=TESTER/LIST=TESTER SYS$INPUT
C THIS IS A TEST PROGRAM
A = 1
B = 2
STOP
END
$ PRINT TESTER.LIS
$ EXIT
FORTRAN ¸í·É¿¡¼´Â ³í¸® À̸§ÀÎ SYS$INPUTÀ» »ç¿ëÇÏ¿© ÄÄÆÄÀ쵃 ÆÄÀÏÀ» ½Äº°ÇÕ´Ï´Ù. SYS$INPUTÀº ¸í·É ÇÁ·Î½ÃÀú¿Í °°À¸¹Ç·Î FORTRAN ÄÄÆÄÀÏ·¯´Â FORTRAN ¸í·É µÚÀÇ ¸í·É¹®À» ´Þ·¯ ±âÈ£·Î ½ÃÀÛÇÏ´Â ´ÙÀ½ Çà±îÁö ÄÄÆÄÀÏÇÕ´Ï´Ù.
ÄÄÆÄÀÏÀÌ Á¾·áµÇ¸é TESTER.OBJ¿Í TESTER.LIS µÎ °³ÀÇ Ãâ·Â ÆÄÀÏÀÌ ¸¸µé¾îÁý´Ï´Ù.
±× ´ÙÀ½¿¡´Â PRINT ¸í·ÉÀÌ ÆÄÀÏÀ» ÀμâÇÕ´Ï´Ù.
µ¥ÀÌÅÍ, ¿À·ù ¸Þ½ÃÁö, ¸í·ÉÇà È®Àΰú °°Àº ¸í·É ÇÁ·Î½ÃÀú·ÎºÎÅÍÀÇ Ãâ·ÂÀÌ Å͹̳ÎÀ̳ª ´Ù¸¥ ÆÄÀÏ·Î ÀÌ·ç¾îÁöµµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿©±â¿¡¼ ¼³¸íÇÒ Ãâ·Â ÁöÁ¤ ¹æ¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù.
¸í·É ¹× À̹ÌÁö·ÎºÎÅÍ Ãâ·Â ´Ù½Ã ÁöÁ¤
¸í·É ÇÁ·Î½ÃÀú¿¡¼ µ¥ÀÌÅÍ ¹Ýȯ
±âÈ£¸¦ ´ëüÇÒ ÇÊ¿ä°¡ ¾ø´Â ¸î ÇàÀ¸·Î µÈ ÅؽºÆ®¸¦ Ç¥½ÃÇÏ·Á¸é TYPE ¸í·ÉÀ» »ç¿ëÇÕ´Ï´Ù. TYPE ¸í·ÉÀº ÁöÁ¤ÇÏ´Â ÆÄÀÏÀÇ µ¥ÀÌÅ͸¦ SYS$OUTPUT¿¡ ±â·ÏÇÕ´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼ SYS$INPUTÀº µ¥ÀÌÅÍ ÆÄÀÏ·Î ÁöÁ¤µË´Ï´Ù. TYPE ¸í·ÉÀº ±× µÚÀÇ µ¥ÀÌÅÍ Çà¿¡¼ µ¥ÀÌÅ͸¦ Àоî Å͹̳ο¡ Ç¥½ÃÇÕ´Ï´Ù.
$ ! Using TYPE to display lines
$ TYPE SYS$INPUT
REPORT BY MARY JONES
PREPARED APRIL 15, 2002
SUBJECT: Analysis of Tax Deductions for 2002
.
.
.
$ EXIT
±âÈ£ ¶Ç´Â ·º½ÃÄ® ÇÔ¼ö¸¦ Æ÷ÇÔÇÏ´Â µ¥ÀÌÅ͸¦ ¾²·Á¸é WRITE ¸í·ÉÀ» »ç¿ëÇÕ´Ï´Ù. µ¥ÀÌÅ͸¦ ÀÎ¿ë ºÎÈ£(¡°
¡±)·Î ¹Áö ¾ÊÀ¸¸é WRITE ¸í·ÉÀº ±âÈ£¸¦ ÀÚµ¿À¸·Î ´ëüÇÕ´Ï´Ù.
WRITE ¸í·ÉÀ» »ç¿ëÇÏ¿© ¹®ÀÚ¿À» ¸®ÅÍ·² ÅؽºÆ®·Î Ç¥½ÃÇÏ·Á¸é ´ÙÀ½ º¸±âó·³ ¹®ÀÚ¿À» ÀÎ¿ë ºÎÈ£(¡°
¡±)·Î ¹½À´Ï´Ù.
$ WRITE SYS$OUTPUT "Two files are written."
Two files are written.
¹®ÀÚ¿¿¡ ÀÎ¿ë ºÎÈ£¸¦ Æ÷ÇÔ½ÃÅ°·Á¸é ´ÙÀ½ º¸±âó·³ µÎ ½ÖÀÇ ÀÎ¿ë ºÎÈ£(¡° ¡°
¡± ¡±)¸¦ »ç¿ëÇÕ´Ï´Ù.
$ WRITE SYS$OUTPUT "Summary of ""Q & A"" Session"
Summary of "Q & A" Session
ÅؽºÆ®ÀÇ ÇÑ ÇàÀ» µÎ Çà ÀÌ»ó °è¼Ó¾²·Á¸é ´ÙÀ½ º¸±âó·³ ´õÇϱ⠱âÈ£(+)¿Í ÇÏÀÌÇÂ(-)À» »ç¿ëÇÏ¿© µÎ ¹®ÀÚ¿À» ¿¬°áÇÕ´Ï´Ù.
$ WRITE SYS$OUTPUT "Report by Mary Jones" + -
" Prepared April 15, 2002"
Report by Mary Jones Prepared April 15, 2002
WRITE ¸í·ÉÀº ±âÈ£ ´ëü¸¦ ÀÚµ¿À¸·Î ¼öÇàÇÏ°í ±âÈ£ÀÇ °ªÀ» Ç¥½ÃÇÕ´Ï´Ù. ¹®ÀÚ¿ ³»¿¡¼ ±âÈ£ ´ëü¸¦ ¼öÇàÇÏ·Á¸é ´ÙÀ½ º¸±âó·³ ±âÈ£¸¦ ¾îÆ÷½ºÆ®·ÎÇÇ·Î ¹½À´Ï´Ù.
$ AFILE = "STAT1.DAT"$ BFILE = "STAT2.DAT"
$ WRITE SYS$OUTPUT "''AFILE' and ''BFILE' ready."
STAT1.DAT and STAT2.DAT ready.
ÀÌ º¸±â¿¡¼ STAT1.DAT´Â AFILE ±âÈ£·Î, STAT2.DAT´Â BFILE ±âÈ£·Î º¯È¯µË´Ï´Ù.
¸í·É ¹× À̹ÌÁö¿¡¼ Ãâ·Â ÀçÁöÁ¤
¸í·É, À¯Æ¿¸®Æ¼, ±× ¿ÜÀÇ ½Ã½ºÅÛ À̹ÌÁö´Â ³í¸® À̸§ÀÎ SYS$OUTPUT¿¡ ÀÇÇØ ÁöÁ¤µÈ ¼Ò½º¿¡ Ãâ·Â »çÇ×À» ¾¹´Ï´Ù. ±âº»ÀûÀ¸·Î SYS$OUTPUTÀº Å͹̳ο¡ ÇØ´çÇÕ´Ï´Ù. ±×·¯³ª ´ÙÀ½ Áß ÇÑ °¡Áö ¹æ¹ýÀ¸·Î Ãâ·ÂÀ» ´Ù½Ã ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸í·ÉÀ» È£ÃâÇÒ ¶§ /OUTPUT ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇÕ´Ï´Ù. /OUTPUT ÇÑÁ¤ÀÚ¸¦ ¹Þ¾ÆµéÀÌ´Â DCL ¸í·ÉÀ¸·Î´Â ACCOUNTING, CALL, DIRECTORY, HELP, LIBRARY, RUN (ÇÁ·Î¼¼½º), SPAWN, ¹× TYPEÀÌ ÀÖ½À´Ï´Ù.
DEFINE/USER_MODE ¸í·ÉÀ» »ç¿ëÇÏ¿© SYS$OUTPUTÀ» ÆÄÀÏ·Î ÀϽÃÀûÀ¸·Î ´Ù½Ã ÁöÁ¤ÇÕ´Ï´Ù .
DEFINE/USER_MODE ¸í·ÉÀ» »ç¿ëÇÏ¿© SYS$OUTPUTÀ» ÀϽÃÀûÀ¸·Î null ÀåÄ¡·Î Á¤ÀÇÇÏ¿© ¸í·É¿¡¼ Ãâ·ÂÇÏÁö ¸øÇϵµ·Ï ÇÕ´Ï´Ù.
´ÙÀ½ ¸í·É ÇÁ·Î½ÃÀú´Â SHOW USERS ¸í·ÉÀÇ Ãâ·ÂÀ» ÆÄÀÏ·Î ÀçÁöÁ¤ÇÕ´Ï´Ù. ÀÌ »õ·Î¿î SYS$OUTPUT Á¤ÀÇ´Â SHOW USERS ¸í·É ½ÇÇà¿¡¸¸ À¯È¿ÇÕ´Ï´Ù.
$ DEFINE/USER_MODE SYS$OUTPUT SHOW_USER.DAT
$ SHOW USERS
$ !
$ ! Process the information in SHOW_USER.DAT
$ OPEN/READ INFILE SHOW_USER.DAT
$ READ INFILE RECORD
.
.
.
$ CLOSE INFILE
$ EXIT
´ÙÀ½ º¸±â¿¡¼ SYS$OUTPUTÀº null ÀåÄ¡(NL:)·Î Á¤Àǵ˴ϴÙ.
$ DEFINE/USER_MODE SYS$OUTPUT NL:
$ APPEND NEW_DATA.DAT STATS.DAT
.
.
.
/USER_MODE ÇÑÁ¤ÀÚ´Â ´ÙÀ½ À̹ÌÁö°¡ ¿Ï·áµÉ ¶§±îÁö¸¸ À¯È¿ÇÑ Àӽà ³í¸® À̸§ ÇÒ´çÀ» ¸¸µå´Â µ¥ »ç¿ëµË´Ï´Ù. ¸í·ÉÀÌ ½ÇÇàµÈ ÈÄ¿¡´Â SYS$OUTPUTÀÌ ±âº» Á¤ÀÇ(ÀϹÝÀûÀ¸·Î Å͹̳Î)·Î µÇµ¹¾Æ°©´Ï´Ù.
¸í·É ÀÎÅÍÇÁ¸®ÅÍ ³»¿¡¼ ½ÇÇàµÇ´Â DCL ¸í·É¿¡¼ÀÇ Ãâ·ÂÀ» ÀçÁ¤ÀÇÇÒ ¶§´Â DEFINE/USER_MODE ¸í·ÉÀ» »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ±× ´ë½Å DEFINE ¸í·ÉÀ» »ç¿ëÇÏ¿© SYS$OUTPUTÀ» ÀçÁ¤ÀÇÇÏ°í »ç¿ëÀÌ ³¡³ ÈÄ DEASSIGN ¸í·ÉÀ» »ç¿ëÇÏ¿© ±× Á¤ÀǸ¦ »èÁ¦ÇÕ´Ï´Ù.
´ÙÀ½ ¸ñ·ÏÀº ¸í·É ÀÎÅÍÇÁ¸®ÅÍ ³»¿¡¼ ¼öÇàµÇ´Â ¸ðµç DCL ¸í·É ¸ñ·ÏÀÔ´Ï´Ù.
|
|
|
|
|
|
|
|
|
CREATE/LOGICAL_NAME_TABLE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
´ÙÀ½ º¸±â´Â SHOW TIME ¸í·É¿¡¼ TIME.DAT ÆÄÀÏ·Î Ãâ·ÂÀ» ÀçÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµÇ´Â ¸í·ÉÀ» º¸¿© ÁÝ´Ï´Ù. SYS$OUTPUTÀÇ ÇÒ´çÀ» Ãë¼ÒÇÏ¸é ±âº» Á¤ÀÇ(Å͹̳Î)·Î µÇµ¹¾Æ°©´Ï´Ù.
$ DEFINE SYS$OUTPUT TIME.DAT
$ SHOW TIME
$ DEASSIGN SYS$OUTPUT
¸í·É ÇÁ·Î½ÃÀú¿¡¼ µ¥ÀÌÅÍ ¹Ýȯ
±Û·Î¹ú ±âÈ£¿Í ³í¸® À̸§Àº ¸í·É ÇÁ·Î½ÃÀú¿¡¼ È£ÃâÇÏ´Â ÇÁ·Î½ÃÀú³ª DCL ¸í·É ¼öÁØ¿¡ µ¥ÀÌÅ͸¦ ¹ÝȯÇÕ´Ï´Ù. ±Û·Î¹ú ±âÈ£³ª ³í¸® À̸§Àº ¾î´À ¸í·É ¼öÁØ¿¡¼³ª ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù.
³í¸® À̸§Àº ÁßøµÈ ¸í·É ÇÁ·Î½ÃÀú¿¡¼ È£ÃâÇÏ´Â ÇÁ·Î½ÃÀú·Î µ¥ÀÌÅ͸¦ ¹ÝȯÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ º¸±â´Â ±Û·Î¹ú ÇÒ´ç¹®À» »ç¿ëÇÏ¿© ¸¸µé¾îÁø ±Û·Î¹ú ±âÈ£·Î °ªÀ» Àü´ÞÇÏ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù.
$ @DATA "Paul Cramer"$ ! DATA.COM
$ !
$ ! P1 is a full name.
$ ! NAME.COM returns the last name in the
$ ! global symbol LAST_NAME.
$ !
$ @NAME 'P1'
$ ! NAME.COM
$ ! P1 is a first name
$ ! P2 is a last name
$ ! return P2 in the global symbol LAST_NAME
$ LAST_NAME == P2
$ EXIT
$ ! write LAST_NAME to the terminal
$ WRITE SYS$OUTPUT "LAST_NAME = ''LAST_NAME'
"LAST_NAME = CRAMER
DATA.COMÀº NAME.COM ¸í·É ÇÁ·Î½ÃÀú¸¦ È£ÃâÇÏ¿© ¿ÏÀüÇÑ À̸§À» Àü´ÞÇÕ´Ï´Ù. NAME.COMÀº ¼ºÀ» ±Û·Î¹ú ±âÈ£ÀÎ LAST_NAME¿¡ ³Ö½À´Ï´Ù. NAME.COMÀÌ ¿Ï·áµÇ¸é DATA.COMÀÌ °è¼Ó ½ÇÇàµÇ¾î LAST_NAMEÀ» ÁöÁ¤ÇÔÀ¸·Î½á ¼ºÀ» ÀнÀ´Ï´Ù. NAME.COM ¸í·É ÇÁ·Î½ÃÀú´Â º°°³ÀÇ ÆÄÀÏ¿¡ ÀÖ½À´Ï´Ù. ÀÌ º¸±â¿¡¼´Â ¸íÈ®¼ºÀ» À§ÇØ ±× ºÎºÐÀ» µé¿©½è½À´Ï´Ù.
´ÙÀ½ ¸í·É ÇÁ·Î½ÃÀú¿¡¼ REPORT.COMÀº º¸°í¼ À̸§À» ÀÐ¾î ±× ÆÄÀÏ À̸§À» ³í¸® À̸§ÀÎ REPORT_FILE·Î ÀÏÄ¡½ÃÄÑ REPORT_FILE¿¡ º¸°í¼¸¦ ¾²´Â ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
$! Obtain the name of a file and then run
$! REPORT.EXE to write a report to the file
$!
$ INQUIRE FILE "Name of report file"$ DEFINE/NOLOG REPORT_FILE 'FILE'
$ RUN REPORT
$ EXIT
´ÙÀ½ º¸±â¿¡¼ REPORT.COM ¸í·É ÇÁ·Î½ÃÀú´Â ´Ù¸¥ ÇÁ·Î½ÃÀú¿¡¼ È£ÃâµË´Ï´Ù. È£ÃâÇÏ´Â ÇÁ·Î½ÃÀú´Â º¸°í¼ ÆÄÀÏÀ» ÂüÁ¶ÇÏ´Â ³í¸® À̸§ REPORT_FILEÀ» »ç¿ëÇÕ´Ï´Ù.
$! Command procedure that updates data files
$! and optionally prepares reports
$!
$ UPDATE:
.
.
.
$ INQUIRE REPORT "Prepare a report [Y or N]"
$ IF REPORT THEN GOTO REPORT_SEC
$ EXIT
$!
$ REPORT_SEC:
$ @REPORT
$ WRITE SYS$OUTPUT "Report written to ", F$TRNLNM("REPORT_FILE")
$ EXIT
´ÙÀ½ Àý¿¡¼´Â ¿À·ù ¸Þ½ÃÁö ÀçÁöÁ¤ ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.
±âº»ÀûÀ¸·Î ¸í·É ÇÁ·Î½ÃÀú´Â ½Ã½ºÅÛ ¿À·ù ¸Þ½ÃÁö¸¦ SYS$ERROR¿¡ ÀÇÇØ Ç¥½ÃµÈ ÆÄÀÏ·Î º¸³À´Ï´Ù. ½Ã½ºÅÛ ¿À·ù ¸Þ½ÃÁö¸¦ ÁöÁ¤µÈ ÆÄÀÏ·Î º¸³»µµ·Ï SYS$ERROR¸¦ ÀçÁ¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª SYS$ERROR¸¦ SYS$OUTPUT°ú ´Ù¸£°Ô ÀçÁ¤ÀÇÇϰųª SYS$ERROR¸¦ ÁöÁ¤ÇÏÁö ¾Ê°í SYS$OUTPUT¸¦ ÀçÁ¤ÀÇÇϸé Ç¥ÁØ ½Ã½ºÅÛ ¿À·ù Ç¥½Ã ¹æ¹ýÀ» »ç¿ëÇÏ´Â DCL ¸í·É°ú À̹ÌÁö´Â ½Ã½ºÅÛ ¿À·ù ¸Þ½ÃÁö¿Í ½Ã½ºÅÛ Áß´ë ¿À·ù ¸Þ½ÃÁö¸¦ SYS$ERROR¿Í SYS$OUTPUT¿¡ ¸ðµÎ º¸³À´Ï´Ù. µû¶ó¼ SYS$ERROR Á¤ÀÇ¿¡ Ç¥½ÃµÈ ÆÄÀÏ¿¡ ÇÑ ¹ø, SYS$OUTPUT¿¡ Ç¥½ÃµÈ ÆÄÀÏ¿¡ ÇÑ ¹ø, ¿À·ù ¸Þ½ÃÁö°¡ µÎ ¹ø Ç¥½ÃµË´Ï´Ù. ¼º°ø ¸Þ½ÃÁö, Á¤º¸ ¸Þ½ÃÁö ¹× °æ°í ¸Þ½ÃÁö´Â SYS$OUTPUT¿¡ Ç¥½ÃµÈ ÆÄÀÏ¿¡¸¸ Àü´ÞµË´Ï´Ù. DCL ¸í·É¿¡¼ ½Ã½ºÅÛ ¿À·ù ¸Þ½ÃÁö Ç¥½Ã¸¦ ¸·À¸·Á¸é SYS$ERROR³ª SYS$OUTPUT Áß ¾î´À Çϳªµµ Å͹̳ηΠÁöÁ¤ÇÏÁö ¸»¾Æ¾ß ÇÕ´Ï´Ù.
¸í·É ÇÁ·Î½ÃÀú¿¡¼ »ç¿ëÀÚ Á¤ÀÇ À̹ÌÁö Áß Çϳª¸¦ ½ÇÇàÇÏ°í ±× À̹ÌÁö°¡ SYS$ERROR¸¦ ÂüÁ¶ÇÏ´Â °æ¿ì¿¡´Â SYS$ERROR°¡ SYS$OUTPUT°ú ´Ù¸£´õ¶óµµ SYS$ERROR¿¡ ÀÇÇØ Ç¥½ÃµÈ ÆÄÀÏ¿¡¸¸ ½Ã½ºÅÛ ¿À·ù ¸Þ½ÃÁö°¡ Àü´ÞµË´Ï´Ù. Ç¥ÁØ ½Ã½ºÅÛ ¿À·ù Ç¥½Ã ¹æ¹ýÀ» »ç¿ëÇÏ´Â DCL ¸í·É°ú À̹ÌÁö¸¸ SYS$ERROR¿Í SYS$OUTPUTÀÌ ´Ù¸¦ ¶§ ÀÌ µÎ ÆÄÀÏ¿¡ ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù.
´ÙÀ½ ¸í·É ÇÁ·Î½ÃÀú´Â µð·ºÅ丮 À̸§À» ¸Å°³ º¯¼ö·Î ¹Þ¾Æ ±× µð·ºÅ丮¸¦ ±âº»°ªÀ¸·Î ¼³Á¤ÇÏ°í µð·ºÅ丮¿¡ ÀÖ´Â ÆÄÀÏÀ» Á¦°ÅÇÕ´Ï´Ù. ½Ã½ºÅÛ ¿À·ù ¸Þ½ÃÁö°¡ Ç¥½ÃµÇÁö ¾Êµµ·Ï ÀϽÃÀûÀ¸·Î SYS$ERROR¿Í SYS$OUTPUT¸¦ null ÀåÄ¡·Î Á¤ÀÇÇÕ´Ï´Ù.
$ ! Purge files in a directory and suppress messages
$ !
$ SET DEFAULT 'P1'
$ ! Suppress messages
$ !
$ DEFINE/USER_MODE SYS$ERROR NL:
$ DEFINE/USER_MODE SYS$OUTPUT NL:
$ PURGE
$ EXIT
½Ã½ºÅÛ ¿À·ù ¸Þ½ÃÁö Ç¥½Ã ¹æÁö
SET MESSAGE ¸í·ÉÀ» »ç¿ëÇÏ¿© ½Ã½ºÅÛ ¿À·ù ¸Þ½ÃÁö°¡ Ç¥½ÃµÇÁö ¾Êµµ·Ï ÇÏ´Â ¹æ¹ýµµ ÀÖ½À´Ï´Ù. /NOFACILITY, /NOIDENTIFICATION, /NOSEVERITY ¶Ç´Â /NOTEXT ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇÏ¿© ÀåÄ¡ À̸§, ¸Þ½ÃÁö ID, ¿À·ù ½É°¢µµ ¶Ç´Â ¸Þ½ÃÁö ÅؽºÆ®°¡ Ç¥½ÃµÇÁö ¾Êµµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼´Â µÎ ¹ø° SET MESSAGE ¸í·É¿¡ À̸¦ ¶§±îÁö ÀåÄ¡, ID, ½É°¢µµ ¹× ÅؽºÆ® ¸Þ½ÃÁö°¡ ÀϽÃÀûÀ¸·Î Ç¥½ÃµÇÁö ¾Ê½À´Ï´Ù.
$ ! Purge files in a directory and suppress system messages
$ !
$ SET DEFAULT 'P1'
$ ! Suppress system messages
$ !
$ SET MESSAGE/NOFACILITY -
/NOIDENTIFICATION -
/NOSEVERITY -
/NOTEXT
$ PURGE
$ SET MESSAGE/FACILITY -
/IDENTIFICATION -
/SEVERITY
/TEXT
$ EXIT
ÀÐ±â ¹× ¾²±â ÆÄÀÏ(ÆÄÀÏ I/O)
¸í·É ÇÁ·Î½ÃÀú¿¡¼ ÆÄÀÏÀ» ÀÐ°í ¾²´Â ±âº»ÀûÀÎ ´Ü°è´Â ´ÙÀ½°ú °°½À´Ï´Ù.
|
|
|
OPEN ¸í·ÉÀ» »ç¿ëÇÏ¿© ÆÄÀÏÀ» ¿±´Ï´Ù.
ÆÄÀÏÀ» ¿¸é ÆÄÀÏ¿¡ ³í¸® À̸§ÀÌ ÇÒ´çµÇ°í Àбâ ÆÄÀÏÀÎÁö ¾²±â ÆÄÀÏÀÎÁö ¶Ç´Â ÀÐ°í ¾²´Â ÆÄÀÏÀÎÁö ¿©ºÎ°¡ ÁöÁ¤µË´Ï´Ù. ÀÌÈÄÀÇ READ, WRITE, CLOSE ¸í·É¿¡¼´Â ÀÌ ³í¸® À̸§À» »ç¿ëÇÏ¿© ÇØ´ç ÆÄÀÏÀ» ÂüÁ¶ÇÕ´Ï´Ù.
|
|
READ ¶Ç´Â WRITE ¸í·ÉÀ» »ç¿ëÇÏ¿© ÆÄÀÏ¿¡ ·¹Äڵ带 Àаųª ¾¹´Ï´Ù.
ÆÄÀÏ¿¡ ´ëÇÑ ÀԷ°ú Ãâ·ÂÀº ÀϹÝÀûÀ¸·Î ·¹Äڵ带 Àаí ó¸®ÇÏ¿© ¼öÁ¤ÇÑ ·¹Äڵ带 µ¿ÀÏÇÑ ÆÄÀÏÀ̳ª ´Ù¸¥ ÆÄÀÏ¿¡ ¾²´Â ·çÇÁ¸¦ ÅëÇØ ¼öÇàµË´Ï´Ù.
|
|
CLOSE ¸í·ÉÀ» »ç¿ëÇÏ¿© ÆÄÀÏÀ» ´Ý½À´Ï´Ù.
CLOSE ¸í·ÉÀ» Æ÷ÇÔ½ÃÅ°Áö ¾ÊÀ¸¸é ·Î±×¾Æ¿ôÇÒ ¶§±îÁö ÆÄÀÏÀÌ ¿·Á ÀÖ½À´Ï´Ù.
|
ÁÖ SYS$INPUT, SYS$OUTPUT, SYS$COMMAND ¹× SYS$ERROR µîÀÇ ¿µ±¸ ÇÁ·Î¼¼½º ÆÄÀÏÀº º°µµ·Î Àаųª ¾²Áö ¾Ê¾Æµµ ·Î±×ÀÎÇÒ ¶§ ÀÚµ¿À¸·Î ¿¸³´Ï´Ù.
´ÙÀ½ Àý¿¡¼ ¼³¸íÇÒ ³»¿ëÀº ´ÙÀ½°ú °°½À´Ï´Ù.
OPEN ¸í·ÉÀº ¼øÂ÷Àû, »ó´ëÀû ¶Ç´Â À妽º ¼øÂ÷Àû ÆÄÀÏÀ» ¿±´Ï´Ù. ÆÄÀÏÀº ¿µ±¸ ÇÁ·Î¼¼½º·Î ¿·Á »ç¿ëÀÚ°¡ CLOSE ¸í·ÉÀ» »ç¿ëÇÏ¿© ¸í½ÃÀûÀ¸·Î ´ÝÁö ¾Ê´Â ÇÑ ÇÁ·Î¼¼½º°¡ Áö¼ÓµÇ´Â µ¿¾È ¿·Á ÀÖ½À´Ï´Ù. ÆÄÀÏÀÌ ¿·Á ÀÖ´Â µ¿¾È¿¡´Â ¿µ±¸ ÇÁ·Î¼¼½º ÆÄÀÏ¿¡ ´ëÇÑ OpenVMS RMS Á¦ÇÑÀÇ ´ë»óÀÌ µË´Ï´Ù.
ÆÄÀÏÀ» ¿ ¶§ OPEN ¸í·ÉÀº ù ¹ø° ¸Å°³ º¯¼ö·Î ÁöÁ¤µÈ ³í¸® À̸§À» µÎ ¹øÀç ¸Å°³ º¯¼ö·Î ÁöÁ¤µÈ ÆÄÀÏ¿¡ ÇÒ´çÇÏ°í ±× À̸§À» ÇÁ·Î¼¼½º ³í¸® À̸§ Å×ÀÌºí¿¡ ÀúÀåÇÕ´Ï´Ù. ÀÌÈÄÀÇ READ, WRITE, CLOSE ¸í·É¿¡¼´Â ÀÌ ³í¸® À̸§À» »ç¿ëÇÏ¿© ÆÄÀÏÀ» ÂüÁ¶ÇÕ´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼ OPEN ¸í·ÉÀº INFILEÀ̶ó´Â ³í¸® À̸§À» DISK4:[MURPHY]STATS.DAT¿¡ ÇÒ´çÇÕ´Ï´Ù.
$ OPEN/READ INFILE DISK4:[MURPHY]STATS.DAT
ÁÖ OPEN ¸í·ÉÀÇ ³í¸® À̸§Àº °íÀ¯ÇÑ À̸§À̶ó¾ß ÇÕ´Ï´Ù. OPEN ¸í·ÉÀÌ ÀÛµ¿ÇÏÁö ¾Ê°í Ʋ¸° Á¡ÀÌ ¾ø´Â °ÍÀ¸·Î »ý°¢µÇ´Â °æ¿ì¿¡´Â OPEN ¸í·ÉÀÇ ³í¸® À̸§À» º¯°æÇϽʽÿÀ. ³í¸® À̸§ Á¤ÀǸ¦ Ç¥½ÃÇÏ·Á¸é SHOW LOGICAL ¸í·ÉÀ» »ç¿ëÇÕ´Ï´Ù.
¸í·É ÇÁ·Î½ÃÀú°¡ ¿Ã¹Ù¸¥ ÆÄÀÏ¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖµµ·Ï ÇÏ·Á¸é ¿ÏÀüÇÑ ÆÄÀÏ ÁöÁ¤ ¹æ¹ý(¿¹: DISK4:[MURPHY]STATS.DAT)À» »ç¿ëÇϰųª ÆÄÀÏÀ» ¿±â Àü¿¡ SET DEFAULT ¸í·ÉÀ» »ç¿ëÇÏ¿© ¿Ã¹Ù¸¥ ÀåÄ¡¿Í µð·ºÅ丮¸¦ ÁöÁ¤ÇϽʽÿÀ.
¶ÇÇÑ, °øÀ¯ ÆÄÀÏÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. /SHARE ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇÏ¿© ´Ù¸¥ ¿·Á ÀÖ´Â ÆÄÀÏÀ» È°¼ºÈÇÕ´Ï´Ù. ±× ¿Ü¿¡µµ DCL ¸í·ÉÀÎ TYPE°ú SEARCH¸¦ »ç¿ëÇÏ¿© »ç¿ëÀÚ°¡ °øÀ¯ ÆÄÀÏ¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
OPEN/READ ¸í·ÉÀº ÆÄÀÏ¿¡ ³í¸® À̸§À» ÇÒ´çÇÏ°í ·¹ÄÚµå Æ÷ÀÎÅ͸¦ ÆÄÀÏ ½ÃÀÛ¿¡ µÓ´Ï´Ù. Àб⸦ À§ÇØ ÆÄÀÏÀ» ¿¸é ·¹Äڵ带 ÀÐÀ» ¼ö¸¸ ÀÖ°í ¾²Áö´Â ¸øÇÕ´Ï´Ù. ·¹Äڵ带 ÀÐÀ» ¶§¸¶´Ù Æ÷ÀÎÅÍ°¡ ´ÙÀ½ ·¹ÄÚµå·Î À̵¿ÇÕ´Ï´Ù.
´ÙÀ½ ¸í·É ÇÁ·Î½ÃÀú¿¡¼ OPEN/READ ¸í·ÉÀº STATS.DAT ÆÄÀÏÀ» ¿°í ³í¸® À̸§ÀÎ INFILEÀ» ÇÒ´çÇÕ´Ï´Ù.
$ OPEN/READ INFILE DISK4:[MURPHY]STATS.DAT
$ READ_FILE:
$ READ/END_OF_FILE=DONE INFILE DATA
$ GOTO READ_FILE
$ DONE:
$ CLOSE INFILE
$ EXIT
»õ ÆÄÀÏ¿¡ ¾²·Á¸é OPEN/WRITE ¸í·ÉÀ» »ç¿ëÇÕ´Ï´Ù. OPEN/WRITE ¸í·ÉÀº Àμâ ÆÄÀÏ Çü½ÄÀÇ ¼øÂ÷Àû ÆÄÀÏÀ» ¸¸µì´Ï´Ù. ÆÄÀÏÀ» À§ÇÑ ·¹ÄÚµå Çü½ÄÀº ·¹ÄÚµå Çì´õ°¡ 2¹ÙÀÌÆ®ÀÎ °íÁ¤ Á¦¾î º¯¼ö(VFC)ÀÔ´Ï´Ù. /WRITE ÇÑÁ¤ÀÚ´Â /APPEND ÇÑÁ¤ÀÚ¿Í ÇÔ²² »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
ÀÌ¹Ì Á¸ÀçÇÏ´Â ÆÄÀÏÀ» ÁöÁ¤ÇÏ´Â °æ¿ì OPEN/WRITE ¸í·ÉÀº ±âÁ¸ ÆÄÀϺ¸´Ù ¹öÀü ¹øÈ£°¡ Çϳª Å« »õ ÆÄÀÏÀ» ¿±´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼ ¸í·É ÇÁ·Î½ÃÀú´Â ¾²±â¸¦ À§ÇØ »ç¿ëÇÒ ¼ö ÀÖ´Â »õ ÆÄÀÏ NAMES.DAT¸¦ ¸¸µì´Ï´Ù.
$ OPEN/WRITE OUTFILE DISK4:[MURPHY]NAMES.DAT
$ UPDATE:
$ INQUIRE NEW_RECORD "Enter name"
$ WRITE OUTFILE NEW_RECORD
$ IF NEW_RECORD .EQS. "" THEN GOTO EXIT_CODE
$ GOTO UPDATE
$ EXIT_CODE:
$ CLOSE OUTFILE
$ EXIT
OPEN/APPEND ¸í·ÉÀº ±âÁ¸ ÆÄÀÏ ³¡¿¡ ·¹Äڵ带 Ãß°¡ÇÕ´Ï´Ù. Á¸ÀçÇÏÁö ¾Ê´Â ÆÄÀÏÀ» ¿·Á°í ÇÏ¸é ¿À·ù°¡ ¹ß»ýÇÏ°í ÆÄÀÏÀÌ ¿¸®Áö ¾Ê½À´Ï´Ù. /APPEND ÇÑÁ¤ÀÚ´Â /WRITE ÇÑÁ¤ÀÚ¿Í ÇÔ²² »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼´Â ±âÁ¸ ÆÄÀÏÀÎ NAMES.DATÀÇ ³¡¿¡ ·¹Äڵ尡 Ãß°¡µË´Ï´Ù.
$ OPEN/APPEND OUTFILE DISK4:[MURPHY]NAMES.DAT
$ INQUIRE NEW_RECORD "Enter name"$ WRITE OUTFILE NEW_RECORD
.
.
.
$ CLOSE OUTFILE
OPEN/READ/WRITE ¸í·ÉÀº ÆÄÀÏÀÇ Ã³À½¿¡ ·¹ÄÚµå Æ÷ÀÎÆ®¸¦ µÎ¾î ù ·¹Äڵ带 ÀÐÀ» ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù. ÀÌ ¹æ¹ýÀ» »ç¿ëÇÏ¿© ÆÄÀÏÀ» ¿¸é °¡Àå ÃÖ±Ù¿¡ Àоú´ø ·¹Äڵ常 ´ëüÇÒ ¼ö ÀÖ°í ÆÄÀÏÀÇ ³¡¿¡ »õ ·¹Äڵ带 ¾µ ¼ö ¾ø½À´Ï´Ù. ±× ¿Ü¿¡µµ ¼öÁ¤µÈ ·¹ÄÚµåÀÇ Å©±â°¡ ±³Ã¼µÇ´Â ·¹ÄÚµåÀÇ Å©±â¿Í ²À °°¾Æ¾ß ÇÕ´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼´Â ·¹ÄÚµå Æ÷ÀÎÅÍ°¡ STATS.DAT ÆÄÀÏÀÇ ½ÃÀÛ¿¡ ÀÖ¾î¼ Ã¹ ¹ø° ·¹Äڵ带 ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù.
$ OPEN/READ/WRITE FILE DISK4:[MURPHY]STATS.DAT
ÆÄÀÏ¿¡ ¾²·Á¸é ´ÙÀ½ ÀýÂ÷¸¦ »ç¿ëÇϽʽÿÀ.
|
|
|
|
|
·¹À̺íÀ» »ç¿ëÇÏ¿© ¾²±â ·çÇÁ¸¦ ½ÃÀÛÇÕ´Ï´Ù.
ÆÄÀÏ I/O´Â ´ÜÀÏ ·¹Äڵ带 ¾²°Å³ª Àд °æ¿ì°¡ ¾Æ´Ï¸é Ç×»ó ·çÇÁ·Î ¼öÇàµË´Ï´Ù.
|
|
¾²¿©Áú µ¥ÀÌÅ͸¦ ÀнÀ´Ï´Ù.
INQUIRE ¸í·ÉÀ̳ª READ ¸í·ÉÀ» »ç¿ëÇÏ¿© µ¥ÀÌÅ͸¦ ±âÈ£·Î ÀÐ¾î µéÀÔ´Ï´Ù.
|
|
µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÑ ±âÈ£¸¦ Á¡°ËÇÕ´Ï´Ù. ±âÈ£°¡ nullÀ̸é(¿¹: ReturnÅ°¸¦ ´©¸£°í ±× Çà¿¡ µ¥ÀÌÅ͸¦ ÀÔ·ÂÇÏÁö ¾ÊÀº °æ¿ì) ÆÄÀÏ¿¡ ¾²¿©Áú µ¥ÀÌÅÍÀÇ ³¡¿¡ À̸£·¶À¸¸ç ·çÇÁÀÇ ³¡À¸·Î °¡¾ß ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é °è¼ÓÇÕ´Ï´Ù.
|
|
WRITE ¸í·ÉÀ» »ç¿ëÇÏ¿© ±âÈ£ÀÇ °ª(ÇÑ °³ÀÇ ·¹ÄÚµå)À» ÆÄÀÏ¿¡ ¾¹´Ï´Ù.
|
|
·çÇÁÀÇ ½ÃÀÛÀ¸·Î µ¹¾Æ°©´Ï´Ù.
ÆÄÀÏ¿¡ ¾µ µ¥ÀÌÅÍ°¡ ¾øÀ» ¶§±îÁö ·çÇÁ ³»¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù.
|
|
·çÇÁ¸¦ ³¡³»°í ÆÄÀÏÀ» ´Ý½À´Ï´Ù.
|
´ÙÀ½ ¸í·É ÇÁ·Î½ÃÀú´Â »õ ÆÄÀÏ STATS.DAT¿¡ µ¥ÀÌÅ͸¦ ¾¹´Ï´Ù. ±× À̸§ÀÇ ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì¿¡´Â »õ ¹öÀüÀÌ ¸¸µé¾îÁý´Ï´Ù.
$ ! Write a file
$ ON ERROR THEN EXIT ! Exit if the command
$ ! ! procedure cannot
$ ! ! open the file
$ OPEN/WRITE IN_FILE DISK4:[MURPHY]STATS.DAT ! Open the file
$ ON CONTROL_Y THEN GOTO END_WRITE ! Close the file if you
$ ! ! quit execution with
$ ! ! Ctrl/Y
$ ON ERROR THEN GOTO END_WRITE ! Close the file if an
$ ! ! error occurs
$WRITE: ! Begin the loop
$ INQUIRE STUFF "Input data" ! Prompt for input
$ IF STUFF .EQS. "" THEN GOTO END_WRITE ! Test for the end of
$ ! ! the file
$ WRITE IN_FILE STUFF ! Write to the file
$ GOTO WRITE ! Go to the beginning
$END_WRITE: ! End the loop
$ ! !
$ CLOSE IN_FILE ! Close the file
°íÀ¯ÇÑ À̸§ÀÇ ÆÄÀÏ ¸¸µé±â
°íÀ¯ÇÑ À̸§ÀÇ ÆÄÀÏÀ» ¸¸µé·Á¸é ·º½ÃÄ® ÇÔ¼öÀÎ F$SEARCH¸¦ »ç¿ëÇÏ¿© µð·ºÅ丮¿¡ ÀÌ¹Ì Á¸ÀçÇÏ´Â À̸§ÀÎÁö È®ÀÎÇØ¾ß ÇÕ´Ï´Ù. F$SEARCH¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº
OpenVMS DCL DictionaryÀÇ ·º½ÃÄ® ÇÔ¼ö¿¡ ´ëÇÑ ¼³¸íÀ» ÂüÁ¶ÇϽʽÿÀ.
´ÙÀ½ ¸í·É ÇÁ·Î½ÃÀú´Â »ç¿ëÀÚ¿¡°Ô ÆÄÀÏ À̸§À» ÀÔ·ÂÇ϶ó´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÑ ´ÙÀ½ F$SEARCH ·º½ÃÄ® ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ±âº» µð·ºÅ丮¿¡ ÀÖ´Â À̸§ÀÎÁö °Ë»öÇÕ´Ï´Ù. ÀÌ¹Ì Á¸ÀçÇÏ´Â À̸§ÀÇ ÆÄÀÏÀÎ °æ¿ì¿¡´Â ERROR_1À¸·Î Á¦¾î°¡ Àü´ÞµÇ¾î ¡°The file already exists
¡±¶ó´Â ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÑ ÈÄ GET_NAME ·¹À̺í·Î Á¦¾î¸¦ ¹ÝȯÇÑ ÈÄ ´ÙÀ½ º¸±â¿¡ ³ªÅ¸³ °Íó·³ ´Ù¸¥ ÆÄÀÏ À̸§À» ÀÔ·ÂÇϵµ·Ï ÇÁ·ÒÇÁÆ®°¡ Ç¥½ÃµË´Ï´Ù.
$ ! FILES.COM
$ !
$GET_NAME:
$ INQUIRE FILE "File" ! Prompt the user for a file name
$ IF F$SEARCH (FILE) .NES. "" ! Make sure the file name is unique
$ THEN
$ WRITE SYS$OUTPUT "The file already exists"$ GOTO GET_NAME
$ ELSE
$ OPEN/WRITE IN_FILE 'FILE' ! Open the file with WRITE access
$ ENDIF
.
.
.
$ EXIT
´ÙÀ½ Àý¿¡¼´Â WRITE ¸í·É »ç¿ë ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.
WRITE ¸í·ÉÀ» À§ÇØ µ¥ÀÌÅ͸¦ ÁöÁ¤ÇÒ ¶§´Â
12Àå¿¡¼ ¼³¸íÇÑ ¹®ÀÚ¿ Ç¥Çö½Ä ±ÔÄ¢À» µû¸£½Ê½Ã¿À. ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î µ¥ÀÌÅ͸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¹®ÀÚ¿ Ç¥Çö½ÄÀ¸·Î ¾²¿©Áú µ¥ÀÌÅ͸¦ ÁöÁ¤ÇÕ´Ï´Ù. WRITE ¸í·ÉÀº ±âÈ£¿Í ·º½ÃÄ® ÇÔ¼ö¸¦ ÀÚµ¿À¸·Î ´ëüÇÕ´Ï´Ù.
¹®ÀÚ¿À» ¸®ÅÍ·² ¹®ÀÚ¿·Î Ãâ·Â ÆÄÀÏ¿¡ ¾¹´Ï´Ù. WRITE ¸í·ÉÀº ÀÎ¿ë ºÎÈ£·Î ¹ÀÎ ¹®ÀÚ¿¿¡ ´ëÇؼ´Â ±âÈ£ ´ëü¸¦ ¼öÇàÇÏÁö ¾Ê½À´Ï´Ù.
¸®ÅÍ·² ¹®ÀÚ¿À» ±âÈ£ À̸§°ú °áÇÕÇÕ´Ï´Ù. ±âÈ£ ´ëü¸¦ °Á¦ ½ÇÇàÇÏ·Á¸é ¹®ÀÚ¿ Àüü¸¦ ÀÎ¿ë ºÎÈ£ ¾È¿¡ ³Ö°í ¾îÆ÷½ºÆ®·ÎÇǸ¦ ±âÈ£ ¾Õ¿¡ µÎ °³, µÚ¿¡ ÇÑ °³ ³Ö¾î ½Äº°ÇÕ´Ï´Ù.
¸®ÅÍ·² ¹®ÀÚ¿À» ±âÈ£ À̸§°ú °áÇÕÇÏ´Â ´Ù¸¥ ¹æ¹ýÀº ´ÙÀ½ º¸±âó·³ ±âÈ£ ¾Õ°ú µÚ¿¡ ½°Ç¥¸¦ »ðÀÔÇÏ°í ±¸ºÐµÈ ±âÈ£ ÁÖÀ§¿¡ ÀÎ¿ë ºÎÈ£¸¦ ³Ö°í ¹®ÀÚ¿ Àüü¸¦ ÀÎ¿ë ºÎÈ£·Î ¹´Â °ÍÀÔ´Ï´Ù.
$ WRITE OUTFILE "Count is ",COUNT,"."
WRITE ¸í·ÉÇà¿¡ ¾îÆ÷½ºÆ®·ÎÇǸ¦ »ç¿ëÇÏ¿© ±âÈ£ ´ëü¸¦ °Á¦ ½ÇÇàÇÕ´Ï´Ù.
¾îÆ÷½ºÆ®·ÎÇǸ¦ »ç¿ëÇÏ¿© ¸®ÅÍ·² ¹®ÀÚ¿°ú ·º½ÃÄ® ÇÔ¼ö¸¦ °áÇÕÇÏ¿© ¹®ÀÚ¿ ³»¿¡¼ ±âÈ£ ´ëü¸¦ °Á¦ ½ÇÇàÇÕ´Ï´Ù.
$! Define symbols
$!
$ CREATED = "File created April 15, 2002"
$ COUNT = 4
$ P4 = "fourth parameter"
$!
$! Open the file DATA.OUT for writing
$!
$ OPEN/WRITE OUTFILE DISK4:[MURPHY]DATA.OUT
$!
$ WRITE OUTFILE CREATED
[1]
$ WRITE OUTFILE "CREATED"
[2]
$!
$ WRITE OUTFILE "Count is ''COUNT'."
[3]
$ WRITE OUTFILE P'COUNT'
[4]
$!
$ WRITE OUTFILE "Mode is ''f$mode()'"
[5]
$!
$ CLOSE OUTFILE
$ TYPE DISK4:[MURPHY]DATA.OUT
Return [6]
File created April 15, 2002
CREATED
Count is 4.
fourth parameter
Mode is INTERACTIVE
$
À§ÀÇ º¸±â¿¡¼ ÁÖ¸ñÇÒ »çÇ×Àº ´ÙÀ½°ú °°½À´Ï´Ù.
[1] ¹®ÀÚ¿ Ç¥Çö½ÄÀ¸·Î ¾²¿©Áú µ¥ÀÌÅ͸¦ ÁöÁ¤ÇÕ´Ï´Ù.
[2] ¹®ÀÚ¿
CREATED¸¦ ¸®ÅÍ·² ¹®ÀÚ¿·Î Ãâ·Â ÆÄÀÏ¿¡ ¾¹´Ï´Ù.
[3] ¸®ÅÍ·² ¹®ÀÚ¿À» ±âÈ£ À̸§°ú °áÇÕÇÕ´Ï´Ù.
[4] WRITE ¸í·ÉÇà¿¡ ¾îÆ÷½ºÆ®·ÎÇǸ¦ »ç¿ëÇÏ¿© ±âÈ£ ´ëü¸¦ °Á¦ ½ÇÇàÇÕ´Ï´Ù. ÀÌ º¸±â¿¡¼ WRITE ¸í·ÉÀº COUNT ±âÈ£¸¦ °ªÀ¸·Î ´ëüÇÏ°í ±× °á°úÀÎ ¹®ÀÚ¿(P4)¿¡ ´ëÇØ ±âÈ£ ´ëü¸¦ ¼öÇàÇÕ´Ï´Ù.
[5] ¸®ÅÍ·² ¹®ÀÚ¿°ú ·º½ÃÄ® ÇÔ¼ö¸¦ °áÇÕÇÕ´Ï´Ù.
[6] ¾Õ¿¡ ³ª¿À´Â WRITE ¸í·É¿¡ ÀÇÇØ Ãâ·Â ÆÄÀÏ DATA.OUT¿¡ ¾²¿©Áø µ¥ÀÌÅ͸¦ Ç¥½ÃÇÕ´Ï´Ù.
WRITE ¸í·ÉÀº ·¹Äڵ带 ¾²°í ·¹ÄÚµå Æ÷ÀÎÅ͸¦ ±× ·¹ÄÚµå ´ÙÀ½À¸·Î À̵¿ÇÕ´Ï´Ù.
WRITE ¸í·ÉÀ» »ç¿ëÇÏ¿© 2,048¹ÙÀÌÆ® ±æÀÌÀÇ ·¹ÄÚµå±îÁö ¾µ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ Á¶°Ç Áß Çϳª°¡ Á¸ÀçÇÏ´Â °æ¿ì¿¡´Â ·¹Äڵ带 ¾µ ¶§ /SYMBOL ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇϽʽÿÀ.
·¹Äڵ尡 1,024¹ÙÀÌÆ®º¸´Ù ±ä °æ¿ì
WRITE ¸í·É¿¡ Àִ ǥÇö½ÄÀÌ 255¹ÙÀÌÆ®º¸´Ù ±ä °æ¿ì
±ä ·¹ÄÚµå ¾²±â¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº
OpenVMS DCL DictioanryÀÇ WRITE ¸í·É¿¡ ´ëÇÑ ¼³¸íÀ» ÂüÁ¶ÇϽʽÿÀ.
»õ ·¹Äڵ带 »ðÀÔÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ·¹Äڵ带 º¯°æÇÏ´Â °æ¿ì¿¡´Â WRITE ¸í·ÉÀ» /UPDATE ÇÑÁ¤ÀÚ¿Í ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. /UPDATE ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇÏ·Á¸é Àбâ¿Í ¾²±â¸¦ ¸ðµÎ ÇÒ ¼ö ÀÖµµ·Ï ÆÄÀÏÀ» ¿¾î¾ß ÇÕ´Ï´Ù.
·¹Äڵ带 ÀÐ°í ±× ³»¿ëÀ» ±âÈ£¿¡ ÇÒ´çÇÏ·Á¸é READ ¸í·ÉÀ» »ç¿ëÇÕ´Ï´Ù. READ ¸í·ÉÀ» »ç¿ëÇÏ¿© ±æÀÌ°¡ 1,024ÀÚ ÀÌÇÏÀÎ ·¹Äڵ带 ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù. ÆÄÀÏ¿¡¼ µ¥ÀÌÅ͸¦ ÀÐÀ¸·Á¸é ´ÙÀ½ ÀýÂ÷¸¦ »ç¿ëÇϽʽÿÀ.
|
|
|
Àб⸦ À§ÇØ ÆÄÀÏÀ» ¿±´Ï´Ù.
|
|
·¹À̺íÀ» »ç¿ëÇÏ¿© Àб⠷çÇÁ¸¦ ½ÃÀÛÇÕ´Ï´Ù.
ÆÄÀÏ I/O´Â ´ÜÀÏ ·¹Äڵ带 ¾²°Å³ª Àд °æ¿ì°¡ ¾Æ´Ï¸é Ç×»ó ·çÇÁ·Î ¼öÇàµË´Ï´Ù.
|
|
ÆÄÀÏ¿¡¼ µ¥ÀÌÅ͸¦ ÀнÀ´Ï´Ù.
READ ¸í·ÉÀ» /END_OF_FILE ÇÑÁ¤ÀÚ¿Í ÇÔ²² »ç¿ëÇÏ¿© ·¹Äڵ带 ÀÐ°í ±× ³»¿ëÀ» ±âÈ£¿¡ ÇÒ´çÇÕ´Ï´Ù. /END_OF_FILE ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇϸé ÆÄÀÏ ³¡¿¡ µµ´ÞÇÒ ¶§ /END_OF_FILE ÇÑÁ¤ÀÚ¿¡ ÀÇÇØ ÁöÁ¤µÈ ·¹À̺í·Î Á¦¾î°¡ Àü´ÞµË´Ï´Ù. ÀϹÝÀûÀ¸·Î »ç¿ëÀÚ°¡ Àб⠷çÇÁÀÇ ³¡À» Ç¥½ÃÇÏ´Â ·¹À̺íÀ» ÁöÁ¤ÇÕ´Ï´Ù.
|
|
ÆÄÀÏÀ» ¼øÂ÷ÀûÀ¸·Î ÀÐÀ» ¶§´Â ÇöÀç ·¹Äڵ带 ´ÙÀ½ ·¹Äڵ带 Àбâ Àü¿¡ ó¸®ÇÕ´Ï´Ù.
|
|
·çÇÁÀÇ Ã³À½À¸·Î µ¹¾Æ°©´Ï´Ù.
ÆÄÀÏ ³¡¿¡ À̸¦ ¶§±îÁö ·çÇÁ¿¡ ³²¾Æ ÀÖ½À´Ï´Ù.
|
|
·çÇÁ¸¦ Á¾·áÇÏ°í ÆÄÀÏÀ» ´Ý½À´Ï´Ù.
|
´ÙÀ½ ¸í·É ÇÁ·Î½ÃÀú´Â STATS.DAT ÆÄÀÏÀÇ °¢ ·¹Äڵ带 Àаí ó¸®ÇÕ´Ï´Ù. end-of-file »óÅ°¡ ¹ÝȯµÉ ¶§±îÁö READ ¸í·ÉÀ» ¹Ýº¹ÇÏ¿© ½ÇÇàÇÑ ´ÙÀ½ END_READ¶ó´Â ·¹À̺íÀÌ ÀÖ´Â ÇàÀ¸·Î ºÐ±âµË´Ï´Ù.
$ OPEN/READ INFILE DISK4:[MURPHY]STATS.DAT !Open the file
$ !
$READ_DATA: !Begin the loop
$ READ/END_OF_FILE=END_READ INFILE RECORD !Read a record; test for
$ ! end of file
$ ! Process the data
.
.
.
$ GOTO READ_DATA !Go to the beginning
$ ! of the loop
$END_READ: !End of loop
$ CLOSE INFILE !Close the file
$ EXIT
READ ¸í·ÉÀ» À§ÇÑ ±âÈ£ À̸§À» ÁöÁ¤ÇÏ¸é ¸í·É ÀÎÅÍÇÁ¸®ÅÍ¿¡¼ ±× À̸§À» ÇöÀç ¸í·É ¼öÁØÀÇ ·ÎÄà ±âÈ£ Å×ÀÌºí¿¡ ÀúÀåÇÕ´Ï´Ù. µÎ °³ ÀÌ»óÀÇ READ ¸í·ÉÀ» À§ÇØ µ¿ÀÏÇÑ ±âÈ£ À̸§À» »ç¿ëÇÏ´Â °æ¿ì¿¡´Â °¢ READ ¸í·ÉÀÌ ±âÈ£ À̸§ °ªÀ» ÀçÁ¤ÀÇÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ¾ÕÀÇ º¸±â¿¡¼ READ ¸í·ÉÀº ·çÇÁ¸¦ Åë°úÇÒ ¶§¸¶´Ù ÀÔ·Â ÆÄÀÏÀÎ STATS.DAT¿¡¼ »õ ·¹Äڵ带 ÀÐÀº ´ÙÀ½ ÀÌ ·¹Äڵ带 »ç¿ëÇÏ¿© RECORD ±âÈ£ÀÇ °ªÀ» ÀçÁ¤ÀÇÇÕ´Ï´Ù.
ÆÄÀÏ¿¡¼ ÀÐÀ» ¶§´Â ÀϹÝÀûÀ¸·Î ÆÄÀÏ ³¡¿¡ µµ´ÞÇÒ ¶§±îÁö °¢ ·¹Äڵ带 Àаí ó¸®ÇÕ´Ï´Ù. /END_OF_FILE ÇÑÁ¤ÀÚ¸¦ READ ¸í·É°ú ÇÔ²² »ç¿ëÇÏ¿© ÆÄÀÏ¿¡¼ ·¹Äڵ带 Àаí ó¸®ÇÑ ´ÙÀ½ ¸ðµç ·¹Äڵ带 ´Ù ÀÐÀ¸¸é Á¾·áµÇ´Â ·çÇÁ¸¦ ±¸¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
/END_OF_FILE ÇÑÁ¤ÀÚ¸¦ À§ÇØ ÁöÁ¤ÇÏ´Â ·¹ÀÌºí¿¡´Â GOTO ¸í·ÉÀ» À§ÇØ ÁöÁ¤µÈ ·¹À̺í°ú µ¿ÀÏÇÑ ±ÔÄ¢ÀÌ Àû¿ëµË´Ï´Ù. GOTO ¸í·É¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº
13ÀåÀ» ÂüÁ¶ÇϽʽÿÀ.
READ ¸í·ÉÀ» ·çÇÁ¿¡¼ »ç¿ëÇÒ ¶§´Â Ç×»ó /END_OF_FILE ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é OpenVMS RMS(Record Management Services)¿¡¼ end-of-fileÀ» ³ªÅ¸³»´Â ¿À·ù Á¶°ÇÀÌ ¹ÝȯµÉ ¶§ ¸í·É ÀÎÅÍÇÁ¸®ÅÍ¿¡¼ ÇöÀç ON ¸í·É¿¡ ÀÇÇØ ÁöÁ¤µÈ ¿À·ù Á¶Ä¡¸¦ ¼öÇàÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, OpenVMS RMS¿¡¼ %RMS-E-EOF ¿À·ù »óŸ¦ ¹ÝȯÇÏ¸é ¸í·É ÇÁ·Î½ÃÀú¿¡¼ ÀÚüÀûÀ¸·Î ¿À·ù¸¦ ó¸®ÇÏÁö ¾Ê´Â ÇÑ ±× ÇÁ·Î½ÃÀú´Â Á¾·áµË´Ï´Ù.
/INDEX ¹× /KEY ÇÑÁ¤ÀÚ »ç¿ë
À妽ºµÈ ¼øÂ÷Àû ÆÄÀÏ¿¡¼ ·¹Äڵ带 ÀÓÀÇ·Î ÀÐÀ¸·Á¸é READ ¸í·ÉÀ» /INDEX ¹× /KEY ÇÑÁ¤ÀÚ¿Í ÇÔ²² »ç¿ëÇÕ´Ï´Ù. ÀÌ µÎ ÇÑÁ¤ÀÚ´Â À妽º¿¡¼ ÁöÁ¤µÈ Å°¸¦ ã¾Æ ±× Å°¿Í ¿¬°üµÈ ·¹Äڵ带 ¹ÝȯÇÔÀ¸·Î½á ÆÄÀÏ¿¡¼ ·¹Äڵ带 Àеµ·Ï ÁöÁ¤ÇÕ´Ï´Ù. À妽º¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ±âº» À妽º(0)°¡ »ç¿ëµË´Ï´Ù.
·¹Äڵ带 ÀÓÀÇ·Î ÀÐÀº ÈÄ READ ¸í·ÉÀ» /KEY ¶Ç´Â /INDEX ÇÑÁ¤ÀÚ ¾øÀÌ »ç¿ëÇÏ¿© ÆÄÀÏÀÇ ³ª¸ÓÁö ºÎºÐÀ» ¼øÂ÷ÀûÀ¸·Î ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù.
READ ¸í·É°ú ÇÔ²² /DELETE ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇÏ¿© À妽ºµÈ ¼øÂ÷Àû ÆÄÀÏ¿¡¼ ·¹Äڵ带 »èÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù. /DELETE ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇÏ¸é ·¹Äڵ带 ÀÐÀº ÈÄ ±× ·¹Äڵ尡 ÆÄÀÏ¿¡¼ »èÁ¦µË´Ï´Ù. ÁÖ¾îÁø Å°¿¡ ÀÇÇØ ÁöÁ¤µÈ ·¹Äڵ带 »èÁ¦ÇÏ·Á¸é /DELETE ÇÑÁ¤ÀÚ¸¦ /INDEX ¹× /KEY ÇÑÁ¤ÀÚ¿Í ÇÔ²² »ç¿ëÇÕ´Ï´Ù.
/DELETE, /INDEX ¹× /KEY ÇÑÁ¤ÀÚ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº
OpenVMS DCL DictionaryÀÇ READ ¸í·É¿¡ ´ëÇÑ ¼³¸íÀ» ÂüÁ¶ÇϽʽÿÀ.
CLOSE ¸í·ÉÀ» »ç¿ëÇÏ¿© ÆÄÀÏÀ» ´Ý°í OPEN ¸í·ÉÀ¸·Î ¸¸µé¾îÁø ³í¸® À̸§ÀÇ ÇÒ´çÀ» Ãë¼ÒÇÕ´Ï´Ù. ¸í·É ÇÁ·Î½ÃÀú¸¦ Á¾·áÇϱâ Àü¿¡ ¸í·É ÇÁ·Î½ÃÀú¿¡¼ ¿¬ ¸ðµç ÆÄÀÏÀ» ´Ý¾Æ¾ß ÇÕ´Ï´Ù. ¿¸° ÆÄÀÏÀ» ´ÝÁö ¾ÊÀ¸¸é ¸í·É ÇÁ·Î½ÃÀú¸¦ Á¾·áÇÒ ¶§ ÆÄÀÏÀÌ ¿¸° ä·Î ³²°Ô µÇ°í ±× ¿¸° ÆÄÀÏ¿¡ ÇÒ´çµÈ ³í¸® À̸§ÀÌ ÇÁ·Î¼¼½º ³í¸® À̸§ Å×ÀÌºí¿¡¼ »èÁ¦µÇÁö ¾Ê½À´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼ CLOSE ¸í·ÉÀº STATS.DAT ÆÄÀÏÀ» ´Ý°í ³í¸® À̸§ÀÎ INFILEÀÇ ÇÒ´çÀ» Ãë¼ÒÇÕ´Ï´Ù.
$ OPEN INFILE DISK4:[MURPHY]STATS.DAT
.
.
.
$ CLOSE INFILE
ÀÌ Àý¿¡¼´Â ´ÙÀ½ ¼¼ °¡Áö ÆÄÀÏ ¼öÁ¤ ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.
·¹Äڵ带 ¾÷µ¥ÀÌÆ®ÇÏ¿© ¼öÁ¤ÇÒ ¶§´Â ÆÄÀÏ¿¡ ÀÖ´Â ÀûÀº ¼öÀÇ ·¹Äڵ忡 ´ëÇØ °£´ÜÇÑ »çÇ×À» º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¹æ¹ýÀ¸·Î´Â ÆÄÀÏÀÇ ·¹ÄÚµå Å©±â³ª ·¹ÄÚµå ¼ö¸¦ º¯°æÇÒ ¼ö ¾øÀ¸¹Ç·Î µ¥ÀÌÅÍ ÆÄÀÏ°ú °°ÀÌ Çü½ÄÈµÈ ·¹Äڵ尡 ÀÖ´Â ÆÄÀÏÀÇ °æ¿ì¿¡¸¸ ÀÌ ¹æ¹ýÀ» »ç¿ëÇϽʽÿÀ.
ÆÄÀÏ¿¡¼ °£´ÜÇÑ »çÇ×À» º¯°æÇÏ·Á¸é ´ÙÀ½ ÀýÂ÷¸¦ »ç¿ëÇϽʽÿÀ.
|
|
|
Àбâ¿Í ¾²±â°¡ °¡´ÉÇϵµ·Ï ÆÄÀÏÀ» ¿±´Ï´Ù.
|
|
READ ¸í·ÉÀ» »ç¿ëÇÏ¿© ¼öÁ¤ÇÏ·Á´Â ·¹Äڵ忡 µµ´ÞÇÒ ¶§±îÁö ÆÄÀÏÀ» ÀнÀ´Ï´Ù.
|
|
¼øÂ÷Àû ÆÄÀÏ¿¡¼´Â ÀÌ ·¹ÄÚµå ÅؽºÆ®ÀÇ Å©±â°¡ ¿ø·¡ ·¹ÄÚµå¿Í ²À°°¾Æ¾ß ÇÕ´Ï´Ù. ¼öÁ¤ÇÑ ·¹ÄÚµåÀÇ ÅؽºÆ®°¡ ´õ ªÀº °æ¿ì¿¡´Â ¿ø·¡ ·¹ÄÚµå¿Í °°Àº ±æÀÌ°¡ µÉ ¶§±îÁö ³¡¿¡ °ø¹éÀ» Ãß°¡ÇϽʽÿÀ. ¼öÁ¤ÇÑ ·¹ÄÚµå ÅؽºÆ®°¡ ´õ ±ä °æ¿ì¿¡´Â »õ ÆÄÀÏÀ» ¸¸µé¾î¾ß ÇÕ´Ï´Ù.
|
|
WRITE/UPDATE ¸í·ÉÀ» »ç¿ëÇÏ¿© ¼öÁ¤ÇÑ ·¹Äڵ带 ÆÄÀÏ¿¡ ´Ù½Ã ¾¹´Ï´Ù.
|
|
º¯°æÇÏ·Á´Â ¸ðµç ·¹Äڵ带 º¯°æÇÒ ¶§±îÁö 2 ´Ü°è¿Í 4 ´Ü°è¸¦ ¹Ýº¹ÇÕ´Ï´Ù.
|
|
CLOSE ¸í·ÉÀ» »ç¿ëÇÏ¿© ÆÄÀÏÀ» ´Ý½À´Ï´Ù.
·¹Äڵ尡 º¯°æµÇ¾úÁö¸¸ ÆÄÀÏÀÇ ¹öÀü ¹øÈ£´Â ÆÄÀÏÀ» ´ÝÀº ÈÄ¿¡µµ ´Þ¶óÁöÁö ¾Ê½À´Ï´Ù.
|
´ÙÀ½ ¸í·É ÇÁ·Î½ÃÀú´Â ·¹Äڵ带 °³º°ÀûÀ¸·Î ÀÐ°í ¾÷µ¥ÀÌÆ®ÇÏ¿© ¼øÂ÷Àû ÆÄÀÏÀ» ¼öÁ¤ÇÏ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù.
$! Open STATS.DAT and assign it the logical name FILE
$!
$ OPEN/READ/WRITE FILE DISK4:[MURPHY]STATS.DAT
$ BEGIN_LOOP:
$! Read the next record from FILE into the symbol RECORD
$ READ/END_OF_FILE=END_LOOP FILE RECORD
$! Display the record and see if the user wants to change it
$! If yes, get the new record. If no, repeat loop
$!
$ PROMPT:
$ WRITE SYS$OUTPUT RECORD
$ INQUIRE/NOPUNCTUATION OK "Change? Y or N [Y] "
$ IF OK .EQS. "N" THEN GOTO BEGIN_LOOP
$ INQUIRE NEW_RECORD "New record"
$! Compare the old and new records
$! If old record is shorter than new record, issue an
$! error message. If old record and new record are the
$! same length, write the record. Otherwise pad the new
$! record with spaces so it is correct length
$!
$ OLD_LEN = F$LENGTH(RECORD)
$ NEW_LEN = F$LENGTH(NEW_RECORD)
$ IF OLD_LEN .LT. NEW_LEN THEN GOTO ERROR
$ IF OLD_LEN .EQ. NEW_LEN THEN GOTO WRITE_RECORD
$ SPACES = " "
$ PAD = F$EXTRACT(0,OLD_LEN-NEW_LEN,SPACES)
$ NEW_RECORD = NEW_RECORD + PAD
$!
$ WRITE_RECORD:
$ WRITE/UPDATE FILE NEW_RECORD
$ GOTO BEGIN_LOOP
$!
$ ERROR:
$ WRITE SYS$OUTPUT "Error -- New record is too long"
$ GOTO PROMPT
$!
$ END_LOOP:
$ CLOSE FILE
$ EXIT
½Ã½ºÅÛ¿¡¼´Â ·¹Äڵ带 Å͹̳ο¡ Ç¥½ÃÇÏ°í »ç¿ëÀÚ¿¡°Ô ¼öÁ¤ÇÒ °ÍÀÎÁö ¹¯½À´Ï´Ù. ·¹Äڵ带 ¼öÁ¤Çϱâ·Î ¼±ÅÃÇÏ´Â °æ¿ì¿¡´Â »õ ·¹Äڵ带 Å͹̳ο¡¼ ÀÐ¾î ¿ø·¡ ·¹ÄÚµå¿Í ±æÀ̸¦ ºñ±³ÇÕ´Ï´Ù. ¿ø·¡ ·¹ÄÚµåÀÇ ±æÀÌ°¡ ´õ ±æ¸é »õ ·¹Äڵ忡 °ø¹éÀ» Ãß°¡ÇÏ¿© °°Àº Å©±â·Î ¸¸µì´Ï´Ù. ¿ø·¡ ·¹Äڵ尡 ´õ ªÀ¸¸é ¿À·ù ¸Þ½ÃÁö°¡ Ç¥½ÃµÇ°í »õ ·¹Äڵ带 À§ÇÑ ÇÁ·ÒÇÁÆ®°¡ ´Ù½Ã ³ªÅ¸³³´Ï´Ù.
ÆÄÀÏÀÇ ¸¹Àº ºÎºÐÀ» º¯°æÇÏ·Á¸é ÇØ´ç ÆÄÀÏÀ» Àб⠾׼¼½º¸¦ À§ÇØ ¿°í »õ ÆÄÀÏÀ» ¾²±â ¾×¼¼½º¸¦ À§ÇØ ¿±´Ï´Ù. »õ Ãâ·Â ÆÄÀÏÀ» ¸¸µå´Â °ÍÀ̹ǷΠ·¹ÄÚµå Å©±â¸¦ º¯°æÇϰųª ·¹Äڵ带 Ãß°¡, »èÁ¦ ¶Ç´Â »ðÀÔÇÒ ¼ö ÀÖ½À´Ï´Ù.
OPEN/WRITE ¸í·ÉÀ» »ç¿ëÇÏ¿© »õ ÆÄÀÏÀ» ¾²±â ¾×¼¼½º¸¦ À§ÇØ ¿±´Ï´Ù. »õ ÆÄÀÏÀº ¿ø·¡ ÆÄÀÏ À̸§°ú °°Àº À̸§À» »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ¹öÀü ¹øÈ£´Â ÀÌÀü ÆÄÀϺ¸´Ù Çϳª À§·Î ÇÕ´Ï´Ù.
ÁÖ ¿Ã¹Ù¸¥ ÆÄÀÏÀ» ¿¾î¼ Àеµ·Ï ÇÏ·Á¸é ¾²±â ¾×¼¼½º¸¦ À§ÇÑ »õ ¹öÀüÀ» ¿±â Àü¿¡ Àб⠾׼¼½º¸¦ À§ÇØ ±âÁ¸ ÆÄÀÏÀ» ¸ÕÀú ¿¾î¾ß ÇÕ´Ï´Ù.
¼öÁ¤ÇÒ ¼ö ÀÖ´Â ÆÄÀÏÀ» ¸¸µé·Á¸é ´ÙÀ½ ÀýÂ÷¸¦ »ç¿ëÇϽʽÿÀ.
|
|
|
Àб⠾׼¼½º¸¦ À§ÇØ ÆÄÀÏÀ» ¿±´Ï´Ù.
ÀÌ ÆÄÀÏÀº ¼öÁ¤ÇÏ·Á´Â ÀÔ·Â ÆÄÀÏÀÔ´Ï´Ù.
|
|
¾²±â ¾×¼¼½º¸¦ À§ÇØ »õ ÆÄÀÏÀ» ¿±´Ï´Ù.
ÀÌ ÆÄÀÏÀº »õ·Î ¸¸µå´Â Ãâ·Â ÆÄÀÏÀÔ´Ï´Ù. Ãâ·Â ÆÄÀÏ¿¡ ÀÔ·Â ÆÄÀÏ°ú °°Àº À̸§À» »ç¿ëÇÏ´Â °æ¿ì¿¡´Â Ãâ·Â ÆÄÀÏÀÇ ¹öÀü ¹øÈ£°¡ ÀÔ·Â ÆÄÀϺ¸´Ù Çϳª À§°¡ µË´Ï´Ù.
|
|
READ ¸í·ÉÀ» »ç¿ëÇÏ¿© ¼öÁ¤ÇÏ·Á´Â ÆÄÀÏÀÇ °¢ ·¹Äڵ带 ÀнÀ´Ï´Ù.
¿ø·¡ ÆÄÀÏ¿¡¼ °¢ ·¹Äڵ带 ÀÐÀ» ¶§ ó¸® ¹æ¹ýÀ» °áÁ¤ÇÕ´Ï´Ù.
|
|
·¹Äڵ带 ³¡±îÁö Àаí ó¸®ÇÕ´Ï´Ù.
|
|
CLOSE ¸í·ÉÀ» »ç¿ëÇÏ¿© ÀÔ·Â ÆÄÀÏ°ú Ãâ·Â ÆÄÀÏÀ» ¸ðµÎ ´Ý½À´Ï´Ù.
|
´ÙÀ½ Ç¥¿¡¼ RECORD ±âÈ£´Â ¿ø·¡ ÆÄÀÏ¿¡¼ÀÇ ·¹ÄÚµå Àб⸦ Æ÷ÇÔÇÕ´Ï´Ù.
|
|
|
°°Àº ±âÈ£¸¦ »õ ÆÄÀÏ¿¡ ¾¹´Ï´Ù.
|
|
INQUIRE ¸í·ÉÀ» »ç¿ëÇÏ¿© ´Ù¸¥ ·¹Äڵ带 ±âÈ£¿¡ ÀоîµéÀÎ ´ÙÀ½ ¼öÁ¤ÇÑ ±âÈ£¸¦ »õ ÆÄÀÏ¿¡ ¾¹´Ï´Ù.
|
|
±âÈ£¸¦ »õ ÆÄÀÏ¿¡ ¾²Áö ¾Ê½À´Ï´Ù.
|
|
·çÇÁ¸¦ »ç¿ëÇÏ¿© ·¹Äڵ带 ±âÈ£·Î ÀоîµéÀÌ°í ±× ±âÈ£¸¦ »õ ÆÄÀÏ¿¡ ¾¹´Ï´Ù.
|
´ÙÀ½ º¸±â¿¡¼´Â NEW_FILE ±âÈ£°¡ »õ ÆÄÀÏ¿¡ ¾²¿©Áý´Ï´Ù.
$ ! No change
$ WRITE NEW_FILE RECORD
´ÙÀ½ º¸±â¿¡¼´Â INQUIRE ¸í·ÉÀ» »ç¿ëÇÏ¿© ¼öÁ¤ÇÑ ±âÈ£¸¦ »õ ÆÄÀÏ¿¡ ¾¹´Ï´Ù.
$ ! Change
$ INQUIRE NEW_RECORD "New record"
$ WRITE NEW_FILE NEW_RECORD
´ÙÀ½ º¸±â¿¡¼´Â ·çÇÁ¸¦ »ç¿ëÇÏ¿© ±âÈ£¸¦ »õ ÆÄÀÏ¿¡ ¾¹´Ï´Ù.
$ ! Insertion
$LOOP:
$ !Get new records to insert
$ INQUIRE NEW_RECORD "New record"
$ IF RECORD .EQS. "" THEN GOTO END_LOOP
$ WRITE NEW_FILE NEW_RECORD
$ GOTO LOOP
$END_LOOP:
´ÙÀ½ º¸±â´Â ÀÔ·Â ÆÄÀÏ¿¡¼ ·¹Äڵ带 Àаí ó¸®ÇÏ¿© Ãâ·Â ÆÄÀÏ¿¡ º¹»çÇÏ´Â ¸í·É ÇÁ·Î½ÃÀú¸¦ º¸¿© ÁÝ´Ï´Ù.
$! Open STATS.DAT for reading and assign it
$! the logical name INFILE
$! Open a new version of STATS.DAT for writing
$! and assign it the logical name OUTFILE
$!
$ OPEN/READ INFILE DISK4:[MURPHY]STATS.DAT
$ OPEN/WRITE OUTFILE DISK4:[MURPHY]STATS.DAT
$!
$ BEGIN_LOOP:
$! Read the next record from INFILE into the symbol RECORD
$!
$ READ/END_OF_FILE=END_LOOP INFILE RECORD
$! Display the record and see if the user wants to change it
$! If yes, get the new record
$! If no, write record directly to OUTFILE
$!
$ PROMPT:
$ WRITE SYS$OUTPUT RECORD
$ INQUIRE/NOPUNCTUATION OK "Change? Y or N [Y] "
$ IF OK .EQS. "N" THEN GOTO WRITE_RECORD
$ INQUIRE RECORD "New record"$!
$ WRITE_RECORD:
$ WRITE OUTFILE RECORD
$ GOTO BEGIN_LOOP
$!
$! Close input and output files
$ END_LOOP:
$ CLOSE INFILE
$ CLOSE OUTFILE
$ EXIT
±âÁ¸ ÆÄÀÏÀÇ ³¡¿¡ ·¹Äڵ带 Ãß°¡ÇÏ·Á¸é ´ÙÀ½ ¸í·É ÇÁ·Î½ÃÀú(OPEN/APPEND ¸í·É)¸¦ »ç¿ëÇϽʽÿÀ.
|
|
|
OPEN ¸í·ÉÀ» /APPEND ÇÑÁ¤ÀÚ¿Í ÇÔ²² »ç¿ëÇÏ¿© ·¹ÄÚµå Æ÷ÀÎÅÍ°¡ ÆÄÀÏ ³¡¿¡ À§Ä¡Çϵµ·Ï ÇÕ´Ï´Ù.
/APPEND ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇϸé ÆÄÀÏÀÇ »õ ¹öÀüÀÌ ¸¸µé¾îÁöÁö ¾Ê½À´Ï´Ù.
|
|
WRITE ¸í·ÉÀ» »ç¿ëÇÏ¿© »õ µ¥ÀÌÅÍ ·¹Äڵ带 ¾¹´Ï´Ù.
|
|
·¹Äڵ带 °è¼Ó Ãß°¡ÇÕ´Ï´Ù.
|
|
CLOSE ¸í·ÉÀ» »ç¿ëÇÏ¿© ÆÄÀÏÀ» ´Ý½À´Ï´Ù.
|
´ÙÀ½ ¸í·É ÇÁ·Î½ÃÀú´Â STATS.DAT ÆÄÀÏ ³¡¿¡ ·¹Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
$! Open STATS.DAT to append files and assign
$! it the logical name FILE
$!
$ OPEN/APPEND FILE DISK4:[MURPHY]STATS.DAT
$!
$ BEGIN_LOOP:
$! Obtain record to be appended and place this
$! record in the symbol RECORD
$!
$ PROMPT:
$ INQUIRE RECORD -
"Enter new record (press RET to quit) "
$ IF RECORD .EQS. "" THEN GOTO END_LOOP
$! Write record to FILE
$!
$ WRITE FILE RECORD
$ GOTO BEGIN_LOOP
$!
$! Close FILE and exit
$!
$ END_LOOP:
$ CLOSE FILE
$ EXIT
½Ã½ºÅÛ ¿À·ù ¸Þ½ÃÁö°¡ Ç¥½ÃµÇÁö ¾Êµµ·Ï ÇÏ°í ÁöÁ¤µÈ ·¹À̺í·Î Á¦¾î¸¦ Àü´ÞÇÏ·Á¸é /ERROR ÇÑÁ¤ÀÚ¸¦ OPEN, READ ¶Ç´Â WRITE ¸í·É°ú ÇÔ²² »ç¿ëÇÕ´Ï´Ù. ÀÔ·Â ¶Ç´Â Ãâ·Â ÀÛ¾÷ Áß¿¡ ¿À·ù°¡ ¹ß»ýÇϸé /ERROR ÇÑÁ¤ÀÚ´Â READ ¸í·É¿¡ ´ëÇÑ /END_OF_FILE ÇÑÁ¤ÀÚ ¿ÜÀÇ ¸ðµç ´Ù¸¥ ¿À·ù Á¦¾î ¹æ¹ýÀ» ¹«½ÃÇÕ´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼´Â /ERROR ÇÑÁ¤ÀÚ¸¦ OPEN ¸í·É°ú ÇÔ²² »ç¿ëÇÕ´Ï´Ù.
$ OPEN/READ/ERROR=CHECK FILE CONTINGEN.DOC
.
.
.
$ CHECK:
$ WRITE SYS$OUTPUT "Error opening file"
OPEN ¸í·ÉÀº CONTINGEN.DOC ÆÄÀÏÀ» Àбâ À§ÇØ ¿µµ·Ï ¿äûÇÕ´Ï´Ù. ÆÄÀÏÀ» ¿ ¼ö ¾ø´Â °æ¿ì(¿¹: ÆÄÀÏÀÌ ¾ø´Â °æ¿ì)¿¡´Â ¿À·ù »óŸ¦ ¹ÝȯÇÏ°í CHECK ·¹À̺í·Î Á¦¾î¸¦ Àü´ÞÇÕ´Ï´Ù.
/ERROR ÇÑÁ¤ÀÚ¿¡ ÀÇÇØ ÁöÁ¤µÈ ¿À·ù °æ·Î´Â ¸í·É ¼öÁØ¿¡ ´ëÇÑ ÇöÀçÀÇ ON »óŸ¦ ¹«½ÃÇÕ´Ï´Ù. ¿À·ù°¡ ¹ß»ýÇÏ°í ´ë»ó ·¹ÀÌºí¿¡ ¼º°øÀûÀ¸·Î Á¦¾î°¡ Àü´ÞµÇ¸é ¿¹¾àµÈ ±Û·Î¹ú ±âÈ£ÀÎ $STATUS¿¡ ¿À·ù Äڵ尡 º¸°üµË´Ï´Ù. ¿À·ù ó¸® ·çƾ¿¡ F$MESSAGE ·º½ÃÄ® ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© $STATUSÀÇ ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼´Â ·º½ÃÄ® ÇÔ¼öÀÎ F$MESSAGE¸¦ »ç¿ëÇÏ¿© F$STATUS ·º½ÃÄ®ÀÇ ³»¿ëÀ» Ç¥½ÃÇÕ´Ï´Ù.
$ OPEN/READ/ERROR=CHECK FILE 'P1'
.
.
.
$ CHECK:
$ ERR_MESSAGE = F$MESSAGE($STATUS)
$ WRITE SYS$OUTPUT "Error opening file: ",P1
$ WRITE SYS$OUTPUT ERR_MESSAGE
.
.
.
»ç¿ëÀÚ°¡ ¿À·ù Á¶Ä¡¸¦ ÁöÁ¤ÇÏÁö ¾Ê°í OPEN, READ, WRITE ¶Ç´Â CLOSE ¸í·ÉÀ» »ç¿ëÇÏ´Â µ¿¾È ¿À·ù°¡ ¹ß»ýÇÒ °æ¿ì¿¡´Â ÇöÀç ON ¸í·É Á¶Ä¡°¡ ÃëÇØÁý´Ï´Ù.
READ ¸í·É ½ÇÇà ½Ã end-of-file ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÏ´Â ¿À·ù Á¶Ä¡´Â ´ÙÀ½°ú °°Àº °æ·Î·Î °áÁ¤µÈ °ÍÀÔ´Ï´Ù.
/END_OF_FILE ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇÑ °æ¿ì¿¡´Â ÁöÁ¤µÈ ·¹À̺í·Î Á¦¾î°¡ Àü´ÞµË´Ï´Ù.
/END_OF_FILE ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇÏÁö ¾ÊÀº °æ¿ì¿¡´Â /ERROR ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇÏ¿© ÁöÁ¤ÇÑ ·¹À̺í·Î Á¦¾î°¡ Àü´ÞµË´Ï´Ù.
/END_OF_FILEÀ̳ª /ERROR ÇÑÁ¤ÀÚ¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀº °æ¿ì¿¡´Â ÇöÀç ON ¸í·É Á¶Ä¡°¡ ÃëÇØÁý´Ï´Ù.
¸í·É ÇÁ·Î½ÃÀúÀÇ Á¤»óÀûÀÎ ½ÇÇà È帧Àº ¼øÂ÷ÀûÀÔ´Ï´Ù. Áï, ÇÁ·Î½ÃÀúÀÇ ¸í·ÉµéÀÌ ÆÄÀÏ ³¡¿¡ µµ´ÞÇÒ ¶§±îÁö ¼ø¼´ë·Î ½ÇÇàµË´Ï´Ù. ±×·¯³ª, ƯÁ¤ ¸í·É¹® ½ÇÇà ¿©ºÎ³ª ÇÁ·Î½ÃÀú¸¦ °è¼Ó ½ÇÇàÇÒ Á¶°ÇÀ» Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ Àý¿¡¼ ¼³¸íÇÏ´Â ³»¿ëÀº ¾Æ·¡¿Í °°½À´Ï´Ù.
½ÇÇà È帧À» Á¦¾î ¶Ç´Â º¯°æÇÏ´Â µ¥ »ç¿ëÇÏ´Â DCL ¸í·É
IF ¸í·ÉÀ» »ç¿ëÇÏ¿© Ç¥Çö½Ä °ªÀ» °Ë»çÇÏ°í Ç¥Çö½Ä °á°ú°¡ Âü(true)ÀÏ ¶§ ¸í·ÉÀ̳ª ¸í·É ºí·ÏÀ» ½ÇÇàÇÕ´Ï´Ù. Ç¥Çö½Ä °á°ú°¡ °ÅÁþ(false)ÀÌ¸é ´ÙÀ½ Áß ÇÑ °¡Áö °á°ú°¡ ¹ß»ýÇÕ´Ï´Ù.
THEN ¸í·É µÚ¿¡ ÇϳªÀÇ ¸í·ÉÀÌ ³ª¿À¸é ±× ¸í·ÉÀÌ ½ÇÇàµÇÁö ¾Ê°í ±× ´ÙÀ½¿¡ ³ª¿À´Â ¸í·ÉÀÌ ½ÇÇàµË´Ï´Ù.
THEN ¸í·É µÚ¿¡ ¸í·É ºí·ÏÀÌ ³ª¿À°í ELSE ¸í·ÉÀÌ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é ENDIF ¸í·É ¹Ù·Î µÚ¿¡ ³ª¿À´Â ¸í·ÉÀÌ ½ÇÇàµË´Ï´Ù.
ELSE ¸í·ÉÀÌ ÁöÁ¤µÇ¾î ÀÖÀ¸¸é ELSE ¸í·É µÚ¿¡ ³ª¿À´Â ¸í·ÉÀ̳ª ¸í·É ºí·ÏÀÌ ½ÇÇàµË´Ï´Ù.
DCL¿¡¼ Á¦°øÇÏ´Â IF ¸í·ÉÀº µÎ °¡Áö Çü½ÄÀÌ ÀÖ½À´Ï´Ù. ù ¹ø° Çü½ÄÀº
13Àå¿¡¼ ¼³¸íÇÑ °Íó·³ IF ¸í·É¿¡ ÁöÁ¤µÈ Ç¥Çö½ÄÀÌ ÂüÀÏ ¶§ ´ÜÀÏ ¸í·ÉÀ» ½ÇÇàÇÏ´Â °ÍÀÔ´Ï´Ù.
µÎ ¹ø° IF Çü½ÄÀº ºí·Ï ±¸Á¶ Çü½ÄÀÔ´Ï´Ù. ºí·Ï ±¸Á¶ÀÇ IF ¸í·ÉÀº ÁöÁ¤µÈ Ç¥Çö½ÄÀÌ ÂüÀÌ°í ELSE ¹®ÀÌ ÀÖ´Â °æ¿ì µÎ °³ ÀÌ»óÀÇ ¸í·ÉÀ» ½ÇÇàÇÕ´Ï´Ù. ELSE ¹®Àº Ç¥Çö½ÄÀÌ °ÅÁþÀÎ °æ¿ì Çϳª ÀÌ»óÀÇ ¸í·ÉÀ» ½ÇÇàÇÕ´Ï´Ù.
Ç¥Çö½ÄÀÌ ÂüÀÏ ¶§ µÎ °³ ÀÌ»óÀÇ ¸í·ÉÀ» ½ÇÇàÇÏ·Á¸é THEN ¸í·ÉÀ» µ¿»ç(¾Õ¿¡ ´Þ·¯ ±âÈ£°¡ ÀÖ´Â DCL ¸í·É)·Î ÁöÁ¤ÇÏ°í ENDIF ¹®À» »ç¿ëÇÏ¿© °á°ú ºí·Ï ±¸Á¶ ¹®À» Á¾·áÇÕ´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼´Â THEN ¹®ÀÌ µ¿»ç·Î »ç¿ëµË´Ï´Ù.
$ IF expression
$ THEN
$ command
$ command
.
.
.
$ ENDIF
Ç¥Çö½ÄÀÌ °ÅÁþÀÏ ¶§ ÇÑ °³ ÀÌ»óÀÇ ¸í·ÉÀ» ½ÇÇàÇÏ·Á¸é ELSE ¹®À» µ¿»ç·Î ÁöÁ¤ÇÏ°í ENDIF ¹®À» »ç¿ëÇÏ¿© °á°ú ºí·Ï ±¸Á¶ ¹®À» Á¾·áÇÕ´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼´Â ELSE ¸í·ÉÀÌ µ¿»ç·Î »ç¿ëµË´Ï´Ù.
$ IF expression
$ THEN
$ command
$ command
.
.
.
$ ELSE
$ command
$ command
.
.
.
$ ENDIF
¸í·É ºí·ÏÀº °°Àº ¸í·É ÇÁ·Î½ÃÀú¿¡ ¸í·ÉÀ» µÑ °ÍÀÎÁö ¾Æ´Ï¸é ´Ù¸¥ ¸í·É ÇÁ·Î½ÃÀú¿¡ µÎ°í °Å±â¼ ½ÇÇàÇÒ °ÍÀÎÁö¿¡ µû¶ó ¸î °¡Áö ¹æ¹ýÀ¸·Î ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ÁöħÀ» µû¸£½Ê½Ã¿À.
¸í·ÉÀ» ±× ¸í·É ÇÁ·Î½ÃÀú¿¡ ±×´ë·Î µÎ´Â °æ¿ì¿¡´Â ´ÙÀ½ º¸±âó·³ THEN ¹® ´ÙÀ½¿¡ ³Ö½À´Ï´Ù.
$ IF condition
$ THEN command
command
.
.
.
$ ENDIF
¸í·ÉÀ» º°°³ÀÇ ÇÁ·Î½ÃÀú¿¡ µÎ·Á¸é ´ÙÀ½ º¸±âó·³ ±× ¸í·É ÇÁ·Î½ÃÀú¿¡ ´ëÇÑ È£ÃâÀ» THEN ¹®ÀÇ ÀϺηΠ¸¸µì´Ï´Ù.
$ IF condition
$ THEN @command_procedure
$ ELSE command
$ command
$ ENDIF
´ÙÀ½ º¸±âó·³ ºí·Ï ±¸Á¶°¡ ¾Æ´Ñ IF Çü½ÄÀ» ÁöÁ¤ÇÏ°í ÁöÁ¤µÈ Á¶°Ç¿¡ ºÎÇÕµÇ¸é ·¹ÀÌºí ¿µ¿ªÀ¸·Î °¡µµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù.
$ IF not condition THEN GOTO END_LABEL
.
.
.
$END_LABEL:
IF Ç¥Çö½ÄÀÇ °á°ú°¡ ÂüÀ̸é THEN ¸í·É ´ÙÀ½¿¡ ¿À´Â ¸í·É ºí·ÏÀ» ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸í·É ºí·ÏÀ» »ç¿ëÇÒ ¶§´Â THEN ¸í·ÉÀ» IF ¸í·É µÚÀÇ Çà¿¡ ù ¹ø° ¸í·ÉÀ¸·Î µÓ´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼´Â µÎ °³ÀÇ SET TERMINAL ¸í·ÉÀÌ ½ÇÇàµÇ°í F$MODE°¡ INTERACTIVE
¡±ÀÏ ¶§ PROCEED ·¹À̺í·Î Á¦¾î°¡ Àü´ÞµË´Ï´Ù. F$MODE°¡ INTERACTIVE
¡±°¡ ¾Æ´Ò ¶§´Â ÇÁ·Î½ÃÀú°¡ Á¾·áµË´Ï´Ù.
$ IF F$MODE () .EQS. "INTERACTIVE"$ THEN
$ SET TERMINAL/DEVICE=VT320
$ SET TERMINAL/WIDTH=132
$ GOTO PROCEED
$ ENDIF
$ EXIT
$PROCEED:
´ÙÀ½ º¸±â´Â IF ¸í·ÉÀ» ELSE ¸í·É°ú ÇÔ²² »ç¿ëÇÒ ¶§ ¸í·É ºí·ÏÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù.
$ INQUIRE DEV "Device to check"
$ IF F$GETDVI(DEV, "EXISTS")
$ THEN
$ WRITE SYS$OUTPUT "The device exists."
$ SHOW DEVICE 'DEV'
$ SET DEVICE/ERROR_LOGGING 'DEV'
$ ELSE
$ WRITE SYS$OUTPUT "The device does not exist."
$ WRITE SYS$OUTPUT "Error logging has not been enabled."
$ ENDIF
$ EXIT
Á¶°ÇÀÌ ÂüÀ̸é SYS$OUTPUT¿¡ ¸Þ½ÃÁö°¡ ¾²¿©Áö°í SHOW DEVICE¿Í SET DEVICE ¸í·ÉÀÌ ½ÇÇàµË´Ï´Ù. Á¶°ÇÀÌ ÂüÀÌ ¾Æ´Ï¸é SYS$OUTPUT¿¡ µÎ °³ÀÇ ¸Þ½ÃÁö°¡ ¾²¿©Áý´Ï´Ù.
IF-THEN-ELSE ±¸Á¶¸¦ »ç¿ëÇÒ ¶§´Â ´ÙÀ½ Á¦ÇÑ »çÇ×À» ÁöÅ°½Ê½Ã¿À.
ÁßøµÈ IF ¹®ÀÇ ¼öÁØÀº 15°³¸¦ ³ÑÀ¸¸é ¾ÈµË´Ï´Ù.
THEN ¹®À¸·Î ½ÃÀ۵Ǵ ¸í·É ºí·ÏÀº ELSE ¹®À̳ª ENDIF ¹®À¸·Î ³¡³À´Ï´Ù.
ELSE ¹®À¸·Î ½ÃÀ۵Ǵ ¸í·É ºí·ÏÀº ENDIF ¹®À¸·Î ³¡³À´Ï´Ù.
THEN ¹®À» IF ¹® µÚ¿¡ ù¹ø° ½ÇÇ๮À¸·Î Æ÷ÇÔ½Ãŵ´Ï´Ù.
THEN ¹®À̳ª ELSE ¹®À» Æ÷ÇÔÇÏ´Â Çà¿¡ ·¹À̺íÀ» ÁöÁ¤ÇÏÁö ¾Êµµ·Ï ÇÕ´Ï´Ù. ±×·¯³ª ENDIF ¹®À» Æ÷ÇÔÇÏ´Â Çà¿¡´Â ·¹À̺íÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸í·É ºí·Ï ³»¿¡¼ ºÐ±âÇÒ ¼ö ÀÖÁö¸¸ ´Ù¸¥ ¸í·É ºí·Ï Áß°£À¸·Î ºÐ±âÇÏ´Â °ÍÀº »ï°¡ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
IF ¸í·É µÚÀÇ Ç¥Çö½ÄÀº ³í¸®, »ê¼ú ¶Ç´Â ¹®ÀÚ¿ ¿¬»êÀÚ·Î ±¸ºÐµÈ ÇÑ °³ ÀÌ»óÀÇ ¼ýÀÚ »ó¼ö, ¹®ÀÚ¿ ¸®ÅÍ·², ±âÈ£ À̸§, ¶Ç´Â ·º½ÃÄ® ÇÔ¼ö·Î ÀÌ·ç¾îÁú ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ Áß ÇÑ °ªÀ» °¡Áö´Â Ç¥Çö½ÄÀº ÂüÀÔ´Ï´Ù.
Y, y, T, ¶Ç´Â t·Î ½ÃÀÛÇÏ´Â ¹®ÀÚ¿ °ª
Ȧ¼ö °ª Á¤¼öÀÎ ¼ýÀÚ¸¦ Æ÷ÇÔÇÏ´Â ¹®ÀÚ¿ °ª(¿¹: ¹®ÀÚ¿ 27
¡±)
´ÙÀ½ Áß ÇÑ °ªÀ» °¡Áö´Â Ç¥Çö½ÄÀº °ÅÁþÀÔ´Ï´Ù.
Y, y, T, ¶Ç´Â t ÀÌ¿ÜÀÇ ±ÛÀÚ·Î ½ÃÀÛÇÏ´Â ¹®ÀÚ¿ °ª
¦¼ö °ª Á¤¼öÀÎ ¼ýÀÚ¸¦ Æ÷ÇÔÇÏ´Â ¹®ÀÚ¿(¿¹: ¹®ÀÚ¿ 28
¡±)
IF ¸í·ÉÀ» À§ÇÑ Ç¥Çö½ÄÀ» ÀÛ¼ºÇÒ ¶§´Â ´ÙÀ½ ±ÔÄ¢À» µû¸£½Ê½Ã¿À.
IF ¹®¿¡ ±âÈ£¸¦ »ç¿ëÇÏ¸é ±× °ªÀÌ ÀÚµ¿À¸·Î ´ëüµË´Ï´Ù. ¹Ýº¹ º¯È¯À» °Á¦ ½ÇÇàÇÏÁö ¾Ê´Â ÇÑ ¾îÆ÷½ºÆ®·ÎÇÇ(')¸¦ ´ëü ¿¬»êÀÚ·Î »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù.
¹®ÀÚ¿ ºñ±³ ¿¬»êÀÚ´Â SÀÚ·Î ³¡³³´Ï´Ù. ¿¹¸¦ µé¸é, .EQS., .LTS., ¹× .GTS¿Í °°Àº ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© ¹®ÀÚ¿À» ºñ±³ÇÕ´Ï´Ù. ÀÌ¿¡ ºñÇØ .EQ., .LT., ¹× .GT. ¿¬»êÀÚ´Â Á¤¼ö¸¦ ºñ±³ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù.
µÎ ¹®ÀÚ¿ÀÌ °°Àº Áö °Ë»çÇÒ ¶§´Â ´ë/¼Ò¹®ÀÚ »ç¿ëÀÌ °°¾Æ¾ß ÀÏÄ¡¸¦ ãÀ» ¼ö ÀÖ½À´Ï´Ù. Áï, ¹®ÀÚ¿ COPY
¡±´Â ¹®ÀÚ¿ copy
¡±³ª CoPy
¡±¿Í ´Ù¸¨´Ï´Ù.
´ÙÀ½ º¸±â´Â IF ¸í·É°ú ÇÔ²² »ç¿ëÇÒ ¼ö Àִ ǥÇö½ÄÀ» º¸¿© ÁÝ´Ï´Ù. ´Ù¸¥ º¸±â´Â
OpenVMS DCL DictionaryÀÇ IF ¸í·É¿¡ ´ëÇÑ ¼³¸íÀ» ÂüÁ¶ÇϽʽÿÀ.
ù ¹ø° º¸±â¿¡¼´Â ³í¸® ¿¬»êÀÚ¸¦ »ç¿ëÇϸç THEN ¹® ´ÙÀ½¿¡ ¿À´Â ÇϳªÀÇ ¸í·É¸¸ ½ÇÇàÇÕ´Ï´Ù. CONT ±âÈ£°¡ ÂüÀÌ ¾Æ´Ï¸é ÇÁ·Î½ÃÀú°¡ Á¾·áµË´Ï´Ù.
$ INQUIRE CONT "Do you want to continue [Y/N]"
$ IF .NOT. CONT THEN EXIT
.
.
.
´ÙÀ½ º¸±â¿¡¼´Â IF Ç¥Çö½Ä¿¡ ÇϳªÀÇ ±âÈ£¿Í ÇϳªÀÇ ·¹À̺íÀ» »ç¿ëÇÕ´Ï´Ù.
$ INQUIRE CHANGE "Do you want to change the record [Y/N]"
$ IF CHANGE THEN GOTO GET_CHANGE
.
.
.
$ GET_CHANGE:
.
.
.
CHANGE ±âÈ£°¡ ÂüÀ̸é GET_CHANGE ·¹À̺í·Î Á¦¾î°¡ Àü´ÞµË´Ï´Ù.
±×·¸Áö ¾ÊÀ¸¸é IF ¹® µÚ¿¡ ³ª¿À´Â ¸í·ÉÀÌ ½ÇÇàµË´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼´Â µÎ °³ÀÇ ´Ù¸¥ IF ¸í·ÉÀ» º¸¿© ÁÝ´Ï´Ù.
$ COUNT = 0
$ LOOP:
$ COUNT = COUNT + 1
$ IF COUNT .EQ. 9 THEN EXIT
$ IF P'COUNT' .EQS. "" THEN EXIT
.
.
.
$ GOTO LOOP
ù ¹ø° IF ¸í·ÉÀº µÎ °³ÀÇ Á¤¼ö¸¦ ºñ±³ÇÏ°í µÎ ¹ø° IF ¸í·ÉÀº µÎ °³ÀÇ ¹®ÀÚ¿À» ºñ±³ÇÕ´Ï´Ù. Á¤¼ö ºñ±³¿¡´Â .EQ. ¿¬»êÀÚ¸¦, ¹®ÀÚ¿ ºñ±³¿¡´Â .EQS. ¿¬»êÀÚ¸¦ »ç¿ëÇÕ´Ï´Ù.
¸ÕÀú COUNT °ªÀ» Á¤¼ö 9¿Í ºñ±³ÇÏ¿© °ªÀÌ °°À¸¸é ÇÁ·Î½ÃÀú¸¦ Á¾·áÇÏ°í °ªÀÌ ´Ù¸£¸é ÇÁ·Î½ÃÀú¸¦ °è¼ÓÇÕ´Ï´Ù. 8°³(ÃÖ´ë Çã¿ë ¼ö)ÀÇ ¸Å°³ º¯¼ö¸¦ ó¸®ÇÑ ÈÄ ·çÇÁ¸¦ Á¾·áÇÕ´Ï´Ù.
µÎ ¹ø° IF Ç¥Çö½Ä¿¡¼´Â P'COUNT' ±âÈ£ÀÇ ¹®ÀÚ¿ °ªÀ» null ¹®ÀÚ¿°ú ºñ±³ÇÏ¿© ±âÈ£°¡ Á¤ÀǵǾî ÀÖÁö ¾ÊÀºÁö È®ÀÎÇÕ´Ï´Ù. COUNT ±âÈ£ÀÇ ¹Ýº¹ ´ëü¸¦ °Á¦ ½ÇÇàÇÏ·Á¸é ¾îÆ÷½ºÆ®·ÎÇǸ¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, COUNT°¡ 2À̸é ù ¹ø° º¯È¯ °á°ú´Â P2À̸ç P2ÀÇ °ªÀÌ ¹®ÀÚ¿ ºñ±³¿¡ »ç¿ëµË´Ï´Ù.
IF ¹®ÀÇ °á°ú°¡ ÂüÀÏ ¶§ º°°³ÀÇ ¸í·É ÇÁ·Î½ÃÀú¸¦ ½ÇÇàÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ´ÙÀ½ º¸±â¿¡¼´Â IF Ç¥Çö½ÄÀÇ °á°ú°¡ ÂüÀÏ ¶§ EXIT_ROUTINE.COM ¸í·É ÇÁ·Î½ÃÀú¸¦ ½ÇÇàÇÕ´Ï´Ù.
$ GET_COMMAND_LOOP:
$ INQUIRE COMMAND -
"Enter command (DELETE, DIRECTORY, EXIT, PRINT, PURGE, TYPE)"
$ IF COMMAND .EQS. "EXIT" THEN @EXIT_ROUTINE
GOTO ¸í·ÉÀº ¸í·É ÇÁ·Î½ÃÀú¿¡¼ ·¹À̺í ÀÖ´Â ÇàÀ¸·Î Á¦¾î¸¦ Àü´ÞÇÕ´Ï´Ù. ·¹ÀÌºí »ç¿ë¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº
13ÀåÀ» ÂüÁ¶ÇϽʽÿÀ. GOTO ¸í·ÉÀº ÇÁ·Î½ÃÀú¸¦ Á¤¹æÇ⠶Ǵ ¿ª¹æÇâÀ¸·Î ºÐ±â½ÃÅ°´Â THEN ¹®¿¡¼ ƯÈ÷ À¯¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ¸í·É ÇÁ·Î½ÃÀú¿¡¼ ¸Å°³ º¯¼ö¸¦ »ç¿ëÇÒ ¶§ ÇÁ·Î½ÃÀú ½ÃÀÛ¿¡¼ ¸Å°³ º¯¼ö¸¦ Å×½ºÆ®ÇÏ°í ÇØ´ç ·¹À̺í·Î ºÐ±âÇÒ ¼ö ÀÖ½À´Ï´Ù.
GOTO ¶Ç´Â GOSUB ¸í·ÉÀÇ ´ë»ó ·¹À̺íÀº º°°³ÀÇ IF-THEN-ELSE ±¸Á¶³ª º°°³ÀÇ
¼ºê ·çƾ ¾È¿¡ ÀÖÀ» ¼ö ¾ø½À´Ï´Ù
´ÙÀ½ º¸±â¿¡¼ IF ¸í·ÉÀº P1ÀÌ null ¹®ÀÚ¿ÀÌ ¾Æ´ÑÁö È®ÀÎÇÕ´Ï´Ù.
$ IF P1 .NES. "" THEN GOTO OKAY
$ INQUIRE P1 "Enter file spec"$ OKAY:
$ PRINT/COPIES=10 'P1'
.
.
.
P1ÀÌ null ¹®ÀÚ¿À̸é GOTO ¸í·ÉÀº ½ÇÇàµÇÁö ¾Ê°í INQUIRE ¸í·ÉÀÌ ¸Å°³ º¯¼ö °ªÀ» À§ÇÑ ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é INQUIRE ¸í·ÉÀ» °Ç³Ê ¶Ù¾î ºÐ±âµË´Ï´Ù. ¾î´À °æ¿ìµç OKAY ·¹À̺íÀÌ ÀÖ´Â Çà ´ÙÀ½ÀÇ PRINT ¸í·ÉÀÌ ½ÇÇàµË´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼ GOTO ¸í·ÉÀº ±× ´ë»ó (TEST_1)ÀÌ IF-THEN ±¸Á¶ ³»¿¡ Àֱ⠶§¹®¿¡ ¿À·ù ¸Þ½ÃÁö¸¦ ¹ÝȯÇÕ´Ï´Ù.
$ GOTO TEST_1
$ EXIT
$ IF 1.EQ.1
$ THEN WRITE SYS$OUTPUT "What are we doing here?"
$ TEST_1:
$ WRITE SYS$OUTPUT "Got to the label"
$ ENDIF
$ EXIT
GOTO ¸í·ÉÀ» »ç¿ëÇÏ¿© ¼º°øÀûÀ¸·Î ¿Ï·áµÈ ÀÛ¾÷ÀÇ ÀϺθ¦ Àç½ÇÇàÇÏ´Â °ÍÀ» ¹æÁöÇÒ ¼ö ÀÖ½À´Ï´Ù. À̸¦ ¼öÇàÇÏ·Á¸é ´ÙÀ½ ´Ü°è¸¦ µû¸£½Ê½Ã¿À.
|
|
|
ÇÁ·Î½ÃÀúÀÇ °¢ °¡´ÉÇÑ ½ÃÀÛ ÁöÁ¡À» ·¹À̺í·Î ½ÃÀÛÇϽʽÿÀ.
|
|
·¹ÀÌºí ´ÙÀ½¿¡ SET RESTART_VALUE = label-name ¸í·ÉÀ» »ç¿ëÇÏ¿© Àç½ÃÀÛ ÁöÁ¡À» ±× ·¹À̺í·Î ¼³Á¤ÇÕ´Ï´Ù.
SET RESTART_VALUE = label-name ¸í·ÉÀÌ ½ÇÇàµÈ ÈÄ ÀÏ°ý ó¸® ÀÛ¾÷ÀÌ Áß´ÜµÈ °æ¿ì ÀÏ°ý ó¸® ÀÛ¾÷ÀÌ ´Ù½Ã ½ÃÀÛµÉ ¶§ ÇØ´ç ·¹À̺í À̸§ÀÌ ±Û·Î¹ú ±âÈ£ÀÎ BATCH$RESTART¿¡ ÇÒ´çµË´Ï´Ù.
|
|
ÇÁ·Î½ÃÀú ½ÃÀÛ¿¡¼ $RESTART ±âÈ£ÀÇ °ªÀ» Å×½ºÆ®ÇÕ´Ï´Ù.
$RESTART°¡ ÂüÀ̸é BATCH$RESTART¸¦ Àü´Þ ·¹À̺í·Î »ç¿ëÇÏ¿© GOTO ¹®À» ½ÇÇàÇÕ´Ï´Ù.
|
$RESTART´Â ½Ã½ºÅÛ¿¡¼ À¯Áö °ü¸®ÇÏ´Â ¿¹¾àµÈ ±Û·Î¹ú ±âÈ£ÀÔ´Ï´Ù. $RESTART´Â ÀÏ°ý ó¸® ÀÛ¾÷ÀÌ ÁߴܵǾú´Ù°¡ ´Ù½Ã ½ÃÀÛµÈ °æ¿ì¿¡´Â ÂüÀÌ°í ±×·¸Áö ¾ÊÀº °æ¿ì¿¡´Â °ÅÁþÀÔ´Ï´Ù. ¿¹¾àµÈ ±Û·Î¹ú ±âÈ£ÀÎ $RESTART´Â »èÁ¦ÇÒ ¼ö ¾ø½À´Ï´Ù.
¸í·É ÇÁ·Î½ÃÀú¿¡ SET RESTART_VALUE ¸í·ÉÀÌ ÀÖÁö¸¸ ±× ÀÛ¾÷À» ÀüºÎ Àç½ÇÇàÇÏÁö ¾ÊÀ¸·Á¸é SET ENTRY/NOCHECKPOINT ¸í·ÉÀ» ÀÔ·ÂÇÏ¿© ±Û·Î¹ú ±âÈ£ÀÎ BATCH$RESTART¸¦ »èÁ¦ÇÕ´Ï´Ù. ÁߴܵǾú´ø ÀÛ¾÷À» ´Ù½Ã ½ÃÀÛÇÒ °æ¿ì¿¡´Â ÁߴܵǾú´ø ¼½¼Ç¿¡¼ ÀÛ¾÷ÀÌ ½ÇÇàµÇ±â ½ÃÀÛÇÕ´Ï´Ù.
´ÙÀ½ ¸í·É ÇÁ·Î½ÃÀú´Â ÀÏ°ý ó¸® ÀÛ¾÷¿¡¼ Àç½ÃÀÛ °ªÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù.
$ ! Set default to the directory containing
$ ! the file to be updated and sorted
$ SET DEFAULT DISK1:[ACCOUNTS.DATA84]
$
$ ! Check for restarting
$ IF $RESTART THEN GOTO 'BATCH$RESTART'
$
$ UPDATE_FILE:
$ SET RESTART_VALUE = UPDATE_FILE
.
.
.
$ SORT_FILE:
$ SET RESTART_VALUE = SORT_FILE
.
.
.
EXIT
ÀÌ ¸í·É ÇÁ·Î½ÃÀú¸¦ Àç½ÃÀÛÇÒ ¼ö ÀÖ´Â ÀÏ°ý ó¸® ÀÛ¾÷À¸·Î Á¦ÃâÇÏ·Á¸é ÀÛ¾÷À» Á¦ÃâÇÒ ¶§ SUBMIT ¸í·É¿¡ /RESTART ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇÕ´Ï´Ù. ÁߴܵǾú´ø ÀÛ¾÷Àº ÁߴܵǾú´ø ¼½¼Ç¿¡¼ ½ÇÇàµÇ±â ½ÃÀÛÇϹǷΠÀÌ ÀÛ¾÷ÀÌ SORT_FILE ·çƾ Áß¿¡ Áß´ÜµÈ °æ¿ì¿¡´Â Àç½ÃÀÛÇÒ ¶§ SORT_FILE ·¹ÀÌºí¿¡¼ ½ÇÇàÀ» ½ÃÀÛÇÕ´Ï´Ù.
½Ã½ºÅÛ ½ÇÆÐ ½Ã¿¡´Â ´ëºÎºÐÀÇ ÇÁ·Î¼¼½º ȯ°æÀÌ À¯ÁöµÇÁö ¾Ê½À´Ï´Ù. ½Ã½ºÅÛ ½ÇÆÐ ½Ã¿¡µµ À¯Áö °ü¸®µÇ´Â ±âÈ£´Â $RESTART¿Í BATCH$RESTART »ÓÀÔ´Ï´Ù.
±×·¯¹Ç·Î, °¢ SET RESTART_VALUE ¸í·É ´ÙÀ½À̳ª $RESTART°¡ ÂüÀÎ °æ¿ì ½ÇÇàµÇ´Â THEN ºí·Ï¿¡ »ç¿ëµÈ ±âÈ£³ª ÇÁ·Î¼¼½º ³í¸® À̸§Àº ÀçÁ¤ÀÇÇØ¾ß ÇÕ´Ï´Ù. ±âÈ£¿Í ³í¸® À̸§À» THEN ºí·Ï¿¡¼ Á¤ÀÇÇÏ´Â °æ¿ì¿¡´Â GOTO 'BATCH$RESTART' ¸í·ÉÀÌ THEN ºí·ÏÀÇ ¸¶Áö¸· ¸í·ÉÀ̶ó¾ß ÇÕ´Ï´Ù.
GOSUB ¹× RETURN ¸í·É »ç¿ë
GOSUB ¸í·ÉÀº ¸í·É ÇÁ·Î½ÃÀú¿¡¼ ·¹À̺í ÀÖ´Â ¼ºê ·çƾÀ¸·Î Á¦¾î¸¦ Àü´ÞÇÕ´Ï´Ù. ¸í·É ÇÁ·Î½ÃÀú¿¡ ·¹À̺íÀÌ ¾ø´Â °æ¿ì¿¡´Â ÇÁ·Î½ÃÀú ½ÇÇàÀÌ °è¼ÓµÉ ¼ö ¾øÀ¸¸ç °Á¦ Á¾·áµË´Ï´Ù. ·¹ÀÌºí¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â
13ÀåÀ» ÂüÁ¶ÇϽʽÿÀ. ÇÁ·Î½ÃÀú ¼öÁØ ´ç 16¹ø±îÁö GOSUB ¸í·ÉÀ» ÁßøÇÒ ¼ö ÀÖ½À´Ï´Ù.
GOSUB ¸í·ÉÀº ·ÎÄà ¼ºê ·çƾ È£ÃâÀ̹ǷΠ»õ·Î¿î ÇÁ·Î½ÃÀú ¼öÁØÀ» ¸¸µéÁö ¾Ê½À´Ï´Ù. °á°úÀûÀ¸·Î ÇöÀç ¸í·É ¼öÁØ¿¡ Á¤ÀÇµÈ ¸ðµç ·¹À̺í°ú ·ÎÄà ±âÈ£¸¦ GOSUB¸¦ »ç¿ëÇÏ¿© È£ÃâÇÑ ¼ºê ·çƾ¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
RETURN ¸í·ÉÀº ¼ºê ·çƾÀ» Á¾·áÇÏ°í GOSUB ¸í·É µÚ¿¡ ³ª¿À´Â ¸í·ÉÀ¸·Î Á¦¾î¸¦ ¹ÝȯÇÕ´Ï´Ù. RETURN ¸í·ÉÀ» »ç¿ëÇÏ¿© DCL¿¡¼ $STATUS¿¡ ÇÒ´çÇÑ °ªÀ» ¹«½ÃÇÏ´Â $STATUS °ªÀ» ¼ºê ·çƾ ³¡¿¡ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °ªÀº 0ºÎÅÍ 4 »çÀÌÀÇ Á¤¼öÀ̰ųª ÀÌ¿¡ ÇØ´çÇϴ ǥÇö½ÄÀ̶ó¾ß ÇÕ´Ï´Ù. $STATUS °ªÀ» »ç¿ëÀÚ°¡ ÁöÁ¤ÇÏ´Â °æ¿ì DCL¿¡¼´Â ÀÌ °ªÀ» Á¶°Ç ÄÚµå·Î Çؼ®ÇÕ´Ï´Ù. $STATUS °ªÀ» ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é $STATUSÀÇ ÇöÀç °ªÀÌ ÀúÀåµË´Ï´Ù.
´ÙÀ½ º¸±â´Â GOSUB ¸í·ÉÀ» »ç¿ëÇÏ¿© ¼ºê ·çƾ¿¡ Á¦¾î¸¦ Àü´ÞÇÏ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù.
$!
$! GOSUB.COM
$!
$ SHOW TIME
$ GOSUB TEST1
[1]
$ WRITE SYS$OUTPUT "GOSUB level 1 has completed successfully."
$ SHOW TIME
$ EXIT
$!
$! TEST1 GOSUB definition
$!
$ TEST1:
$ WRITE SYS$OUTPUT "This is GOSUB level 1."
$ GOSUB TEST2
[2]
$ RETURN %X1
[3]
$!
$! TEST2 GOSUB definition
$!
$ TEST2:
$ WRITE SYS$OUTPUT "This is GOSUB level 2."$ WAIT 00:00:02
$ RETURN
[4]
À§ÀÇ º¸±â¿¡¼ ÁÖ¸ñÇÒ »çÇ×Àº ´ÙÀ½°ú °°½À´Ï´Ù.
[1] ù ¹ø° GOSUB ¸í·ÉÀº TEST1 ·¹À̺íÀÌ ºÙÀº ¼ºê ·çƾÀ¸·Î Á¦¾î¸¦ Àü´ÞÇÕ´Ï´Ù.
[2] ÇÁ·Î½ÃÀú´Â ¼ºê ·çƾ TEST1ÀÇ ¸í·ÉÀ» ½ÇÇàÇÏ¿© TEST2 ·¹À̺íÀÌ ÀÖ´Â ¼ºê ·çƾÀ¸·Î ºÐ±âÇÕ´Ï´Ù.
[3] ¼ºê ·çƾ TEST1ÀÇ RETURN ¸í·ÉÀº ÁÖ ¸í·É ÇÁ·Î½ÃÀú·Î Á¦¾î¸¦ ¹ÝȯÇÏ°í ¼º°øÀûÀÎ ¿Ï·á¸¦ ³ªÅ¸³»´Â 1À̶ó´Â °ªÀ» $STATUS¿¡ Àü´ÞÇÕ´Ï´Ù.
[4] ¼ºê ·çƾ TEST2ÀÇ RETURN ¸í·ÉÀº ¼ºê ·çƾ TEST1¿¡ Á¦¾î¸¦ ¹ÝȯÇÕ´Ï´Ù. ÀÌ ¸í·ÉÀÌ 3¹ø ¸í·É Àü¿¡ ½ÇÇàµÈ´Ù´Â Á¡¿¡ ÁÖ¸ñÇϽʽÿÀ.
»õ·Î¿î ¸í·É ¼öÁØÀ» ¸¸µå´Â ¹æ¹ýÀº ´ÙÀ½ µÎ °¡ÁöÀÔ´Ï´Ù.
ÇÑ ¸í·É ÇÁ·Î½ÃÀú ¾È¿¡ ´Ù¸¥ ¸í·É ÇÁ·Î½ÃÀú¸¦ È£ÃâÇÏ´Â ½ÇÇà ÇÁ·Î½ÃÀú(@) ¸í·ÉÀ» »ç¿ëÇÏ¿© ¸í·É ÇÁ·Î½ÃÀú¸¦ Áßø½ÃÅ°´Â ¹æ¹ý(
13Àå ÂüÁ¶)
CALL ¸í·ÉÀ» »ç¿ëÇÏ¿© ¸í·É ÇÁ·Î½ÃÀú ³»¿¡ ÀÖ´Â ¼ºê ·çƾÀ» È£ÃâÇÏ´Â ¹æ¹ý
CALL ¸í·ÉÀº ¸í·É ÇÁ·Î½ÃÀú¿¡¼ ·¹À̺í ÀÖ´Â ¼ºê ·çƾÀ¸·Î Á¦¾î¸¦ Àü´ÞÇÏ°í »õ ÇÁ·Î½ÃÀú ¼öÁØÀ» ¸¸µì´Ï´Ù. CALL ¸í·ÉÀ» »ç¿ëÇÏ¿© ´ÜÀÏ ÆÄÀÏ¿¡¼ µÎ °³ ÀÌ»óÀÇ °ü·ÃµÈ ¸í·É ÇÁ·Î½ÃÀú¸¦ µÎ¾î °ü¸®Çϱ⠽±µµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼ºê ·çƾ ·¹ÀÌºí¿¡´Â °íÀ¯ÇÑ À̸§À» »ç¿ëÇØ¾ß ÇÏ¸ç ¸í·É ÇÁ·Î½ÃÀúÀÇ CALL ¸í·É ¾ÕÀ̳ª µÚ¿¡ µÑ ¼ö ÀÖ½À´Ï´Ù. ¼ºê ·çƾ ·¹À̺íÀ» ÀÔ·ÂÇÏ´Â ¹æ¹ýÀº
13ÀåÀ» ÂüÁ¶ÇϽʽÿÀ.
CALL ¸í·ÉÀ» »ç¿ëÇϱâ À§ÇÑ ±ÔÄ¢Àº ´ÙÀ½°ú °°½À´Ï´Ù.
SYS$OUTPUT¿¡ Ãâ·ÂÀ» º¸³À´Ï´Ù.
Ãâ·ÂÀ» ¼ºê ·çƾ¿¡¼ ÆÄÀÏ·Î º¸³¾ ¼ö ÀÖ´Â /OUTPUT ÇÑÁ¤ÀÚ°¡ ÀÖ½À´Ï´Ù.
Ãâ·Â ÆÄÀÏ¿¡´Â ±âº» ÆÄÀÏ Çü½ÄÀÎ .LIS¸¦ »ç¿ëÇÕ´Ï´Ù.
Ãâ·Â ÆÄÀÏ ÁöÁ¤¿¡ ¿ÍÀϵåÄ«µå ¹®ÀÚ¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
CALL ¸í·É »ç¿ë°ú °ü·ÃµÈ Ãß°¡ ±âº»°ªÀº ´ÙÀ½°ú °°½À´Ï´Ù.
CALL ¸í·ÉÀ» »ç¿ëÇÏ¿© È£ÃâÇÑ ¼ºê ·çƾ°ú ½ÇÇà ÇÁ·Î½ÃÀú(@) ¸í·ÉÀ» »ç¿ëÇÏ¿© È£ÃâÇÑ ÇÁ·Î½ÃÀú¸¦ ÃÖ´ë 32°³ÀÇ ¸í·É ¼öÁرîÁö Áßø½Ãų ¼ö ÀÖ½À´Ï´Ù.
¹Ù±ùÂÊ ¼öÁØ¿¡ Á¤ÀÇµÈ ·ÎÄà ±âÈ£´Â SET SYMBOL ¸í·ÉÀ» »ç¿ëÇÏ¿© ¸¶½ºÅ©ÇÑ °æ¿ì°¡ ¾Æ´Ï¸é ¾ÈÂÊ ÇÁ·Î½ÃÀú³ª ¼ºê ·çƾ ¼öÁØ¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±Û·Î¹ú ±âÈ£´Â ¾î´À ¸í·É ¼öÁØ¿¡¼³ª »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
·¹À̺íÀº Á¤ÀÇµÈ ¼öÁØ¿¡ ´ëÇؼ¸¸ À¯È¿ÇÕ´Ï´Ù.
CALL ¼ºê ·çƾÀÇ ½ÃÀÛ°ú ³¡Àº SUBROUTINE°ú ENDSUBROUTINE ¸í·ÉÀ¸·Î Á¤ÀÇÇÕ´Ï´Ù. ¼ºê ·çƾ¿¡ ´ëÇÑ ÁøÀÔ ÁöÁ¡À» Á¤ÀÇÇÏ´Â ·¹À̺íÀº SUBROUTINE ¸í·É ¹Ù·Î ¾Õ¿¡ ³ª¿É´Ï´Ù. ENDSUBROUTINE ¸í·É ¹Ù·Î ¾Õ¿¡ EXIT ¸í·ÉÀ» ³ÖÀ» ¼ö´Â ÀÖÁö¸¸ ¼ºê ·çƾÀ» Á¾·áÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ENDSUBROUTINE ¸í·ÉÀº ¼ºê ·çƾÀ» Á¾·áÇÏ°í CALL ¸í·É ¹Ù·Î µÚ¿¡ ³ª¿À´Â ¸í·ÉÇàÀ¸·Î Á¦¾î¸¦ Àü´ÞÇÕ´Ï´Ù.
¼ºê ·çƾÀÇ ¸í·ÉÇàÀº ±× ¼ºê ·çƾÀÌ CALL ¸í·ÉÀ» »ç¿ëÇÏ¿© È£ÃâµÈ °æ¿ì¿¡¸¸ ½ÇÇàµË´Ï´Ù. ¸í·É ÇÁ·Î½ÃÀúÀÇ ¸í·ÉÇàÀ» Â÷·Ê·Î ½ÇÇàÇÏ´Â µ¿¾È ¸í·É¾î ÀÎÅÍÇÁ¸®ÅÍ´Â SUBROUTINE°ú ENDSUBROUTINE ¸í·É »çÀÌÀÇ ¸ðµç ¸í·ÉÀ» °Ç³Ê¶Ý´Ï´Ù.
¼ºê ·çƾ ÁøÀÔ ÁöÁ¡ÀÇ ¹üÀ§¿Í ·¹À̺í ÂüÁ¶ »ç¿ë ¹üÀ§¸¦ Á¤ÀÇÇÒ ¶§´Â ´ÙÀ½°ú °°Àº Á¦ÇÑ »çÇ×ÀÌ Àû¿ëµË´Ï´Ù.
´Ù¸¥ ¼ºê ·çƾ ¾È¿¡ Á¤ÀÇµÈ ¼ºê ·çƾ ÁøÀÔÁ¡Àº ±× ¼ºê ·çƾ¿¡ ´ëÇØ ·ÎÄÃÀÔ´Ï´Ù. ¼ºê ·çƾ ÁøÀÔÁ¡ÀÌ º°°³ÀÇ ¼ºê ·çƾ ºí·Ï ³»¿¡ ÀÖ´Â °æ¿ì¿¡´Â ¼ºê ·çƾÀ» È£ÃâÇÒ ¼ö ¾ø½À´Ï´Ù.
¼ºê ·çƾ ÁøÀÔÁ¡ÀÌ IF-THEN-ELSE ºí·Ï ³»¿¡ ÀÖ´Â °æ¿ì¿¡´Â IF-THEN-ELSE ºí·Ï ¹Û¿¡¼ ÀÌ ¼ºê ·çƾÀ» È£ÃâÇÒ ¼ö ¾ø½À´Ï´Ù.
¸ðµç SUBROUTINE ¸í·É¿¡´Â ¼ºê ·çƾÀ» ³¡³»´Â ENDSUBROUTINE ¸í·ÉÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼´Â CALL BAR ¸í·ÉÀÌ MAIN ¼ºê ·çƾ ¹Û¿¡ Àֱ⠶§¹®¿¡ È£ÃâÀÌ À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù.
$ CALL BAR
$
$ MAIN: SUBROUTINE
$
$ BAR: SUBROUTINE
$ ENDSUBROUTINE
$
$ ENDSUBROUTINE
ÀÌ CALL ¸í·ÉÀÌ Á¦´ë·Î ÀÌ·ç¾îÁö·Á¸é SUBROUTINE°ú ENDSUBROUTINE ÁöÁ¡ ³»¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù.
´ÙÀ½ º¸±âÀÇ È£ÃâÀº IF-THEN-ELSE ºí·Ï ¾È¿¡ Àֱ⠶§¹®¿¡ Çã¿ëµÇÁö ¾Ê½À´Ï´Ù.
$ IF 1
$ THEN
$ BOB:SUBROUTINE
$ ENDSUBROUTINE
$ ENDIF
$ CALL BOB
´ÙÀ½ º¸±â¿¡´Â SUB1¿Í SUB2¶ó´Â À̸§ÀÇ µÎ ¼ºê ·çƾÀÌ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. ¼ºê ·çƾÀº CALL ¸í·ÉÀ» »ç¿ëÇÏ¿© È£ÃâÇϱâ±îÁö´Â ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù.
$
$! CALL.COM
$
$! Define subroutine SUB1.
$!
$ SUB1: SUBROUTINE
.
.
.
$ CALL SUB2 !Invoke SUB2 from within SUB1.
.
.
.
$ @FILE !Invoke another command procedure file.
.
.
.
$ EXIT
$ ENDSUBROUTINE !End of SUB1 definition.
$!
$! Define subroutine SUB2.
$!
$ SUB2: SUBROUTINE
$ EXIT
$ ENDSUBROUTINE !End of SUB2 definition.
$!
$! Start of main routine. At this point, both SUB1 and SUB2
$! have been defined but none of the previous commands have
$! been executed.
$!
$ START:
$ CALL/OUTPUT=NAMES.LOG SUB1 "THIS IS P1"
.
.
.
$ CALL SUB2 "THIS IS P1" "THIS IS P2"
.
.
.
$ EXIT !Exit this command procedure file.
CALL ¸í·ÉÀº SUB1 ¼ºê ·çƾÀ» È£ÃâÇÏ°í Ãâ·ÂÀ» NAMES.LOG ÆÄÀÏ·Î ÁöÁ¤ÇÕ´Ï´Ù. ¼ºê ·çƾ SUB1Àº ¼ºê ·çƾ SUB2¸¦ È£ÃâÇÕ´Ï´Ù. ÇÁ·Î½ÃÀú¿¡¼´Â SUB2¸¦ ½ÇÇàÇÏ°í ½ÇÇà ÇÁ·Î½ÃÀú(@) ¸í·ÉÀ» »ç¿ëÇÏ¿© ¸í·É ÇÁ·Î½ÃÀúÀÎ FILE.COMÀ» È£ÃâÇÕ´Ï´Ù. SUB1ÀÇ ¸ðµç ¸í·ÉÀÌ ½ÇÇàµÇ¸é ÁÖ ÇÁ·Î½ÃÀúÀÇ CALL ¸í·ÉÀÌ SUB2¸¦ µÎ ¹ø°·Î È£ÃâÇÕ´Ï´Ù. SUB2 ½ÇÇàÀÌ ³¡³ª¸é ÇÁ·Î½ÃÀú°¡ Á¾·áµË´Ï´Ù.
Case ¹®Àº º¯¼ö³ª Ç¥Çö½ÄÀÇ °ª¿¡ µû¶ó ÀÏ·ÃÀÇ ¸í·É ºí·Ï Áß ÇÑ ¸í·É ºí·ÏÀ» ½ÇÇàÇϴ Ư¼öÇÑ ÇüÅÂÀÇ Á¶°Ç ÄÚµåÀÔ´Ï´Ù. ÀϹÝÀûÀ¸·Î Case ¹®ÀÇ À¯È¿°ªÀº °¢ ¸í·É ºí·ÏÀÇ Ã³À½¿¡ ÀÖ´Â ·¹À̺íÀÔ´Ï´Ù. Case ¹®Àº GOTO ¹®¿¡¼ ÁöÁ¤µÈ °ªÀ» ´ë»ó ·¹À̺í·Î »ç¿ëÇÏ¿© ÇØ´ç ÄÚµå ºí·Ï¿¡ Á¦¾î¸¦ Àü´ÞÇÕ´Ï´Ù.
Case ¹®À» ÀÛ¼ºÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ÇØ¾ß ÇÕ´Ï´Ù.
3. ¸í·É ºí·ÏÀ» ÀÛ¼ºÇÕ´Ï´Ù.
·¹À̺íÀ» ³ª¿ÇÏ·Á¸é ±âÈ£¸¦ ½½·¡½Ã ¶Ç´Â ±¸ºÐ ±âÈ£·Î ¼±ÅÃÇÑ ÀÓÀÇÀÇ ¹®ÀÚ¸¦ »ç¿ëÇÏ¿© ±¸ºÐÇÑ ·¹À̺íÀÇ ¸ñ·ÏÀ» Æ÷ÇÔÇÏ´Â ¹®ÀÚ¿°ú ÀÏÄ¡½Ãŵ´Ï´Ù. ÀÌ ±âÈ£ Á¤ÀÇ´Â ¸í·É ºí·Ï ¾Õ¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼´Â COMMAND_LIST ±âÈ£°¡ PURGE, DELETE ¹× EXIT ·¹À̺í°ú µ¿ÀÏÇÕ´Ï´Ù.
$ COMMAND_LIST = "/PURGE/DELETE/EXIT/"
Case ¹®À» ÀÛ¼ºÇÏ·Á¸é ´ÙÀ½ ÀýÂ÷¸¦ µû¸£½Ê½Ã¿À.
|
|
|
INQUIRE ¸í·ÉÀ» »ç¿ëÇÏ¿© Case º¯¼öÀÇ °ªÀ» °¡Á®¿É´Ï´Ù.
|
|
F$LOCATE¿Í F$LENGTH¸¦ IF ¸í·É°ú ÇÔ²² »ç¿ëÇÏ¿© Case º¯¼öÀÇ °ªÀÌ À¯È¿ÇÑ Áö ¿©ºÎ¸¦ È®ÀÎÇÕ´Ï´Ù.
|
|
º¯¼ö°¡ À¯È¿ÇÑ °æ¿ì¿¡´Â GOTO ¸í·ÉÀ» »ç¿ëÇÏ¿© Case ¹®À» ½ÇÇàÇÏ¿© ÇØ´ç ÄÚµå ºí·ÏÀ¸·Î Á¦¾î¸¦ Àü´ÞÇÕ´Ï´Ù.
±×·¸Áö ¾ÊÀ¸¸é ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÏ°í Á¾·áÇϰųª ´Ù¸¥ Case °ªÀ» ¿äûÇÕ´Ï´Ù.
|
´ÙÀ½ º¸±â¿¡¼´Â ·¹À̺íÀÌ Àüü ¸í·É À̸§°ú ÀÏÄ¡µË´Ï´Ù. ±×·¯¹Ç·Î F$LOCATE´Â ±¸ºÐ ±âÈ£¸¦ ¸í·É À̸§ °Ë»ö¿¡ Æ÷ÇÔ½ÃÄÑ ¸í·É À̸§ÀÌ Ãà¾àµÇÁö ¾Êµµ·Ï ÇÕ´Ï´Ù.
$GET_COMMAND:
$ INQUIRE COMMAND -
"Command (EXIT,PURGE,DELETE)"
$ IF F$LOCATE ("/"+COMMAND+"/",COMMAND_LIST) .EQ. -
F$LENGTH (COMMAND_LIST) THEN GOTO ERROR_1
$ GOTO 'COMMAND'
.
.
.
$ERROR_1:
$ WRITE SYS$OUTPUT "No such command as ''COMMAND'."
$ GOTO GET_COMMAND
°¢ ¸í·É ºí·Ï¿¡´Â ÇÑ °³ ÀÌ»óÀÇ ¸í·ÉÀÌ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù. °¢ ¸í·É ºí·ÏÀº °íÀ¯ÇÑ ·¹À̺í·Î ½ÃÀÛÇÏ°í ¸í·É ºí·Ï ¸ñ·Ï ¹Û¿¡ ÀÖ´Â ·¹ÀÌºí¿¡ Á¦¾î¸¦ Àü´ÞÇÏ¿© ³¡³À´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼ °¢ ¸í·É ºí·ÏÀº °íÀ¯ÇÑ ·¹À̺íÀÎ PURGE:¿Í DELETE:·Î ½ÃÀÛÇϸç ÇöÀç ¸í·É ºí·Ï ¹ÛÀÇ GOTO GET_COMMAND ·¹ÀÌºí¿¡ Á¦¾î¸¦ Àü´ÞÇÔÀ¸·Î½á ³¡³³´Ï´Ù.
$GET_COMMAND:
.
.
.
$PURGE:
$ INQUIRE FILE
$ PURGE 'FILE'
$ GOTO GET_COMMAND
$ !
$DELETE:
$ INQUIRE FILE
$ DELETE 'FILE'
$ GOTO GET_COMMAND
$ !
$EXIT:
¸í·É ºí·Ï óÀ½¿¡¼ º¯¼ö¸¦ Å×½ºÆ®ÇÏ´Â ·çÇÁ¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù(
13Àå ÂüÁ¶). ±×·¯³ª ´ÙÀ½ ÀýÂ÷¸¦ µû¶ó ·çÇÁÀÇ ³¡¿¡¼ Á¾·á º¯¼ö¸¦ Å×½ºÆ®ÇÏ´Â ·çÇÁ¸¦ ÀÛ¼ºÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
|
|
|
|
|
·çÇÁ º»¹®ÀÇ ¸í·ÉÀ» ¼öÇàÇÕ´Ï´Ù.
|
|
|
|
Á¾·á º¯¼ö¸¦ Å×½ºÆ®ÇÕ´Ï´Ù.
Á¶°Ç¿¡ ºÎÇÕµÇÁö ¾Ê´Â °æ¿ì¿¡´Â ·çÇÁÀÇ Ã³À½À¸·Î °©´Ï´Ù.
|
|
|
·çÇÁ ³¡¿¡¼ Á¾·á º¯¼ö¸¦ Å×½ºÆ®ÇÒ ¶§´Â Á¾·á º¯¼öÀÇ °ª¿¡ °ü°è ¾øÀÌ ·çÇÁ º»¹®ÀÇ ¸í·ÉÀÌ ÃÖ¼ÒÇÑ ÇÑ ¹ø¾¿ ½ÇÇàµÈ´Ù´Â Á¡¿¡ ÁÖÀÇÇϽʽÿÀ.
´ÙÀ½ º¸±âÀÇ ¸í·É ºí·ÏÀº µÑ ´Ù COMMAND°¡ "EX" (EXIT)¿Í ÀÏÄ¡ÇÒ ¶§ Á¾·áµÇ´Â ·çÇÁ¸¦ ½ÇÇàÇÕ´Ï´Ù. F$EXTRACT´Â COMMAND¸¦ óÀ½ µÎ ÀÚ¸¸ ³²±â°í ÀÚ¸¨´Ï´Ù. ù ¹ø° º¸±â¿¡¼´Â Á¾·á º¯¼öÀÎ COMMAND¸¦ ·çÇÁ óÀ½¿¡ Å×½ºÆ®ÇÏ°í µÎ ¹ø° º¸±â¿¡¼´Â ·çÇÁ ³¡¿¡ Å×½ºÆ®ÇÕ´Ï´Ù.
$ ! EXAMPLE 1
$ !
$GET_COMMAND:
$ INQUIRE COMMAND-
"Command (EXIT,DIRECTORY,TYPE,PURGE,DELETE,COPY)"
$ COMMAND = F$EXTRACT(0,2,COMMAND)
$ IF COMMAND .EQS. "EX" THEN GOTO END_LOOP
.
.
.
$ GOTO GET_COMMAND
$END_LOOP:
$ ! EXAMPLE 2
$ !
$GET_COMMAND:
$ INQUIRE COMMAND-
"Command (EXIT,DIRECTORY,TYPE,PURGE,DELETE,COPY)"$ COMMAND = F$EXTRACT(0,2,COMMAND)
.
.
.
$ IF COMMAND .NES. "EX" THEN GOTO GET_COMMAND
$ ! End of loop
ÁöÁ¤µÈ Ƚ¼ö ¸¸Å ·çÇÁ¸¦ ¼öÇàÇÏ·Á¸é °è¼ö±â¸¦ Á¾·á º¯¼ö·Î »ç¿ëÇϽʽÿÀ. ´ÙÀ½ º¸±â¿¡¼´Â »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ 10°³ÀÇ ÆÄÀÏ À̸§ÀÌ ·ÎÄà ±âÈ£ÀÎ FIL1, FIL2, ..., FIL10¿¡ ÀúÀåµË´Ï´Ù.
$ NUM = 1 ! Set counter
$LOOP: ! Begin loop
$ INQUIRE FIL'NUM' "File" ! Get file name
$ NUM = NUM + 1 ! Update counter
$ IF NUM .LT. 11 THEN GOTO LOOP ! Test for termination
$END_LOOP: ! End loop
.
.
.
´ÙÀ½ º¸±â¿¡¼´Â °è¼ö±â¸¦ »ç¿ëÇÏ¿© ·çÇÁ¸¦ ½ÇÇàÇϴ Ƚ¼ö¸¦ Á¦¾îÇÕ´Ï´Ù. ·çÇÁ´Â 10ȸ ½ÇÇàµÇ¸ç Á¾·á º¯¼ö´Â ·çÇÁ ³¡¿¡¼ Å×½ºÆ®µË´Ï´Ù.
$! Obtain 10 file names and store them in the
$! symbols FILE_1 to FILE_10
$!
$ COUNT = 0
$ LOOP:
$ COUNT = COUNT + 1
$ INQUIRE FILE_'COUNT' "File"
$ IF COUNT .LT. 10 THEN GOTO LOOP
$!
$ PROCESS_FILES:
.
.
.
COUNT ±âÈ£´Â ·çÇÁ°¡ ½ÇÇàµÇ´Â Ƚ¼ö¸¦ ±â·ÏÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ¶ÇÇÑ, COUNT¸¦ »ç¿ëÇÏ¿© FILE_1, FILE_2 ÇÏ´Â ½ÄÀ¸·Î FILE_10±îÁö ±âÈ£ À̸§À» ¸¸µì´Ï´Ù. COUNTÀÇ °ªÀº ·çÇÁ ½ÃÀÛ¿¡¼ Áõ°¡µÇÁö¸¸ Å×½ºÆ®´Â ·çÇÁ ³¡¿¡¼ ÀÌ·ç¾îÁø´Ù´Â Á¡¿¡ ÁÖÀÇÇϽʽÿÀ. ±×·¯¹Ç·Î COUNT°¡ 9¿¡¼ 10À¸·Î Áõ°¡µÉ ¶§ ·çÇÁ´Â FILE_10 °ªÀ» ¾ò¾î IF ¹®¿¡¼ °ÅÁþ °á°ú¸¦ ¹ß°ßÇϱâ Àü¿¡ ¸¶Áö¸·À¸·Î ½ÇÇàµË´Ï´Ù.
¾Ë·ÁÁø °ª ¼ø¼¸¦ À§ÇØ ·çÇÁ¸¦ ¼öÇàÇÏ·Á¸é F$ELEMENT ·º½ÃÄ® ÇÔ¼ö¸¦ »ç¿ëÇϽʽÿÀ. F$ELEMENT ·º½ÃÄ® ÇÔ¼ö´Â ±¸ºÐ ±âÈ£¸¦ »ç¿ëÇÏ¿© ±¸ºÐÇÑ Ç׸ñ ¸ñ·Ï¿¡¼ Ç׸ñÀ» °¡Á®¿É´Ï´Ù. Ç׸ñ ¹øÈ£, Ç׸ñ ±¸ºÐ ±âÈ£ ¹× ¸ñ·ÏÀ» F$ELEMENTÀÇ Àμö·Î Á¦°øÇØ¾ß ÇÕ´Ï´Ù.
F$ELEMENT ·º½ÃÄ® ÇÔ¼ö »ç¿ë ¹æ¹ý¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº
OpenVMS DCL Dictionary¸¦ ÂüÁ¶ÇϽʽÿÀ.
´ÙÀ½ º¸±â¿¡¼´Â CHAP1, CHAP2, CHAP3, CHAPA, CHAPB, ¹× CHAPC ÆÄÀÏÀÌ ¼ø¼´ë·Î 󸮵˴ϴÙ.
$ FILE_LIST = "1,2,3,A,B,C"$ INDEX = 0
$PROCESS:
$ NUM = F$ELEMENT(INDEX,",",FILE_LIST)
$ IF NUM .EQS. "," THEN GOTO END_LOOP
$ FILE = "CHAP''NUM'"$ ! process file named by FILE
.
.
.
$ INDEX = INDEX + 1
$ GOTO PROCESS
$END_LOOP:
$ EXIT
´ÙÀ½ º¸±â¿¡¼ ¸í·É ÇÁ·Î½ÃÀú´Â ·çÇÁ¸¦ »ç¿ëÇÏ¿© FILE_LIST ±âÈ£¿¡ ³ª¿µÈ ÆÄÀÏÀ» ´Ù¸¥ ³ëµåÀÇ µð·ºÅ丮¿¡ º¹»çÇÕ´Ï´Ù.
$ FILE_LIST = "CHAP1/CHAP2/CHAP3/CHAP4/CHAP5"
$ NUM = 0
$!
$! Process each file listed in FILE_LIST
$ PROCESS_LOOP:
$ FILE = F$ELEMENT(NUM,"/",FILE_LIST)
$ IF FILE .EQS. "/" THEN GOTO DONE
$ COPY 'FILE'.MEM MORRIS::DISK3:[DOCSET]*.*
$ NUM = NUM + 1
$ GOTO PROCESS_LOOP
$!
$ DONE:
$ WRITE SYS$OUTPUT "Finished copying files."
$ EXIT
F$ELEMENT ·º½ÃÄ® ÇÔ¼ö´Â ù ¹ø°·Î CHAP1, µÎ ¹ø°·Î CHAP2 ÇÏ´Â ½ÄÀ¸·Î ÆÄÀÏÀ» ¹ÝȯÇÕ´Ï´Ù. ·çÇÁ¸¦ ÇÑ ¹ø °ÅÄ¥ ¶§¸¶´Ù NUM °ªÀÌ Áõ°¡µÇ¾î ´ÙÀ½ ÆÄÀÏ À̸§À» °¡Á®¿É´Ï´Ù. F$ELEMENT¿¡¼ ½½·¡½Ã°¡ ¹ÝȯµÇ¸é FILE_LISTÀÇ ¸ðµç Ç׸ñÀÌ Ã³¸®µÇ¾ú°í ·çÇÁ°¡ Á¾·áµË´Ï´Ù.
PIPE ¸í·ÉÀº °°Àº ¸í·ÉÇà¿¡¼ µÎ °³ ÀÌ»óÀÇ DCL ¸í·É ¹®ÀÚ¿À» ½ÇÇàÇÕ´Ï´Ù. PIPE ¸í·ÉÀ» »ç¿ëÇÏ¿© ¸í·É ÆÄÀÌÇÁ¶óÀÎÈ, ÀÔ/Ãâ·Â ÀçÁöÁ¤, Á¶°Ç ¹× ¹é±×¶ó¿îµå ½ÇÇà°ú °°Àº UNIX ½ºÅ¸ÀÏ ¸í·É 󸮸¦ ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ·¯ÇÑ ¸í·É ó¸® ½ºÅ¸ÀÏÀº È£½ºÆ®¿Í ´ë»ó ½Ã½ºÅÛ¿¡ ÀÏÁ¤ ÇüÅÂÀÇ ÆÄÀÌÇÁ¶óÀÎ ¸í·É ±¸¹® ºÐ¼®ÀÌ ¿¹»óµÇ´Â ÀÎÅÍ³Ý ¼ÒÇÁÆ®¿þ¾î °³¹ß ¹× »ç¿ëÀ» Áö¿øÇÕ´Ï´Ù.
´ÙÀ½ Àý¿¡¼´Â PIPE ¸í·ÉÀ» »ç¿ëÇÏ¿© DCL ¸í·ÉÀ» ½ÇÇàÇÏ´Â ¹æ¹ý, PIPE ¸í·É Áß´Ü ¹æ¹ý ¹× ÇÏÀ§ ÇÁ·Î¼¼½º ¼º´É Çâ»ó ¹æ¹ý¿¡ ´ëÇØ º¸±â¸¦ µé¾î ¼³¸íÇÕ´Ï´Ù.
PIPE ¸í·É¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº
OpenVMS DCL Dictioanry: N-Z¸¦ ÂüÁ¶ÇϽʽÿÀ.
ÇϳªÀÇ PIPE ¸í·É¿¡ ¿©·¯ °³ÀÇ DCL ¸í·ÉÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÁöÁ¤ÇÑ DCL ¸í·ÉµéÀº ¼øÂ÷ÀûÀ¸·Î ½ÇÇàµË´Ï´Ù. ´ÙÀ½ Çü½ÄÀ» »ç¿ëÇϽʽÿÀ.
PIPE command-sequence ; command-sequence [; command-sequences]...
Á¶°Ç ¸í·É ½ÇÇàÀ» À§ÇÑ PIPE ¸í·É »ç¿ë
¸í·É ¼ø¼´Â ¾Õ¿¡ ³ª¿Â ¸í·É ¼ø¼ÀÇ ½ÇÇà °á°ú¿¡ µû¶ó Á¶°ÇºÎ·Î ½ÇÇàµË´Ï´Ù. ´ÙÀ½ Çü½ÄÀ» »ç¿ëÇϽʽÿÀ.
PIPE command-sequence1 && command-sequence2
command-sequence2´Â
command-sequence1ÀÌ ¼º°øÀûÀ¸·Î ½ÇÇàµÈ °æ¿ì¿¡¸¸ ½ÇÇàµË´Ï´Ù. ´ÙÀ½ Çü½ÄÀ» »ç¿ëÇÏ´Â °æ¿ì¿¡´Â
command-sequence1ÀÌ ½ÇÆÐÇÏ´Â °æ¿ì¿¡¸¸
command-sequence2°¡ ½ÇÇàµË´Ï´Ù.
PIPE command-sequence1 || command-sequence2
ÆÄÀÌÇÁ¶óÀÎ ½ÇÇàÀ» À§ÇÑ PIPE ¸í·É »ç¿ë
ÆÄÀÌÇÁ¶óÀÎÀº
ÆÄÀÌÇÁ¿¡ ÀÇÇØ ¿¬°áµÈ ÀÏ·ÃÀÇ ÆÄÀÌÇÁ¶óÀÎ ¼¼±×¸ÕÆ® ¸í·ÉÀÔ´Ï´Ù. ÆÄÀÌÇÁ´Â ¼¼·Î ¸·´ë(|) ±¸ºÐ ±âÈ£·Î Ç¥½ÃÇÕ´Ï´Ù. ÆÄÀÌÇÁ¶óÀÎ ¼¼±×¸ÕÆ® ¸í·ÉÀº ÆÄÀÌÇÁ¶óÀο¡ ³ªÅ¸³ª´Â DCL ¸í·ÉÀÔ´Ï´Ù. ÆÄÀÌÇÁ´Â ÆÄÀÌÇÁ¶óÀÎ ¼¼±×¸ÕÆ®ÀÇ SYS$OUTPUTÀ» ´ÙÀ½ ¸í·ÉÀÇ SYS$INPUT¿¡ ¿¬°áÇÕ´Ï´Ù. ÆÄÀÌÇÁ¶óÀÎÀÇ Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù.
PIPE pipeline-segment-command | pipeline-segment-command [|...]
°¢ ÆÄÀÌÇÁ¶óÀÎ ¼¼±×¸ÕÆ® ¸í·ÉÀº ´ÙÀ½ ÆÄÀÌÇÁ¶óÀÎ ¼¼±×¸ÕÆ® ¸í·ÉÀÇ SYS$INPUT¿¡ ¿¬°áµÈ SYS$OUTPUTÀÌ ÀÖ´Â º°°³ÀÇ ÇÏÀ§ ÇÁ·Î¼¼½º¿¡¼ ½ÇÇàµË´Ï´Ù. ÀÌ ÇÏÀ§ ÇÁ·Î¼¼½ºµéÀº º´ÇàÇÏ¿© ½ÇÇàµË´Ï´Ù. ±×·¯³ª ù ¹ø°¸¦ Á¦¿ÜÇÑ °¢ ÆÄÀÌÇÁ¶óÀÎ ¼¼±×¸ÕÆ® ¸í·ÉÀÌ ¼±Çà ÆÄÀÌÇÁ¶óÀÎ ¼¼±×¸ÕÆ® ¸í·ÉÀÇ Ç¥ÁØ Ãâ·ÂÀ» Ç¥ÁØ ÀÔ·ÂÀ¸·Î ÀÐÀ» Á¤µµ·Î µ¿±âȵ˴ϴÙ. ÆÄÀÌÇÁ¶óÀÎÀº ¸¶Áö¸· ÆÄÀÌÇÁ¶óÀÎ ¼¼±×¸ÕÆ® ¸í·ÉÀÌ ³¡³¯ ¶§ ½ÇÇàÀ» ¿Ï·áÇÕ´Ï´Ù.
ÆÄÀÌÇÁ¶óÀο¡
¡°ÇÊÅÍ ¾îÇø®ÄÉÀ̼Ç
¡±À» »ç¿ëÇÏ´Â °ÍÀº ¸Å¿ì ÀϹÝÀûÀÎ ÀÏÀÔ´Ï´Ù. ÇÊÅÍ ¾îÇø®ÄÉÀ̼ÇÀº SYS$INPUT¿¡¼ µ¥ÀÌÅ͸¦ ¹Þ¾Æ ƯÁ¤ÇÑ ¹æ¹ýÀ¸·Î º¯È¯ÇÏ¿© SYS$OUTPUT¿¡ ¾²´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù.
DCLÀÇ ¾î¶² ¸éÀº ´ÙÀ½ º¸±âó·³ ÆÄÀÌÇÁ¶óÀÎ ÄÁÅؽºÆ®¿¡¼ ´Ù¸¥ ±â´ÉÀ» ÇÕ´Ï´Ù.
ÇÏÀ§ ÇÁ·Î¼¼½ºÀÇ SYS$COMMAND´Â ¸í·É ÇÁ·Î½ÃÀú°¡ °ü·ÃµÇÁö ¾Ê´Â °æ¿ì ÀϹÝÀûÀ¸·Î SYS$INPUT°ú µ¿ÀÏÇÕ´Ï´Ù. ±×·¯³ª ÆÄÀÌÇÁ¶óÀο¡¼ ÇÏÀ§ ÇÁ·Î¼¼½ºÀÇ SYS$COMMAND´Â ÆÄÀÌÇÁ¶óÀÎ ¼¼±×¸ÕÆ® ¸í·ÉÀÇ SYS$INPUTÀÎ ¼±ÇàÇÏ´Â ÆÄÀÌÇÁ°¡ ¾Æ´Ï¶ó ¼±Çà ÇÁ·Î¼¼½ºÀÇ SYS$COMMAND·Î ¼³Á¤µË´Ï´Ù.
ÆÄÀÌÇÁ¶óÀÎ ¼¼±×¸ÕÆ® ¸í·ÉÀº RMS ¼øÂ÷Àû ÆÄÀÏ ¾×¼¼½º ¹æ¹ýÀ» »ç¿ëÇؼ¸¸ ÆÄÀÌÇÁ¿¡ ÀÐ°í ¾µ ¼ö ÀÖ½À´Ï´Ù. ƯÁ¤ OpenVMS À¯Æ¿Æ¼¸®´Â ¼øÂ÷Àû ¾×¼¼½º°¡ ¾Æ´Ñ ¹æ¹ýÀ» »ç¿ëÇÏ¿© ÀÔ·Â ¹× Ãâ·Â ÆÄÀÏ¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ÆÄÀÌÇÁ¶óÀο¡¼´Â ÀÌ·¯ÇÑ ÀÛ¾÷ÀÌ Áö¿øµÇÁö ¾ÊÀ¸¹Ç·Î ´ÙÀ½ º¸±âó·³ ½ÇÆÐÇÏ°Ô µË´Ï´Ù.
$ PIPE CC/NOOBJ/NOLIS TEST.C | SEARCH SYS$INPUT/WIND=(1,1) "%cc-w-"
%SEARCH-F-RFAERR, RMS error using RFA access
-RMS-F-RAC, invalid record access mode
ÀÌ º¸±â¿¡¼ SEARCH ¸í·ÉÀ» À§ÇÑ /WINDOW ÇÑÁ¤ÀÚ´Â °ü·Ã ÆÄÀÏ ¾×¼¼½º ¹æ¹ýÀ» ÇÊ¿ä·Î ÇÕ´Ï´Ù.
DCL¿¡¼ ±âÈ£°¡ º¯È¯µÇ´Â ¼ø¼¿¡ ÁÖÀÇÇϽʽÿÀ. ±âÈ£ ´ëü´Â ¸í·É ó¸®ÀÇ 1 ´Ü°è µ¿¾È¿¡ ÀÌ·ç¾îÁý´Ï´Ù. ±âÈ£¸¦ PIPE ¸í·ÉÀÇ ÀϺηΠÁ¤ÀÇÇϸé DCL¿¡¼´Â ±× ±âÈ£°¡ ½ÇÁ¦·Î Á¤ÀÇµÈ ¸í·ÉÀ» ¼öÇàÇϱâ Àü¿¡ ±âÈ£¸¦ ´ëüÇÏ·Á°í ½ÃµµÇÕ´Ï´Ù. ±âÈ£ ´ëü¸¦ Áö¿¬ÇÏ·Á¸é ¾ÚÆÛ»÷µå(&)¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº
±âÈ£ ¾à¾î¸¦ ÂüÁ¶ÇϽʽÿÀ.
´ëºÎºÐÀÇ °æ¿ì ÆÄÀÌÇÁÀÇ ÀÔ·Â »çÇ×Àº SYS$INPUT¿¡¼ µ¥ÀÌÅ͸¦ ÀÐ¾î °¡Á®¿Ã ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ¸í·É ÇÁ·Î½ÃÀú°¡ ÆÄÀÌÇÁ¶óÀÎ ¼¼±×¸ÕÆ® ¸í·ÉÀ¸·Î È£ÃâµÇ¸é SYS$INPUTÀÌ ±× ¸í·É ÇÁ·Î½ÃÀú ÆÄÀÏ·Î ÀçÁöÁ¤µË´Ï´Ù. ¸í·É ÇÁ·Î½ÃÀú ³»ÀÇ ÆÄÀÌÇÁ¿¡¼ µ¥ÀÌÅ͸¦ °¡Á®¿À·Á¸é ³í¸® SYS$PIPE¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ º¸±â´Â ÆÄÀÌÇÁ¶óÀÎ DCL ¾îÇø®ÄÉÀ̼ÇÀÎ TEE.COMÀÇ ¿¹ÀÔ´Ï´Ù.
$ ! TEE.COM - command procedure to display/log data flowing through
$ ! a pipeline
$ ! Usage: @TEE log-file
$
$ OPEN/WRITE tee_file 'P1'
$ LOOP:
$ READ/END_OF_FILE=EXIT SYS$PIPE LINE
$ WRITE SYS$OUTPUT LINE ! Send it out to the next stage of the pipeline
$ WRITE tee_file LINE ! Log output to the log file
$ GOTO LOOP
$ EXIT:
$ CLOSE tee_file
$ EXIT
TEE.COMÀ» »ç¿ëÇÏ·Á¸é ´ÙÀ½ PIPE ¸í·ÉÀ» ÀÔ·ÂÇϽʽÿÀ.
$ PIPE SHOW SYSTEM | @TEE showsys.log | SEARCH SYS$INPUT LEF
TEE.COM ¸í·É ÇÁ·Î½ÃÀú´Â ÆÄÀÌÇÁ¶óÀÎÀ» ÅëÇÑ µ¥ÀÌÅÍ È帧À» ±â·ÏÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ÀÌ ¸í·É ÇÁ·Î½ÃÀú´Â SYS$INPUT ´ë½Å SYS$PIPE¿¡¼ µ¥ÀÌÅ͸¦ ÀоîµéÀÔ´Ï´Ù.
ÆÄÀÌÇÁ¶óÀο¡¼´Â PIPE ¸í·ÉÀÌ ÀԷµDZâ Àü¿¡ SET VERIFY=IMAGE ¸í·ÉÀÌ ½ÇÇàµÉ ¶§µµ ±âº»ÀûÀ¸·Î À̹ÌÁö È®ÀÎÀ» »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù. µû¶ó¼ ÆÄÀÌÇÁ¶óÀÎÀ» Åë°úÇØ °¡´Â µ¥ÀÌÅÍ ·¹Äڵ尡 Áߺ¹µÇÁö ¾Ê½À´Ï´Ù.
ÆÄÀÌÇÁ¶óÀο¡¼ À̹ÌÁö È®ÀÎÀ» »ç¿ëÇÏ·Á¸é SET VERIFY=IMAGE ¸í·ÉÀ» ÆÄÀÌÇÁ¶óÀÎ ¼¼±×¸ÕÆ® ¸í·É ¾Õ¿¡ µÎ¾î¾ß ÇÕ´Ï´Ù. ´ÙÀ½°ú °°ÀÌ ¼ºê¼ÐÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
$ PIPE ... | (SET VERIFY=IMAGE ; ...) | ...
¼ºê¼Ð ½ÇÇàÀ» À§ÇÑ PIPE ¸í·É »ç¿ë
¼ºê¼ÐÀº ±¸ºÐ ±âÈ£·Î ±¸ºÐµÈ ÇÑ °³ ÀÌ»óÀÇ ¸í·É ¼ø¼¸¦ °ýÈ£·Î ¹Àº °ÍÀÔ´Ï´Ù. ¼ºê¼ÐÀÇ Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù.
PIPE ( command-sequence [separator command-sequence]...)
¼ºê¼ÐÀÇ ¸í·É ¼ø¼´Â ÇÏÀ§ ÇÁ·Î¼¼½º ȯ°æ¿¡¼ ½ÇÇàµË´Ï´Ù. DCL¿¡¼´Â ´ÙÀ½ ¸í·É ¼ø¼¸¦ ½ÇÇàÇϱâ Àü¿¡ ¼ºê¼ÐÀÌ Á¾·áµÇ±â¸¦ ±â´Ù¸³´Ï´Ù. ±¸ºÐ ±âÈ£( )´Â SPAWN/WAIT ¸í·É°ú ºñ½ÁÇÕ´Ï´Ù.
PIPE ¸í·ÉÀ» ÀÌ Çü½ÄÀ¸·Î »ç¿ëÇÒ ¶§´Â ±âÈ£ ´ëü¸¦ ÁÖÀÇÇÏ¿© ó¸®ÇϽʽÿÀ. ±âÈ£¸¦ Á¤ÀÇÇÑ ÈÄ ±× ±âÈ£¿¡ ´ëÇÑ ÀÌÈÄ ÂüÁ¶ ¾Õ¿¡´Â ¾ÚÆÛ»÷µå(&)¸¦ ºÙ¿© ±âÈ£ ´ëü¸¦ Áö¿¬ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¸í·É ó¸® 1 ´Ü°è µ¿¾È ±âÈ£ ´ëü°¡ ÀÌ·ç¾îÁ® ±âÈ£ Á¤ÀǸ¦ ½Å·ÚÇÒ ¼ö ¾ø°Ô µË´Ï´Ù.
¹é±×¶ó¿îµå ½ÇÇàÀ» À§ÇÑ PIPE ¸í·É »ç¿ë
´ÙÀ½ Çü½ÄÀ» »ç¿ëÇÏ¿© ¸í·É ¼ø¼¸¦ ÇÏÀ§ ÇÁ·Î¼¼½º ȯ°æ¿¡¼ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
PIPE command-sequence [ separator command-sequence]... &
DCL¿¡¼ ¸í·É ¼ø¼°¡ ³¡³¯ ¶§±îÁö ±â´Ù¸®Áö ¾Ê½À´Ï´Ù. ÀÏ´Ü ¹é±×¶ó¿îµå ÇÏÀ§ ÇÁ·Î¼¼½º°¡ ¸¸µé¾îÁö¸é Á¦¾î°¡ DCL·Î ´Ù½Ã Àü´ÞµË´Ï´Ù.
ÀÔ/Ãâ·Â ÀçÁöÁ¤À» À§ÇÑ PIPE ¸í·É »ç¿ë
¸í·É ¼ø¼¸¦ »ç¿ëÇÏ¿© ´ÙÀ½°ú °°ÀÌ ¸í·ÉÀ» ½ÇÇàÇÏ´Â µ¿¾È SYS$INPUT, SYS$OUTPUT
¶Ç´Â SYS$ERROR¸¦ ÆÄÀÏ·Î ÀçÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
PIPE command-sequence < redirected-input-file
PIPE command-sequence > redirected-output-file
PIPE command-sequence 2> redirected-error-file
ÆÄÀÌÇÁ¶óÀÎ-¼¼±×¸ÕÆ® ¸í·ÉÀ» »ç¿ëÇÏ¿© SYS$INPUT, SYS$OUTPUT ¶Ç´Â SYS$ERROR¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª SYS$OUTPUT ÀçÁöÁ¤Àº ¸¶Áö¸· ÆÄÀÌÇÁ¶óÀÎ ¼¼±×¸ÕÆ® ¸í·É¿¡ ´ëÇؼ¸¸ Çã¿ëµÇ¸ç SYS$INPUT ÀçÁöÁ¤Àº ù ¹ø° ÆÄÀÌÇÁ¶óÀÎ ¼¼±×¸ÕÆ® ¸í·É¿¡ ´ëÇؼ¸¸ Çã¿ëµË´Ï´Ù.
PIPE ¸í·É ÀçÁöÁ¤Àº DEFINE ¶Ç´Â ASSIGN ¸í·ÉÀ» »ç¿ëÇÏ¿© ¸¸µç °Í°ú ´Ù¸¨´Ï´Ù.
Â÷ÀÌÁ¡Àº ´ÙÀ½°ú °°½À´Ï´Ù.
ÀçÁöÁ¤Àº °¨µ¶ÀÚ ¸ðµå¿¡¼ ¸¸µé¾îÁý´Ï´Ù. µû¶ó¼ »ç¿ëÀÚ ¸ðµå ¾îÇø®ÄÉÀ̼ǰú DCL ¸í·ÉÀÌ ¸ðµÎ ÀçÁöÁ¤ÀÇ ¿µÇâÀ» ¹Þ½À´Ï´Ù.
ÀçÁöÁ¤µÈ ȯ°æÀº ÀçÁöÁ¤ ±¸¹®À» ÁöÁ¤ÇÏ´Â ¸í·É ¼ø¼³ª ÆÄÀÌÇÁ¶óÀÎ ¼¼±×¸ÕÆ® ¸í·É¿¡¸¸ Àû¿ëµË´Ï´Ù. ¸í·É ¼ø¼³ª ÆÄÀÌÇÁ¶óÀÎ ¼¼±×¸ÕÆ® ¸í·É ½ÇÇà ÈÄ ¸í·É ½ÇÇàÀ» °è¼ÓÇϱâ Àü¿¡ ¿ø·¡ ÇÁ·Î¼¼½º ÀÔ/Ãâ·Â ȯ°æ(¿¹: SYS$INPUT, SYS$OUTPUT, SYS$ERROR)ÀÌ º¹¿øµË´Ï´Ù.
SYS$OUTPUTÀÌ ÀçÁöÁ¤µÇ¸é ¸í·É ¼ø¼°¡ ½ÇÁ¦·Î SYS$OUTPUT¿¡ ¾²°Å³ª ¾²Áö ¾Ê°Å³ª Ç×»ó ÀçÁöÁ¤µÈ Ãâ·Â ÆÄÀÏÀÌ ¸¸µé¾îÁý´Ï´Ù. ÀçÁöÁ¤µÈ Ãâ·Â ÆÄÀÏ°ú °°Àº À̸§ÀÇ ÆÄÀÏ ¹öÀüÀÌ ÀÌ¹Ì Á¸ÀçÇÏ´Â °æ¿ì¿¡´Â ±× ÆÄÀÏÀÇ »õ ¹öÀüÀÌ ¸¸µé¾îÁý´Ï´Ù. DEFINE ¶Ç´Â ASSIGN ¸í·ÉÀ» »ç¿ëÇÏ¿© °¨µ¶ÀÚ ¸ðµå¿¡¼ SYS$OUTPUTÀ» ÀçÁ¤ÀÇÇÏ´Â °æ¿ì¿¡µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. ÀçÁöÁ¤µÈ ÆÄÀÏÀº ¸í·É ¼ø¼°¡ ½ÇÇàµÇ±â Àü¿¡ ¸¸µé¾îÁø´Ù´Â Á¡¿¡ ÁÖÀÇÇϽʽÿÀ. ÀçÁöÁ¤µÈ ÆÄÀÏÀÌ ¸í·É ¼ø¼¿¡¼µµ »ç¿ëµÇ´Â °æ¿ì¿¡´Â ´ÙÀ½ º¸±âó·³ ÀÛ¾÷ÀÌ ½ÇÆÐÇÒ ¼ö ÀÖ½À´Ï´Ù.
$ PIPE SEARCH TRANS.LOG "alpha" > TRANS.LOG
%SEARCH-W-OPENIN, error opening TRANS.LOG;2 as input
-RMS-E-FLK, file currently locked by another user
ÀÌ º¸±â¿¡¼´Â TRANS.LOG ÆÄÀÏÀÇ »õ ¹öÀüÀÌ ¸¸µé¾îÁö°í ¾²±â ¾×¼¼½º¸¦ À§ÇØ ¿¸®°í SEARCH ¸í·ÉÀº ¿¹»óµÇ´Â ÀÌÀü ¹öÀü ´ë½Å °¡Àå ÃÖ±Ù TRANS.LOG ¹öÀü¿¡ ´ëÇØ Àб⠾׼¼½º¸¦ ¾òÀ¸·Á°í ½ÃµµÇÕ´Ï´Ù.
SYS$ERROR°¡ ÀçÁöÁ¤µÉ ¶§ ÀçÁöÁ¤µÈ ¿À·ù ÆÄÀÏÀº ¸í·É ¼ø¼°¡ ½ÇÇàµÇ´Â µ¿¾È ½ÇÁ¦·Î SYS$ERROR¿¡ ¾²´Â °æ¿ì¿Í ÀçÁöÁ¤µÈ ¿À·ù ÆÄÀÏ°ú °°Àº À̸§ÀÇ ±âÁ¸ ÆÄÀÏÀÌ ¾ø´Â °æ¿ì¿¡¸¸ ¸¸µé¾îÁý´Ï´Ù. ÀçÁöÁ¤µÈ ¿À·ù ÆÄÀÏ°ú °°Àº À̸§ÀÇ ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÏ´Â °æ¿ì¿¡´Â ±× ÆÄÀÏÀÌ ÀçÁöÁ¤µÈ ¿À·ù ÆÄÀÏ·Î ¿¸³´Ï´Ù. ±× ´ÙÀ½¿¡´Â ÀÌ ¸í·É ¼ø¼¿¡ ÀÇÇØ »ý¼ºµÈ ¿À·ù Ãâ·ÂÀÌ ÀçÁöÁ¤µÈ ¿À·ù ÆÄÀÏÀÇ ³¡¿¡ Ãß°¡µË´Ï´Ù. DEFINE ¶Ç´Â ASSIGN ¸í·ÉÀ» »ç¿ëÇÏ¿© °¨µ¶ÀÚ ¸ðµå¿¡¼ SYS$ERROR¸¦ ÀçÁ¤ÀÇÇÏ´Â °æ¿ì¿¡µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.
Ctrl/Y¸¦ ´©¸£¸é PIPE ¸í·ÉÀ» Áß´ÜÇÒ ¼ö ÀÖ½À´Ï´Ù. PIPE ¸í·ÉÀÌ ÆÄÀÌÇÁ¶óÀÎÀ̳ª ¼ºê¼Ð ¸í·É ¼ø¼¿¡¼ ½ÇÇàµÇ´Â °æ¿ì¿¡´Â ¸í·É ¼ø¼¿Í PIPE ¸í·ÉÀÌ »èÁ¦µË´Ï´Ù. ÀÌ °æ¿ì Áß´ÜµÈ ¹Ù·Î µÚ¿¡ ÀÔ·ÂµÈ CONTINUE ¸í·ÉÀº PIPE ¸í·É ½ÇÇàÀ» Àç°³ÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù.
PIPE ¸í·ÉÀÌ ¼ºê¼ÐÀ̳ª ÆÄÀÌÇÁ¶óÀÎ ¸í·É ¼ø¼°¡ ¾Æ´Ñ ¸í·É ¼ø¼¸¦ ½ÇÇàÇÏ´Â ÁßÀÌ¸é ¸í·É ¼ø¼°¡ PIPE ¸í·É µ¿»ç ¾øÀÌ DCL ¸í·ÉÀ¸·Î ÀԷµǾú°í Ctrl/Y¿¡ ÀÇÇØ Áß´ÜµÈ °Íó·³ µ¿ÀÛÇÕ´Ï´Ù. Ctrl/Y Áß´Ü¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº
Ctrl/Y Áß´Ü Ã³¸®¸¦ ÂüÁ¶ÇϽʽÿÀ.
PIPE ¸í·ÉÀº ½ÇÇàµÇ´Â µ¿¾È ¸î °³ÀÇ ÇÏÀ§ ÇÁ·Î¼¼½º¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¹Àº °æ¿ì ¸í·É ¼ø¼¿¡ ÀÇÇØ È£ÃâµÈ ¾îÇø®ÄÉÀ̼ÇÀº ÇÁ·Î¼¼½º ³í¸® À̸§°ú ±âÈ£ À̸§¿¡ ÀÇÁ¸ÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì¿¡´Â ÇÁ·Î¼¼½º ³í¸® À̸§°ú ±âÈ£°¡ PIPE ¸í·É¿¡ ÀÇÇØ »ý¼ºµÈ ÇÏÀ§ ÇÁ·Î¼¼½º¿¡ Àü´ÞµÇÁö ¾Êµµ·Ï ÇÏ´Â /NOLOGICAL_NAMES ¹× /NOSYMBOLS ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇÏ¿© ÇÏÀ§ ÇÁ·Î¼¼½º »ý¼ºÀ» °¡¼ÓÈÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½Àº PIPE ¸í·ÉÀ» »ç¿ëÇÏ´Â º¸±âµéÀÔ´Ï´Ù.
´ÙÀ½ º¸±â´Â ±âÈ£ Á¤ÀÇ°¡ Æ÷ÇÔµÈ ¿©·¯ ¸í·ÉÀ» »ç¿ëÇÏ¿© ¸í·É ÇÁ·Î½ÃÀú¿¡¼ À¯¿ëÇÑ µµ±¸¸¦ ¸¸µå´Â µÎ °¡Áö °£´ÜÇÑ ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù.
$ CD_WORK :== PIPE SAVE_DIR=F$DIRECTORY() ; SET DEFAULT FOO:[WORK]
$ BACK :== SET DEF 'SAVE_DIR'
$
$ CD_WORK ! Switch to working directory
$ :
$ :
$ BACK ! Switch back to home directory
$ GET_RECORD :== PIPE READ/END_OF_FILE=CLEANUP IN RECORD ; -
F$EDIT(RECORD, "COMPRESS, TRIM")
$
$ OPEN IN EMPLOYEE.DAT
$ LOOP:
$ GET_RECORD
$ :
$ :
$ GOTO LOOP
$
$ CLEAN_UP:
$ :
´ÙÀ½ º¸±â´Â ÄÄÆÄÀÏ ¹× ¸µÅ© ÀÛ¾÷À» º¸¿© ÁÝ´Ï´Ù. ÄÄÆÄÀÏ¿¡¼ ¿À·ù°¡ ¹ß»ýÇÏÁö ¾ÊÀ¸¸é °´Ã¼ ÆÄÀÏÀÌ ¸µÅ©µÇ¾î ½ÇÇà °¡´ÉÇÑ À̹ÌÁö°¡ »ý¼ºµË´Ï´Ù. ÇÁ·Î±×·¥ ÄÄÆÄÀÏ¿¡¼ ¿À·ù°¡ ¹ß»ýÇÏ¸é ¸µÅ© ´Ü°è¸¦ °Ç³Ê¶Ý´Ï´Ù.
$ PIPE cc foo.c && link foo, sys$library:vaxcrtl.olb/lib
´ÙÀ½ º¸±â´Â Á¶°Ç ¸í·É ½ÇÇàÀ» »ç¿ëÇÏ¿© ¸í·É ÇÁ·Î½ÃÀú¿¡¼ °£´ÜÇÑ ¿À·ù ó¸® Á¦¾î È帧À» ½±°Ô ¼³Á¤ÇÏ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù. COLLECT_DATA À̹ÌÁö°¡ ½ÇÆÐÇϸé Á¦¾î°¡ CLEAN_UPÀ¸·Î Àü´ÞµË´Ï´Ù.
$ PIPE RUN COLLECT_DATA.EXE GOTO CLEAN_UP
$ :
$ :
$ EXIT
$
$ CLEAN_UP:
$ :
$ :
´ÙÀ½ º¸±â¿¡¼ PIPE ¸í·ÉÀº ¹é±×¶ó¿îµå ÇÁ·Î¼¼½º¸¦ ¸¸µé¾î Å©±â°¡ Å« ÆÄÀÏ º¹»ç¸¦ ó¸®ÇÕ´Ï´Ù.
$ PIPE COPY LARGE_FILE.DAT REMOTE"user password"::[DESTINATION]*.* &
´ÙÀ½ º¸±â´Â ÇÏÀ§ ÇÁ·Î¼¼½º¿¡¼ ¼öÇàµÉ ¼ºê¼Ð ¸í·É ¼ø¼¸¦ ¼³Á¤ÇÏ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù. °á°úÀûÀ¸·Î ±âº» µð·ºÅ丮¿Í °°Àº ƯÁ¤ ÇÁ·Î¼¼½ºÀÇ Æ¯¼ºÀ» º¯°æÇصµ ¼ºê¼ÐÀÌ Á¾·áµÈ ÈÄ ÇöÀç ÇÁ·Î¼¼½º´Â ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù. ÀúÀå ÁýÇÕÀº ÇÏÀ§ µð·ºÅ丮¿¡ º¹¿øµÇ¾î FOO ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â µ¥ ÇÊ¿äÇÑ µ¥ÀÌÅ͸¦ Á¦°øÇÕ´Ï´Ù.
$ PIPE (SET DEF [.DATA_DIR] ; BACKUP DATA.SAV/SAV [...]) ; RUN FOO
´ÙÀ½ º¸±â¿¡¼´Â ÆÄÀÌÇÁ¶óÀÎ ±â´ÉÀ» »ç¿ëÇÏ¿© ½Ã½ºÅÛ »óÀÇ ¸ðµç ÈÞ¸é ÇÁ·Î¼¼½º¸¦ ÇÑ ¸í·É¿¡¼ ½Äº°ÇÕ´Ï´Ù.
$ PIPE SHOW SYSTEM | SEARCH SYS$INPUT HIB
´ÙÀ½ º¸±â¿¡¼´Â ÆÄÀÌÇÁ¶óÀÎ ±â´ÉÀ» »ç¿ëÇÏ¿© ºÒÇÊ¿äÇÑ Áß°£ ÆÄÀÏÀ» ¸¸µéÁö ¾Ê°í ÇÑ ¸í·É¿¡¼ Å×½ºÆ®¸¦ ½ÇÇàÇÏ¿© °á°ú¸¦ Á¤·ÄÇÏ°í º¥Ä¡¸¶Å© ÆÄÀÏ°ú ºñ±³ÇÕ´Ï´Ù.
$ PIPE RUN TEST | SORT/SPECIFICATION=TEST.SRT SYS$INPUT SYS$OUTPUT -
| DIFF SYS$INPUT TEST.BENCHMARK
´ÙÀ½ º¸±â´Â ¼ºê¼ÐÀ» ÆÄÀÌÇÁ¶óÀÎÀÇ ÆÄÀÌÇÁ ¼¼±×¸ÕÆ® ¸í·ÉÀ¸·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Â ÇÑ °¡Áö ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù.
$ PIPE ( SET DEF WRK$:[WORK] ; RUN REPORT ) | MAIL SYS$INPUT SMITH
´ÙÀ½ º¸±â´Â ÆÄÀÌÇÁ¶óÀÎ ³»ÀÇ /PAGE ÇÑÁ¤ÀÚ »ç¿ëÀ» º¸¿© ÁÝ´Ï´Ù. ¸î °¡Áö ´Ù¸¥ DCL ¸í·É¿¡µµ ÀÖ´Â /PAGE ±â´ÉÀº PIPE ¸í·É°ú ÇÔ²² »ç¿ëÇÏ¿© ´Ù¸¥ À¯¿ëÇÑ µµ±¸¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù.
$ more :== TYPE/PAGE=SAVE SYS$INPUT
$ PIPE ANA/RMS PAGE.TXT | more
Check RMS File Integrity 26-JAN-2002 16:12:00.06 Page 1
SYS$SYSDEVICE:[TEST]PAGE.TXT;2
FILE HEADER
File Spec: SYS$SYSDEVICE:[TEST]PAGE.TXT;2
File ID: (4135,58220,0)
Owner UIC: [PIPE]
Protection: System: RWED, Owner: RWED, Group: RE, World:
Creation Date: 26-NOV-2002 16:08:50.05
Revision Date: 26-NOV-2002 16:09:09.06, Number: 1
Expiration Date: none specified
Backup Date: none posted
Contiguity Options: none
Performance Options: none
Reliability Options: none
Journaling Enabled: none
RMS FILE ATTRIBUTES
RETURN/SPACE=More, PREV/NEXT=Scroll, INS/REM=Pan, SELECT=80/132, Q=Quit