HP OpenVMS Systems Documentation

Content starts here

14 DCLÀ» »ç¿ëÇÑ °í±Þ ÇÁ·Î±×·¡¹Ö
°í±Þ DCL ÇÁ·Î±×·¡¹Ö¿¡´Â º¹ÀâÇÑ ¸í·É ÇÁ·Î½ÃÀú¿Í PIPE ¸í·ÉÀÌ »ç¿ëµË´Ï´Ù. 13ÀåÀ» Àаí DCL ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ±âº» Áö½ÄÀ» ¾òÀº ÈÄ °í±Þ ÇÁ·Î±×·¡¹Ö ¹æ¹ýÀ» ¹è¿ì·Á¸é ÀÌ ÀåÀ» Àоî¾ß ÇÕ´Ï´Ù.
º¹ÀâÇÑ ¸í·É ÇÁ·Î½ÃÀú´Â ÇÁ·Î±×·¥°ú À¯»çÇÑ ±â´ÉÀ» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸í·É ÇÁ·Î½ÃÀú¿¡¼­ °¡º¯ ÀÔ·Â »ç¿ë, ƯÁ¤ Á¶°ÇÀÌ ÂüÀÎ °æ¿ì ÇÁ·Î½ÃÀúÀÇ ¼½¼Ç ½ÇÇà, ¼­ºê ·çƾ ½ÇÇà ¶Ç´Â ´Ù¸¥ ¸í·É ÇÁ·Î½ÃÀú È£Ãâ µîÀÌ °¡´ÉÇÕ´Ï´Ù.
¶ÇÇÑ, DCL ¸í·ÉÀÎ PIPE ¸í·ÉÀ» »ç¿ëÇÏ¿© ÇÁ·Î±×·¥°ú °°Àº ±â´ÉÀ» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, µ¿ÀÏÇÑ DCL ¸í·ÉÇà¿¡¼­ PIPE ¸í·ÉÀ» »ç¿ëÇÏ¿© ´ÙÀ½ Áß ÇÑ °¡Áö ÀÌ»óÀÇ ÀÛ¾÷À» ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÆÄÀÌÇÁ¶óÀÎÈ­(¸í·É ¼ø¼­)
ÀÔ/Ãâ·Â ÀçÁöÁ¤
¿©·¯ ¸í·É ¹× Á¶°Ç ¸í·É ½ÇÇà
¹é±×¶ó¿îµå ó¸®
ÀÌ Àå¿¡¼­´Â ´ÙÀ½ »çÇ׿¡ ´ëÇÏ¿© ¼³¸íÇÕ´Ï´Ù.
¸í·É ÇÁ·Î½ÃÀú ÀÔ·Â
¸Å°³ º¯¼ö¸¦ »ç¿ëÇÏ¿© ÁßøµÈ ¸í·É ÇÁ·Î½ÃÀú¿¡ µ¥ÀÌÅÍ Àü´Þ
¸í·É ÇÁ·Î½ÃÀú Ãâ·Â
ÆÄÀÏ ÀÐ±â ¹× ¾²±â(ÆÄÀÏ I/O)
ÆÄÀÏ I/O ¿À·ù ó¸®
½ÇÇà È帧 Á¦¾î ¹æ¹ý
»õ·Î¿î ¸í·É ¼öÁØ ¸¸µé±â
Case ¹® ÀÛ¼º
PIPE ¸í·É »ç¿ë
¸í·É ÇÁ·Î½ÃÀú ÀÔ·Â
¸í·É ÇÁ·Î½ÃÀú¿¡´Â »ç¿ëÀÚ°¡ Á¦°øÇÏ´Â µ¥ÀÌÅÍ°¡ ÇÊ¿äÇÑ °æ¿ì°¡ ¸¹½À´Ï´Ù. ÀÌ·¯ÇÑ µ¥ÀÌÅÍ´Â 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ÀÔ´Ï´Ù.
$ @ADDER 24 25
ÇÊ¿äÇÑ º¯È¯ÀÌ ÀÚµ¿À¸·Î ¼öÇàµÇ¹Ç·Î Á¤¼ö¿Í ¹®ÀÚ¿­ Ç¥Çö½Ä ¸ðµÎ P1¿¡¼­ P8 ±âÈ£¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸Å°³ º¯¼ö¸¦ ¹®ÀÚ¿­·Î ÁöÁ¤
¹®ÀÚ¿­ÀÇ °ø¹é, ÅÇ ¶Ç´Â ¼Ò¹®ÀÚ¸¦ ±×´ë·Î À¯ÁöÇÏ·Á¸é ´ÙÀ½ º¸±â¿Í °°ÀÌ ¹®ÀÚ¿­ ÀüÈÄ¿¡ ÀÎ¿ë ºÎÈ£(¡° ¡±)¸¦ ³Ö½À´Ï´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°½À´Ï´Ù.
$ @DATA "Paul Cramer"
´ÙÀ½ º¸±â¿¡¼­ P1Àº Paul CramerÀÌ°í P2´Â nullÀÔ´Ï´Ù. ÀÎ¿ë ºÎÈ£¸¦ »ý·«ÇÏ¸é ´ÙÀ½ º¸±â¿Í °°ÀÌ °¢ ¹®ÀÚ¿­ÀÌ º°°³ÀÇ ¸Å°³ º¯¼ö·Î Àü´ÞµË´Ï´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°½À´Ï´Ù.
$ @DATA Paul Cramer
ÀÌ º¸±â¿¡¼­´Â ¹®ÀÚ¿­ Paul°ú Cramer°¡ ´ë¹®ÀÚ·Î º¯È¯µÇ¾î P1Àº PAULÀÌ°í P2´Â CRAMERÀÔ´Ï´Ù.
´ÙÀ½ ¸í·ÉÀ» »ç¿ëÇÏ¿© DATA.COMÀ» È£ÃâÇÏ´Â °æ¿ì´Â ´ÙÀ½°ú °°½À´Ï´Ù.
$ @DATA "Paul Cramer" 24 "(555) 111-1111")
DATA.COM¿¡¼­ P1¿¡¼­ P8´Â ¾Æ·¡¿Í °°ÀÌ Á¤Àǵ˴ϴÙ.
P1 = Paul Cramer
P2 = 24
P3 = (555) 111-1111
P4-P8 = null
¸Å°³ º¯¼ö¸¦ ±âÈ£·Î ÁöÁ¤
¸Å°³ º¯¼ö °ªÀ» ±âÈ£·Î Àü´ÞÇÏ·Á¸é ±âÈ£ Àü/ÈÄ¿¡ ¾îÆ÷½ºÆ®·ÎÇǸ¦ ³Ö½À´Ï´Ù. ±âÈ£ °ªÀÇ °ø¹é, ÅÇ, ¼Ò¹®ÀÚ¸¦ ±×´ë·Î À¯ÁöÇÏ·Á¸é ±âÈ£ °ªÀ» ¼¼ ½ÖÀÇ ÀÎ¿ë ºÎÈ£·Î ¹­¾î¾ß ÇÕ´Ï´Ù. ÀÎ¿ë ºÎÈ£¸¦ ¹®ÀÚ¿­ÀÇ ÀϺηΠÆ÷ÇÔ½Ãų °æ¿ì¿¡µµ ¼¼ ½ÖÀÇ ÀÎ¿ë ºÎÈ£¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
ÅؽºÆ®¸¦ ÀÎ¿ë ºÎÈ£·Î ¹­°í ¾îÆ÷½ºÆ®·ÎÇǸ¦ ±âÈ£ ¾Õ¿¡ µÎ °³, µÚ¿¡ ÇÑ °³¾¿ ³Ö´Â ¹æ¹ýµµ ÀÖ½À´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼­´Â ±âÈ£¸¦ ¸í·É ÇÁ·Î½ÃÀú¿¡ Àü´ÞÇÒ ¶§ ÀÎ¿ë ºÎÈ£°¡ Á¦°ÅµÇ¾ú±â ¶§¹®¿¡ 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 ¸Å°³ º¯¼öÀÔ´Ï´Ù.
$ @DATA "" "Paul Cramer"
ÀÌ º¸±â¿¡¼­ 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Àº ´ÙÀ½°ú °°ÀÌ Á¤Àǵ˴ϴÙ.
P1 = PAUL
P2 = CRAMER
P3 = JOE
P4 = COOPER
P5-P8 = null
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 ¸í·ÉÀº ´ÙÀ½°ú °°Àº Â÷ÀÌ°¡ ÀÖ½À´Ï´Ù.
Ç¥ 14-1
INQUIRE ¸í·É
READ ¸í·É
°ªÀ» À§ÇÑ ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù.
°ªÀ» À§ÇÑ ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù.
Å͹̳ηκÎÅÍ °ªÀ» ÀнÀ´Ï´Ù.
ù ¹ø° ¸Å°³ º¯¼ö·Î ÁöÁ¤µÈ ¼Ò½º·ÎºÎÅÍ °ªÀ» ÀнÀ´Ï´Ù
°ªÀ» ±âÈ£¿¡ ÇÒ´çÇÕ´Ï´Ù.
°ªÀ» µÎ ¹ø° ¸Å°³ º¯¼ö·Î¼­ À̸§ÀÌ ÁöÁ¤µÈ ±âÈ£¿¡ ÇÒ´çÇÕ´Ï´Ù

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 ¸í·É ¸ñ·ÏÀÔ´Ï´Ù.
Ç¥ 14-2
=
ALLOCATE
ASSIGN
ATTACH
CALL
CANCEL
CLOSE
CONNECT
CONTINUE
CREATE/LOGICAL_NAME_TABLE
DEALLOCATE
DEASSIGN
DEBUG
DECK
DEFINE
DEFINE/KEY
DELETE/SYMBOL
DISCONNECT
ELSE
ENDIF
ENDSUBROUTINE
EOD
EXAMINE
EXIT
GOSUB
GOTO
IF
INQUIRE
ON
OPEN
READ
RECALL
RETURN
SET CONTROL
SET DEFAULT
SET KEY
SET ON
SET OUTPUT_RATE
SET PROMPT
SET PROTECTION/DEFAULT
SET SYMBOL/SCOPE
SET UIC
SET VERIFY
SHOW DEFAULT
SHOW KEY
SHOW PROTECTION
SHOW QUOTA
SHOW STATUS
SHOW SYMBOL
SHOW TIME
SHOW TRANSLATION
SPAWN
STOP
SUBROUTINE
THEN
WAIT
WRITE

´ÙÀ½ º¸±â´Â 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$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)
¸í·É ÇÁ·Î½ÃÀú¿¡¼­ ÆÄÀÏÀ» ÀÐ°í ¾²´Â ±âº»ÀûÀÎ ´Ü°è´Â ´ÙÀ½°ú °°½À´Ï´Ù.
Ç¥ 14-3
´Ü°è
ÀÛ¾÷
1
OPEN ¸í·ÉÀ» »ç¿ëÇÏ¿© ÆÄÀÏÀ» ¿±´Ï´Ù.
ÆÄÀÏÀ» ¿­¸é ÆÄÀÏ¿¡ ³í¸® À̸§ÀÌ ÇÒ´çµÇ°í Àбâ ÆÄÀÏÀÎÁö ¾²±â ÆÄÀÏÀÎÁö ¶Ç´Â ÀÐ°í ¾²´Â ÆÄÀÏÀÎÁö ¿©ºÎ°¡ ÁöÁ¤µË´Ï´Ù. ÀÌÈÄÀÇ READ, WRITE, CLOSE ¸í·É¿¡¼­´Â ÀÌ ³í¸® À̸§À» »ç¿ëÇÏ¿© ÇØ´ç ÆÄÀÏÀ» ÂüÁ¶ÇÕ´Ï´Ù.
2
READ ¶Ç´Â WRITE ¸í·ÉÀ» »ç¿ëÇÏ¿© ÆÄÀÏ¿¡ ·¹Äڵ带 Àаųª ¾¹´Ï´Ù.
ÆÄÀÏ¿¡ ´ëÇÑ ÀԷ°ú Ãâ·ÂÀº ÀϹÝÀûÀ¸·Î ·¹Äڵ带 Àаí ó¸®ÇÏ¿© ¼öÁ¤ÇÑ ·¹Äڵ带 µ¿ÀÏÇÑ ÆÄÀÏÀ̳ª ´Ù¸¥ ÆÄÀÏ¿¡ ¾²´Â ·çÇÁ¸¦ ÅëÇØ ¼öÇàµË´Ï´Ù.
3
CLOSE ¸í·ÉÀ» »ç¿ëÇÏ¿© ÆÄÀÏÀ» ´Ý½À´Ï´Ù.
CLOSE ¸í·ÉÀ» Æ÷ÇÔ½ÃÅ°Áö ¾ÊÀ¸¸é ·Î±×¾Æ¿ôÇÒ ¶§±îÁö ÆÄÀÏÀÌ ¿­·Á ÀÖ½À´Ï´Ù.

ÁÖ SYS$INPUT, SYS$OUTPUT, SYS$COMMAND ¹× SYS$ERROR µîÀÇ ¿µ±¸ ÇÁ·Î¼¼½º ÆÄÀÏÀº º°µµ·Î Àаųª ¾²Áö ¾Ê¾Æµµ ·Î±×ÀÎÇÒ ¶§ ÀÚµ¿À¸·Î ¿­¸³´Ï´Ù.
´ÙÀ½ Àý¿¡¼­ ¼³¸íÇÒ ³»¿ëÀº ´ÙÀ½°ú °°½À´Ï´Ù.
OPEN ¸í·É »ç¿ë
ÆÄÀÏ¿¡ ¾²±â
WRITE ¸í·É »ç¿ë
READ ¸í·É »ç¿ë
CLOSE ¸í·É »ç¿ë
ÆÄÀÏ ¼öÁ¤
·¹ÄÚµå ¾÷µ¥ÀÌÆ®
»õ Ãâ·Â ÆÄÀÏ ¸¸µé±â
ÆÄÀÏ¿¡ ·¹ÄÚµå Ãß°¡
OPEN ¸í·É »ç¿ë
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
ÆÄÀÏ¿¡ ¾²±â
ÆÄÀÏ¿¡ ¾²·Á¸é ´ÙÀ½ ÀýÂ÷¸¦ »ç¿ëÇϽʽÿÀ.
Ç¥ 14-4
´Ü°è
ÀÛ¾÷
1
¾²±â À§ÇØ ÆÄÀÏÀ» ¿±´Ï´Ù.
2
·¹À̺íÀ» »ç¿ëÇÏ¿© ¾²±â ·çÇÁ¸¦ ½ÃÀÛÇÕ´Ï´Ù.
ÆÄÀÏ I/O´Â ´ÜÀÏ ·¹Äڵ带 ¾²°Å³ª Àд °æ¿ì°¡ ¾Æ´Ï¸é Ç×»ó ·çÇÁ·Î ¼öÇàµË´Ï´Ù.
3
¾²¿©Áú µ¥ÀÌÅ͸¦ ÀнÀ´Ï´Ù.
INQUIRE ¸í·ÉÀ̳ª READ ¸í·ÉÀ» »ç¿ëÇÏ¿© µ¥ÀÌÅ͸¦ ±âÈ£·Î ÀÐ¾î µéÀÔ´Ï´Ù.
4
µ¥ÀÌÅ͸¦ Å×½ºÆ®ÇÕ´Ï´Ù.
µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÑ ±âÈ£¸¦ Á¡°ËÇÕ´Ï´Ù. ±âÈ£°¡ nullÀ̸é(¿¹: ReturnÅ°¸¦ ´©¸£°í ±× Çà¿¡ µ¥ÀÌÅ͸¦ ÀÔ·ÂÇÏÁö ¾ÊÀº °æ¿ì) ÆÄÀÏ¿¡ ¾²¿©Áú µ¥ÀÌÅÍÀÇ ³¡¿¡ À̸£·¶À¸¸ç ·çÇÁÀÇ ³¡À¸·Î °¡¾ß ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é °è¼ÓÇÕ´Ï´Ù.
5
µ¥ÀÌÅ͸¦ ÆÄÀÏ¿¡ ¾¹´Ï´Ù.
WRITE ¸í·ÉÀ» »ç¿ëÇÏ¿© ±âÈ£ÀÇ °ª(ÇÑ °³ÀÇ ·¹ÄÚµå)À» ÆÄÀÏ¿¡ ¾¹´Ï´Ù.
6
·çÇÁÀÇ ½ÃÀÛÀ¸·Î µ¹¾Æ°©´Ï´Ù.
ÆÄÀÏ¿¡ ¾µ µ¥ÀÌÅÍ°¡ ¾øÀ» ¶§±îÁö ·çÇÁ ³»¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù.
7
·çÇÁ¸¦ ³¡³»°í ÆÄÀÏÀ» ´Ý½À´Ï´Ù.

´ÙÀ½ ¸í·É ÇÁ·Î½ÃÀú´Â »õ ÆÄÀÏ 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 ¸í·É »ç¿ë ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.
µ¥ÀÌÅÍ ÁöÁ¤
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¿¡ ¾²¿©Áø µ¥ÀÌÅ͸¦ Ç¥½ÃÇÕ´Ï´Ù.
/SYMBOL ÇÑÁ¤ÀÚ »ç¿ë
WRITE ¸í·ÉÀº ·¹Äڵ带 ¾²°í ·¹ÄÚµå Æ÷ÀÎÅ͸¦ ±× ·¹ÄÚµå ´ÙÀ½À¸·Î À̵¿ÇÕ´Ï´Ù.
WRITE ¸í·ÉÀ» »ç¿ëÇÏ¿© 2,048¹ÙÀÌÆ® ±æÀÌÀÇ ·¹ÄÚµå±îÁö ¾µ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ Á¶°Ç Áß Çϳª°¡ Á¸ÀçÇÏ´Â °æ¿ì¿¡´Â ·¹Äڵ带 ¾µ ¶§ /SYMBOL ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇϽʽÿÀ.
·¹Äڵ尡 1,024¹ÙÀÌÆ®º¸´Ù ±ä °æ¿ì
WRITE ¸í·É¿¡ Àִ ǥÇö½ÄÀÌ 255¹ÙÀÌÆ®º¸´Ù ±ä °æ¿ì
±ä ·¹ÄÚµå ¾²±â¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº OpenVMS DCL DictioanryÀÇ WRITE ¸í·É¿¡ ´ëÇÑ ¼³¸íÀ» ÂüÁ¶ÇϽʽÿÀ.
/UPDATE ÇÑÁ¤ÀÚ »ç¿ë
»õ ·¹Äڵ带 »ðÀÔÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ·¹Äڵ带 º¯°æÇÏ´Â °æ¿ì¿¡´Â WRITE ¸í·ÉÀ» /UPDATE ÇÑÁ¤ÀÚ¿Í ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. /UPDATE ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇÏ·Á¸é Àбâ¿Í ¾²±â¸¦ ¸ðµÎ ÇÒ ¼ö ÀÖµµ·Ï ÆÄÀÏÀ» ¿­¾î¾ß ÇÕ´Ï´Ù.
READ ¸í·É »ç¿ë
·¹Äڵ带 ÀÐ°í ±× ³»¿ëÀ» ±âÈ£¿¡ ÇÒ´çÇÏ·Á¸é READ ¸í·ÉÀ» »ç¿ëÇÕ´Ï´Ù. READ ¸í·ÉÀ» »ç¿ëÇÏ¿© ±æÀÌ°¡ 1,024ÀÚ ÀÌÇÏÀÎ ·¹Äڵ带 ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù. ÆÄÀÏ¿¡¼­ µ¥ÀÌÅ͸¦ ÀÐÀ¸·Á¸é ´ÙÀ½ ÀýÂ÷¸¦ »ç¿ëÇϽʽÿÀ.
Ç¥ 14-5
´Ü°è
ÀÛ¾÷
1
Àб⸦ À§ÇØ ÆÄÀÏÀ» ¿±´Ï´Ù.
2
·¹À̺íÀ» »ç¿ëÇÏ¿© Àб⠷çÇÁ¸¦ ½ÃÀÛÇÕ´Ï´Ù.
ÆÄÀÏ I/O´Â ´ÜÀÏ ·¹Äڵ带 ¾²°Å³ª Àд °æ¿ì°¡ ¾Æ´Ï¸é Ç×»ó ·çÇÁ·Î ¼öÇàµË´Ï´Ù.
3
ÆÄÀÏ¿¡¼­ µ¥ÀÌÅ͸¦ ÀнÀ´Ï´Ù.
READ ¸í·ÉÀ» /END_OF_FILE ÇÑÁ¤ÀÚ¿Í ÇÔ²² »ç¿ëÇÏ¿© ·¹Äڵ带 ÀÐ°í ±× ³»¿ëÀ» ±âÈ£¿¡ ÇÒ´çÇÕ´Ï´Ù. /END_OF_FILE ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇϸé ÆÄÀÏ ³¡¿¡ µµ´ÞÇÒ ¶§ /END_OF_FILE ÇÑÁ¤ÀÚ¿¡ ÀÇÇØ ÁöÁ¤µÈ ·¹À̺í·Î Á¦¾î°¡ Àü´ÞµË´Ï´Ù. ÀϹÝÀûÀ¸·Î »ç¿ëÀÚ°¡ Àб⠷çÇÁÀÇ ³¡À» Ç¥½ÃÇÏ´Â ·¹À̺íÀ» ÁöÁ¤ÇÕ´Ï´Ù.
4
µ¥ÀÌÅ͸¦ ó¸®ÇÕ´Ï´Ù.
ÆÄÀÏÀ» ¼øÂ÷ÀûÀ¸·Î ÀÐÀ» ¶§´Â ÇöÀç ·¹Äڵ带 ´ÙÀ½ ·¹Äڵ带 Àбâ Àü¿¡ ó¸®ÇÕ´Ï´Ù.
5
·çÇÁÀÇ Ã³À½À¸·Î µ¹¾Æ°©´Ï´Ù.
ÆÄÀÏ ³¡¿¡ À̸¦ ¶§±îÁö ·çÇÁ¿¡ ³²¾Æ ÀÖ½À´Ï´Ù.
6
·çÇÁ¸¦ Á¾·áÇÏ°í ÆÄÀÏÀ» ´Ý½À´Ï´Ù.

´ÙÀ½ ¸í·É ÇÁ·Î½ÃÀú´Â 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 ÇÑÁ¤ÀÚ »ç¿ë
ÆÄÀÏ¿¡¼­ ÀÐÀ» ¶§´Â ÀϹÝÀûÀ¸·Î ÆÄÀÏ ³¡¿¡ µµ´ÞÇÒ ¶§±îÁö °¢ ·¹Äڵ带 Àаí ó¸®ÇÕ´Ï´Ù. /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 ÇÑÁ¤ÀÚ ¾øÀÌ »ç¿ëÇÏ¿© ÆÄÀÏÀÇ ³ª¸ÓÁö ºÎºÐÀ» ¼øÂ÷ÀûÀ¸·Î ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù.
/DELETE ÇÑÁ¤ÀÚ »ç¿ë
READ ¸í·É°ú ÇÔ²² /DELETE ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇÏ¿© À妽ºµÈ ¼øÂ÷Àû ÆÄÀÏ¿¡¼­ ·¹Äڵ带 »èÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù. /DELETE ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇÏ¸é ·¹Äڵ带 ÀÐÀº ÈÄ ±× ·¹Äڵ尡 ÆÄÀÏ¿¡¼­ »èÁ¦µË´Ï´Ù. ÁÖ¾îÁø Å°¿¡ ÀÇÇØ ÁöÁ¤µÈ ·¹Äڵ带 »èÁ¦ÇÏ·Á¸é /DELETE ÇÑÁ¤ÀÚ¸¦ /INDEX ¹× /KEY ÇÑÁ¤ÀÚ¿Í ÇÔ²² »ç¿ëÇÕ´Ï´Ù.
/DELETE, /INDEX ¹× /KEY ÇÑÁ¤ÀÚ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº OpenVMS DCL DictionaryÀÇ READ ¸í·É¿¡ ´ëÇÑ ¼³¸íÀ» ÂüÁ¶ÇϽʽÿÀ.
Close ¸í·É »ç¿ë
CLOSE ¸í·ÉÀ» »ç¿ëÇÏ¿© ÆÄÀÏÀ» ´Ý°í OPEN ¸í·ÉÀ¸·Î ¸¸µé¾îÁø ³í¸® À̸§ÀÇ ÇÒ´çÀ» Ãë¼ÒÇÕ´Ï´Ù. ¸í·É ÇÁ·Î½ÃÀú¸¦ Á¾·áÇϱâ Àü¿¡ ¸í·É ÇÁ·Î½ÃÀú¿¡¼­ ¿¬ ¸ðµç ÆÄÀÏÀ» ´Ý¾Æ¾ß ÇÕ´Ï´Ù. ¿­¸° ÆÄÀÏÀ» ´ÝÁö ¾ÊÀ¸¸é ¸í·É ÇÁ·Î½ÃÀú¸¦ Á¾·áÇÒ ¶§ ÆÄÀÏÀÌ ¿­¸° ä·Î ³²°Ô µÇ°í ±× ¿­¸° ÆÄÀÏ¿¡ ÇÒ´çµÈ ³í¸® À̸§ÀÌ ÇÁ·Î¼¼½º ³í¸® À̸§ Å×ÀÌºí¿¡¼­ »èÁ¦µÇÁö ¾Ê½À´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼­ CLOSE ¸í·ÉÀº STATS.DAT ÆÄÀÏÀ» ´Ý°í ³í¸® À̸§ÀÎ INFILEÀÇ ÇÒ´çÀ» Ãë¼ÒÇÕ´Ï´Ù.
$ OPEN INFILE DISK4:[MURPHY]STATS.DAT
.
.
.
$ CLOSE INFILE
ÆÄÀÏ ¼öÁ¤
ÀÌ Àý¿¡¼­´Â ´ÙÀ½ ¼¼ °¡Áö ÆÄÀÏ ¼öÁ¤ ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.
·¹ÄÚµå ¾÷µ¥ÀÌÆ®
»õ Ãâ·Â ÆÄÀÏ ¸¸µé±â
·¹ÄÚµå Ãß°¡
·¹ÄÚµå ¾÷µ¥ÀÌÆ®
·¹Äڵ带 ¾÷µ¥ÀÌÆ®ÇÏ¿© ¼öÁ¤ÇÒ ¶§´Â ÆÄÀÏ¿¡ ÀÖ´Â ÀûÀº ¼öÀÇ ·¹Äڵ忡 ´ëÇØ °£´ÜÇÑ »çÇ×À» º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¹æ¹ýÀ¸·Î´Â ÆÄÀÏÀÇ ·¹ÄÚµå Å©±â³ª ·¹ÄÚµå ¼ö¸¦ º¯°æÇÒ ¼ö ¾øÀ¸¹Ç·Î µ¥ÀÌÅÍ ÆÄÀÏ°ú °°ÀÌ Çü½ÄÈ­µÈ ·¹Äڵ尡 ÀÖ´Â ÆÄÀÏÀÇ °æ¿ì¿¡¸¸ ÀÌ ¹æ¹ýÀ» »ç¿ëÇϽʽÿÀ.
ÆÄÀÏ¿¡¼­ °£´ÜÇÑ »çÇ×À» º¯°æÇÏ·Á¸é ´ÙÀ½ ÀýÂ÷¸¦ »ç¿ëÇϽʽÿÀ.
Ç¥ 14-6
´Ü°è
ÀÛ¾÷
1
Àбâ¿Í ¾²±â°¡ °¡´ÉÇϵµ·Ï ÆÄÀÏÀ» ¿±´Ï´Ù.
2
READ ¸í·ÉÀ» »ç¿ëÇÏ¿© ¼öÁ¤ÇÏ·Á´Â ·¹Äڵ忡 µµ´ÞÇÒ ¶§±îÁö ÆÄÀÏÀ» ÀнÀ´Ï´Ù.
3
·¹Äڵ带 ¼öÁ¤ÇÕ´Ï´Ù.
¼øÂ÷Àû ÆÄÀÏ¿¡¼­´Â ÀÌ ·¹ÄÚµå ÅؽºÆ®ÀÇ Å©±â°¡ ¿ø·¡ ·¹ÄÚµå¿Í ²À°°¾Æ¾ß ÇÕ´Ï´Ù. ¼öÁ¤ÇÑ ·¹ÄÚµåÀÇ ÅؽºÆ®°¡ ´õ ªÀº °æ¿ì¿¡´Â ¿ø·¡ ·¹ÄÚµå¿Í °°Àº ±æÀÌ°¡ µÉ ¶§±îÁö ³¡¿¡ °ø¹éÀ» Ãß°¡ÇϽʽÿÀ. ¼öÁ¤ÇÑ ·¹ÄÚµå ÅؽºÆ®°¡ ´õ ±ä °æ¿ì¿¡´Â »õ ÆÄÀÏÀ» ¸¸µé¾î¾ß ÇÕ´Ï´Ù.
4
WRITE/UPDATE ¸í·ÉÀ» »ç¿ëÇÏ¿© ¼öÁ¤ÇÑ ·¹Äڵ带 ÆÄÀÏ¿¡ ´Ù½Ã ¾¹´Ï´Ù.
5
º¯°æÇÏ·Á´Â ¸ðµç ·¹Äڵ带 º¯°æÇÒ ¶§±îÁö 2 ´Ü°è¿Í 4 ´Ü°è¸¦ ¹Ýº¹ÇÕ´Ï´Ù.
6
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 ¸í·ÉÀ» »ç¿ëÇÏ¿© »õ ÆÄÀÏÀ» ¾²±â ¾×¼¼½º¸¦ À§ÇØ ¿±´Ï´Ù. »õ ÆÄÀÏÀº ¿ø·¡ ÆÄÀÏ À̸§°ú °°Àº À̸§À» »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ¹öÀü ¹øÈ£´Â ÀÌÀü ÆÄÀϺ¸´Ù Çϳª À§·Î ÇÕ´Ï´Ù.
ÁÖ ¿Ã¹Ù¸¥ ÆÄÀÏÀ» ¿­¾î¼­ Àеµ·Ï ÇÏ·Á¸é ¾²±â ¾×¼¼½º¸¦ À§ÇÑ »õ ¹öÀüÀ» ¿­±â Àü¿¡ Àб⠾׼¼½º¸¦ À§ÇØ ±âÁ¸ ÆÄÀÏÀ» ¸ÕÀú ¿­¾î¾ß ÇÕ´Ï´Ù.
¼öÁ¤ÇÒ ¼ö ÀÖ´Â ÆÄÀÏÀ» ¸¸µé·Á¸é ´ÙÀ½ ÀýÂ÷¸¦ »ç¿ëÇϽʽÿÀ.
Ç¥ 14-7
´Ü°è
ÀÛ¾÷
1
Àб⠾׼¼½º¸¦ À§ÇØ ÆÄÀÏÀ» ¿±´Ï´Ù.
ÀÌ ÆÄÀÏÀº ¼öÁ¤ÇÏ·Á´Â ÀÔ·Â ÆÄÀÏÀÔ´Ï´Ù.
2
¾²±â ¾×¼¼½º¸¦ À§ÇØ »õ ÆÄÀÏÀ» ¿±´Ï´Ù.
ÀÌ ÆÄÀÏÀº »õ·Î ¸¸µå´Â Ãâ·Â ÆÄÀÏÀÔ´Ï´Ù. Ãâ·Â ÆÄÀÏ¿¡ ÀÔ·Â ÆÄÀÏ°ú °°Àº À̸§À» »ç¿ëÇÏ´Â °æ¿ì¿¡´Â Ãâ·Â ÆÄÀÏÀÇ ¹öÀü ¹øÈ£°¡ ÀÔ·Â ÆÄÀϺ¸´Ù Çϳª À§°¡ µË´Ï´Ù.
3
READ ¸í·ÉÀ» »ç¿ëÇÏ¿© ¼öÁ¤ÇÏ·Á´Â ÆÄÀÏÀÇ °¢ ·¹Äڵ带 ÀнÀ´Ï´Ù.
¿ø·¡ ÆÄÀÏ¿¡¼­ °¢ ·¹Äڵ带 ÀÐÀ» ¶§ ó¸® ¹æ¹ýÀ» °áÁ¤ÇÕ´Ï´Ù.
4
·¹Äڵ带 ³¡±îÁö Àаí ó¸®ÇÕ´Ï´Ù.
5
CLOSE ¸í·ÉÀ» »ç¿ëÇÏ¿© ÀÔ·Â ÆÄÀÏ°ú Ãâ·Â ÆÄÀÏÀ» ¸ðµÎ ´Ý½À´Ï´Ù.

´ÙÀ½ Ç¥¿¡¼­ RECORD ±âÈ£´Â ¿ø·¡ ÆÄÀÏ¿¡¼­ÀÇ ·¹ÄÚµå Àб⸦ Æ÷ÇÔÇÕ´Ï´Ù.
Ç¥ 14-8
·¹ÄÚµå »óÅÂ
ó¸® ¹æ¹ý
Not changed
°°Àº ±âÈ£¸¦ »õ ÆÄÀÏ¿¡ ¾¹´Ï´Ù.
Changed
INQUIRE ¸í·ÉÀ» »ç¿ëÇÏ¿© ´Ù¸¥ ·¹Äڵ带 ±âÈ£¿¡ ÀоîµéÀÎ ´ÙÀ½ ¼öÁ¤ÇÑ ±âÈ£¸¦ »õ ÆÄÀÏ¿¡ ¾¹´Ï´Ù.
Deleted
±âÈ£¸¦ »õ ÆÄÀÏ¿¡ ¾²Áö ¾Ê½À´Ï´Ù.
Inserted
·çÇÁ¸¦ »ç¿ëÇÏ¿© ·¹Äڵ带 ±âÈ£·Î ÀоîµéÀÌ°í ±× ±âÈ£¸¦ »õ ÆÄÀÏ¿¡ ¾¹´Ï´Ù.

º¸±â: ·¹ÄÚµå ¼öÁ¤
´ÙÀ½ º¸±â¿¡¼­´Â 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 ¸í·É)¸¦ »ç¿ëÇϽʽÿÀ.
Ç¥ 14-9
´Ü°è
ÀÛ¾÷
1
OPEN ¸í·ÉÀ» /APPEND ÇÑÁ¤ÀÚ¿Í ÇÔ²² »ç¿ëÇÏ¿© ·¹ÄÚµå Æ÷ÀÎÅÍ°¡ ÆÄÀÏ ³¡¿¡ À§Ä¡Çϵµ·Ï ÇÕ´Ï´Ù.
/APPEND ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇϸé ÆÄÀÏÀÇ »õ ¹öÀüÀÌ ¸¸µé¾îÁöÁö ¾Ê½À´Ï´Ù.
2
WRITE ¸í·ÉÀ» »ç¿ëÇÏ¿© »õ µ¥ÀÌÅÍ ·¹Äڵ带 ¾¹´Ï´Ù.
3
·¹Äڵ带 °è¼Ó Ãß°¡ÇÕ´Ï´Ù.
4
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
ÆÄÀÏ I/O ¿À·ù ó¸®
½Ã½ºÅÛ ¿À·ù ¸Þ½ÃÁö°¡ Ç¥½ÃµÇÁö ¾Êµµ·Ï ÇÏ°í ÁöÁ¤µÈ ·¹À̺í·Î Á¦¾î¸¦ Àü´ÞÇÏ·Á¸é /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, THEN, ELSE
GOTO
GOSUB
CALL
¸í·É ºí·Ï »ç¿ë
Case ¹® ÀÛ¼º
·çÇÁ ÀÛ¼º
IF ¸í·É »ç¿ë
IF ¸í·ÉÀ» »ç¿ëÇÏ¿© Ç¥Çö½Ä °ªÀ» °Ë»çÇÏ°í Ç¥Çö½Ä °á°ú°¡ Âü(true)ÀÏ ¶§ ¸í·ÉÀ̳ª ¸í·É ºí·ÏÀ» ½ÇÇàÇÕ´Ï´Ù. Ç¥Çö½Ä °á°ú°¡ °ÅÁþ(false)ÀÌ¸é ´ÙÀ½ Áß ÇÑ °¡Áö °á°ú°¡ ¹ß»ýÇÕ´Ï´Ù.
THEN ¸í·É µÚ¿¡ ÇϳªÀÇ ¸í·ÉÀÌ ³ª¿À¸é ±× ¸í·ÉÀÌ ½ÇÇàµÇÁö ¾Ê°í ±× ´ÙÀ½¿¡ ³ª¿À´Â ¸í·ÉÀÌ ½ÇÇàµË´Ï´Ù.
THEN ¸í·É µÚ¿¡ ¸í·É ºí·ÏÀÌ ³ª¿À°í ELSE ¸í·ÉÀÌ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é ENDIF ¸í·É ¹Ù·Î µÚ¿¡ ³ª¿À´Â ¸í·ÉÀÌ ½ÇÇàµË´Ï´Ù.
ELSE ¸í·ÉÀÌ ÁöÁ¤µÇ¾î ÀÖÀ¸¸é ELSE ¸í·É µÚ¿¡ ³ª¿À´Â ¸í·ÉÀ̳ª ¸í·É ºí·ÏÀÌ ½ÇÇàµË´Ï´Ù.
DCL¿¡¼­ Á¦°øÇÏ´Â IF ¸í·ÉÀº µÎ °¡Áö Çü½ÄÀÌ ÀÖ½À´Ï´Ù. ù ¹ø° Çü½ÄÀº 13Àå¿¡¼­ ¼³¸íÇÑ °Íó·³ IF ¸í·É¿¡ ÁöÁ¤µÈ Ç¥Çö½ÄÀÌ ÂüÀÏ ¶§ ´ÜÀÏ ¸í·ÉÀ» ½ÇÇàÇÏ´Â °ÍÀÔ´Ï´Ù.
µÎ ¹ø° IF Çü½ÄÀº ºí·Ï ±¸Á¶ Çü½ÄÀÔ´Ï´Ù. ºí·Ï ±¸Á¶ÀÇ IF ¸í·ÉÀº ÁöÁ¤µÈ Ç¥Çö½ÄÀÌ ÂüÀÌ°í ELSE ¹®ÀÌ ÀÖ´Â °æ¿ì µÎ °³ ÀÌ»óÀÇ ¸í·ÉÀ» ½ÇÇàÇÕ´Ï´Ù. ELSE ¹®Àº Ç¥Çö½ÄÀÌ °ÅÁþÀÎ °æ¿ì Çϳª ÀÌ»óÀÇ ¸í·ÉÀ» ½ÇÇàÇÕ´Ï´Ù.
THEN ¸í·É »ç¿ë
Ç¥Çö½ÄÀÌ ÂüÀÏ ¶§ µÎ °³ ÀÌ»óÀÇ ¸í·ÉÀ» ½ÇÇàÇÏ·Á¸é THEN ¸í·ÉÀ» µ¿»ç(¾Õ¿¡ ´Þ·¯ ±âÈ£°¡ ÀÖ´Â DCL ¸í·É)·Î ÁöÁ¤ÇÏ°í ENDIF ¹®À» »ç¿ëÇÏ¿© °á°ú ºí·Ï ±¸Á¶ ¹®À» Á¾·áÇÕ´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼­´Â THEN ¹®ÀÌ µ¿»ç·Î »ç¿ëµË´Ï´Ù.
$ IF expression
$ THEN
$ command
$ command
.
.
.
$ ENDIF
ELSE ¸í·É »ç¿ë
Ç¥Çö½ÄÀÌ °ÅÁþÀÏ ¶§ ÇÑ °³ ÀÌ»óÀÇ ¸í·ÉÀ» ½ÇÇàÇÏ·Á¸é 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 ¹®À» Æ÷ÇÔÇÏ´Â Çà¿¡´Â ·¹À̺íÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸í·É ºí·Ï ³»¿¡¼­ ºÐ±âÇÒ ¼ö ÀÖÁö¸¸ ´Ù¸¥ ¸í·É ºí·Ï Áß°£À¸·Î ºÐ±âÇÏ´Â °ÍÀº »ï°¡ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
Âü(True) Ç¥Çö½Ä
IF ¸í·É µÚÀÇ Ç¥Çö½ÄÀº ³í¸®, »ê¼ú ¶Ç´Â ¹®ÀÚ¿­ ¿¬»êÀÚ·Î ±¸ºÐµÈ ÇÑ °³ ÀÌ»óÀÇ ¼ýÀÚ »ó¼ö, ¹®ÀÚ¿­ ¸®ÅÍ·², ±âÈ£ À̸§, ¶Ç´Â ·º½ÃÄ® ÇÔ¼ö·Î ÀÌ·ç¾îÁú ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ Áß ÇÑ °ªÀ» °¡Áö´Â Ç¥Çö½ÄÀº ÂüÀÔ´Ï´Ù.
Ȧ¼ö Á¤¼ö °ª
Y, y, T, ¶Ç´Â t·Î ½ÃÀÛÇÏ´Â ¹®ÀÚ¿­ °ª
Ȧ¼ö °ª Á¤¼öÀÎ ¼ýÀÚ¸¦ Æ÷ÇÔÇÏ´Â ¹®ÀÚ¿­ °ª(¿¹: ¹®ÀÚ¿­ 27¡±)
°ÅÁþ(False) Ç¥Çö½Ä
´ÙÀ½ Áß ÇÑ °ªÀ» °¡Áö´Â Ç¥Çö½ÄÀº °ÅÁþÀÔ´Ï´Ù.
¦¼ö Á¤¼ö °ª
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 ¸í·É »ç¿ë
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 ¸í·ÉÀ» »ç¿ëÇÏ¿© ¼º°øÀûÀ¸·Î ¿Ï·áµÈ ÀÛ¾÷ÀÇ ÀϺθ¦ Àç½ÇÇàÇÏ´Â °ÍÀ» ¹æÁöÇÒ ¼ö ÀÖ½À´Ï´Ù. À̸¦ ¼öÇàÇÏ·Á¸é ´ÙÀ½ ´Ü°è¸¦ µû¸£½Ê½Ã¿À.
Ç¥ 14-10
´Ü°è
ÀÛ¾÷
1
ÇÁ·Î½ÃÀúÀÇ °¢ °¡´ÉÇÑ ½ÃÀÛ ÁöÁ¡À» ·¹À̺í·Î ½ÃÀÛÇϽʽÿÀ.
2
·¹ÀÌºí ´ÙÀ½¿¡ SET RESTART_VALUE = label-name ¸í·ÉÀ» »ç¿ëÇÏ¿© Àç½ÃÀÛ ÁöÁ¡À» ±× ·¹À̺í·Î ¼³Á¤ÇÕ´Ï´Ù.
SET RESTART_VALUE = label-name ¸í·ÉÀÌ ½ÇÇàµÈ ÈÄ ÀÏ°ý ó¸® ÀÛ¾÷ÀÌ Áß´ÜµÈ °æ¿ì ÀÏ°ý ó¸® ÀÛ¾÷ÀÌ ´Ù½Ã ½ÃÀÛµÉ ¶§ ÇØ´ç ·¹À̺í À̸§ÀÌ ±Û·Î¹ú ±âÈ£ÀÎ BATCH$RESTART¿¡ ÇÒ´çµË´Ï´Ù.
3
ÇÁ·Î½ÃÀú ½ÃÀÛ¿¡¼­ $RESTART ±âÈ£ÀÇ °ªÀ» Å×½ºÆ®ÇÕ´Ï´Ù.
$RESTART°¡ ÂüÀ̸é BATCH$RESTART¸¦ Àü´Þ ·¹À̺í·Î »ç¿ëÇÏ¿© GOTO ¹®À» ½ÇÇàÇÕ´Ï´Ù.

$RESTART ±Û·Î¹ú ±âÈ£
$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 ¸í·ÉÀ» »ç¿ëÇÏ¿© ´ÜÀÏ ÆÄÀÏ¿¡¼­ µÎ °³ ÀÌ»óÀÇ °ü·ÃµÈ ¸í·É ÇÁ·Î½ÃÀú¸¦ µÎ¾î °ü¸®Çϱ⠽±µµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼­ºê ·çƾ ·¹ÀÌºí¿¡´Â °íÀ¯ÇÑ À̸§À» »ç¿ëÇØ¾ß ÇÏ¸ç ¸í·É ÇÁ·Î½ÃÀúÀÇ CALL ¸í·É ¾ÕÀ̳ª µÚ¿¡ µÑ ¼ö ÀÖ½À´Ï´Ù. ¼­ºê ·çƾ ·¹À̺íÀ» ÀÔ·ÂÇÏ´Â ¹æ¹ýÀº 13ÀåÀ» ÂüÁ¶ÇϽʽÿÀ.
·¹ÀÌºí ¿Ü¿¡ ÃÖ´ë 8°³ÀÇ ¼±Åà ¸Å°³ º¯¼ö¸¦ ¼­ºê ·çƾ¿¡ Àü´ÞÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸Å°³ º¯¼ö¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ¸Å°³ º¯¼ö¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅÍ Àü´ÞÀ» ÂüÁ¶ÇϽʽÿÀ.
CALL ¸í·ÉÀ» »ç¿ëÇϱâ À§ÇÑ ±ÔÄ¢Àº ´ÙÀ½°ú °°½À´Ï´Ù.
SYS$OUTPUT¿¡ Ãâ·ÂÀ» º¸³À´Ï´Ù.
Ãâ·ÂÀ» ¼­ºê ·çƾ¿¡¼­ ÆÄÀÏ·Î º¸³¾ ¼ö ÀÖ´Â /OUTPUT ÇÑÁ¤ÀÚ°¡ ÀÖ½À´Ï´Ù.
Ãâ·Â ÆÄÀÏ¿¡´Â ±âº» ÆÄÀÏ Çü½ÄÀÎ .LIS¸¦ »ç¿ëÇÕ´Ï´Ù.
Ãâ·Â ÆÄÀÏ ÁöÁ¤¿¡ ¿ÍÀϵåÄ«µå ¹®ÀÚ¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
CALL ¸í·É ±âº»°ª
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 ¹®ÀÇ À¯È¿°ªÀº °¢ ¸í·É ºí·ÏÀÇ Ã³À½¿¡ ÀÖ´Â ·¹À̺íÀÔ´Ï´Ù. Case ¹®Àº GOTO ¹®¿¡¼­ ÁöÁ¤µÈ °ªÀ» ´ë»ó ·¹À̺í·Î »ç¿ëÇÏ¿© ÇØ´ç ÄÚµå ºí·Ï¿¡ Á¦¾î¸¦ Àü´ÞÇÕ´Ï´Ù.
Case ¹®À» ÀÛ¼ºÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ÇØ¾ß ÇÕ´Ï´Ù.
1. ·¹À̺íÀ» ³ª¿­ÇÕ´Ï´Ù.
2. Case ¹®À» ÀÛ¼ºÇÕ´Ï´Ù.
3. ¸í·É ºí·ÏÀ» ÀÛ¼ºÇÕ´Ï´Ù.
·¹ÀÌºí ³ª¿­
·¹À̺íÀ» ³ª¿­ÇÏ·Á¸é ±âÈ£¸¦ ½½·¡½Ã ¶Ç´Â ±¸ºÐ ±âÈ£·Î ¼±ÅÃÇÑ ÀÓÀÇÀÇ ¹®ÀÚ¸¦ »ç¿ëÇÏ¿© ±¸ºÐÇÑ ·¹À̺íÀÇ ¸ñ·ÏÀ» Æ÷ÇÔÇÏ´Â ¹®ÀÚ¿­°ú ÀÏÄ¡½Ãŵ´Ï´Ù. ÀÌ ±âÈ£ Á¤ÀÇ´Â ¸í·É ºí·Ï ¾Õ¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù.
´ÙÀ½ º¸±â¿¡¼­´Â COMMAND_LIST ±âÈ£°¡ PURGE, DELETE ¹× EXIT ·¹À̺í°ú µ¿ÀÏÇÕ´Ï´Ù.
$ COMMAND_LIST = "/PURGE/DELETE/EXIT/"
Case ¹® ÀÛ¼º
Case ¹®À» ÀÛ¼ºÇÏ·Á¸é ´ÙÀ½ ÀýÂ÷¸¦ µû¸£½Ê½Ã¿À.
Ç¥ 14-11
´Ü°è
ÀÛ¾÷
1
INQUIRE ¸í·ÉÀ» »ç¿ëÇÏ¿© Case º¯¼öÀÇ °ªÀ» °¡Á®¿É´Ï´Ù.
2
F$LOCATE¿Í F$LENGTH¸¦ IF ¸í·É°ú ÇÔ²² »ç¿ëÇÏ¿© Case º¯¼öÀÇ °ªÀÌ À¯È¿ÇÑ Áö ¿©ºÎ¸¦ È®ÀÎÇÕ´Ï´Ù.
3
º¯¼ö°¡ À¯È¿ÇÑ °æ¿ì¿¡´Â 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Àå ÂüÁ¶). ±×·¯³ª ´ÙÀ½ ÀýÂ÷¸¦ µû¶ó ·çÇÁÀÇ ³¡¿¡¼­ Á¾·á º¯¼ö¸¦ Å×½ºÆ®ÇÏ´Â ·çÇÁ¸¦ ÀÛ¼ºÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
Ç¥ 14-12
´Ü°è
ÀÛ¾÷
1
·çÇÁ¸¦ ½ÃÀÛÇÕ´Ï´Ù.
2
·çÇÁ º»¹®ÀÇ ¸í·ÉÀ» ¼öÇàÇÕ´Ï´Ù.
3
Á¾·á º¯¼ö¸¦ º¯°æÇÕ´Ï´Ù.
4
Á¾·á º¯¼ö¸¦ Å×½ºÆ®ÇÕ´Ï´Ù.
Á¶°Ç¿¡ ºÎÇÕµÇÁö ¾Ê´Â °æ¿ì¿¡´Â ·çÇÁÀÇ Ã³À½À¸·Î °©´Ï´Ù.
5
·çÇÁ¸¦ ³¡³À´Ï´Ù.

·çÇÁ ³¡¿¡¼­ Á¾·á º¯¼ö¸¦ Å×½ºÆ®ÇÒ ¶§´Â Á¾·á º¯¼öÀÇ °ª¿¡ °ü°è ¾øÀÌ ·çÇÁ º»¹®ÀÇ ¸í·ÉÀÌ ÃÖ¼ÒÇÑ ÇÑ ¹ø¾¿ ½ÇÇàµÈ´Ù´Â Á¡¿¡ ÁÖÀÇÇϽʽÿÀ.
´ÙÀ½ º¸±âÀÇ ¸í·É ºí·ÏÀº µÑ ´Ù 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 ¸í·É »ç¿ë
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$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$PIPE »ç¿ë
´ëºÎºÐÀÇ °æ¿ì ÆÄÀÌÇÁÀÇ ÀÔ·Â »çÇ×Àº 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¸¦ ÆÄÀÏ·Î ÀçÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
SYS$INPUT ÀçÁöÁ¤
PIPE command-sequence < redirected-input-file
SYS$OUTPUT ÀçÁöÁ¤
PIPE command-sequence > redirected-output-file
SYS$ERROR ÀçÁöÁ¤
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¸¦ ÀçÁ¤ÀÇÇÏ´Â °æ¿ì¿¡µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.
PIPE ¸í·É Áß´Ü
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


TOC PREV NEXT INDEX