HP OpenVMS Systems Documentation

Content starts here

B ÁÖ¼® ¸í·É ÇÁ·Î½ÃÀú
ÀÌ ºÎ·Ï¿¡´Â 13Àå, 14Àå ¹× 15Àå¿¡ ¼³¸íµÈ °³³ä°ú ±â¼ú¿¡ ´ëÇÑ Àüü ¸í·É ÇÁ·Î½ÃÀú°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. ÀÌ ºÎ·ÏÀÇ °¢ Àý¿¡¼­´Â ¸í·É ÇÁ·Î½ÃÀú¸¦ ¼³¸íÇÏ°í ´ÙÀ½ Á¤º¸¸¦ Á¦°øÇÕ´Ï´Ù.
ÇÁ·Î½ÃÀú À̸§
ÇÁ·Î½ÃÀú ¸ñ·Ï
ÇÁ·Î½ÃÀú¿¡ »ç¿ëµÇ´Â °³³ä ¶Ç´Â ±â¼úÀ» ¼³¸íÇÏ´Â ÂüÁ¶ ³»¿ë
ÇÁ·Î½ÃÀúÀÇ º¸±â ½ÇÇà °á°ú
CONVERT.COM ¸í·É ÇÁ·Î½ÃÀú
ÀÌ ¸í·É ÇÁ·Î½ÃÀú´Â Àý´ë ½Ã°£(¹Ì·¡ ½Ã°£)À» º¯°æ ½Ã°£À¸·Î º¯È¯ÇÏ°í ÇöÀç ½Ã°£°ú »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ ½Ã°£ °£ÀÇ ½Ã°£ Â÷À̸¦ °áÁ¤ÇÕ´Ï´Ù. ÀÌ ÇÁ·Î½ÃÀú¿¡¼­´Â F$TIME ¹× F$CVTIME ·º½ÃÄ® ÇÔ¼ö¿Í ÇÒ´ç¹®À» »ç¿ëÇÏ¿© »ê¼ú °è»êÀ» ¼öÇàÇÏ°í ±âÈ£ °ªÀ» ¿¬°áÇÏ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù.
º¸±â: CONVERT.COM
$ ! Procedure to convert an absolute time to a delta time.
$ ! The delta time is returned as the global symbol WAIT_TIME.
$ ! P1 is the time to be converted.
$ ! P2 is an optional parameter - SHOW - that causes the
$ ! procedure to display WAIT_TIME before exiting
$ !
$ ! Check for inquiry
$ !
$ IF P1 .EQS. "?" .OR. P1 .EQS. "" THEN GOTO TELL [1]
$ !
$ ! Verify the parameter: hours must be less than 24
$ ! minutes must be less than 60
$ ! time string must contain only hours
$ ! and minutes
$ !
$ ! Change error and message handling to
$ ! use message at BADTIME
$ !
$ ON WARNING THEN GOTO BADTIME [2]
$ SAVE_MESSAGE = F$ENVIRONMENT("MESSAGE")
$ SET MESSAGE/NOFACILITY/NOIDENTIFICATION/NOSEVERITY/NOTEXT
$ TEMP = F$CVTIME(P1)
$ !
$ ! Restore default error handling and message format
$ ON ERROR THEN EXIT
$ SET MESSAGE'SAVE_MESSAGE'
$ !
$ IF F$LENGTH(P1) .NE. 5 .OR. - [3]
F$LOCATE(":",P1) .NE. 2 -
THEN GOTO BADTIME
$ !
$ ! Get the current time
$ !
$ TIME = F$TIME() [4]
$ !
$ ! Extract the hour and minute fields from both the current time
$ ! value (TIME) and the future time (P1)
$ !
$ MINUTES = F$CVTIME(TIME,"ABSOLUTE","MINUTE") ! Current minutes [5]
$ HOURS = F$CVTIME(TIME,"ABSOLUTE","HOUR") ! Current hours
$ FUTURE_MINUTES = F$CVTIME(P1,"ABSOLUTE","MINUTE") ! Minutes in future time
$ FUTURE_HOURS = F$CVTIME(P1,"ABSOLUTE","HOUR") ! Hours in future time
$ !
$ !
$ ! Convert both time values to minutes
$ ! Note the implicit string to integer conversion being performed
$ ! $ CURRENT_TIME = HOURS*60 + MINUTES [6]
$ FUTURE_TIME = FUTURE_HOURS*60 + FUTURE_MINUTES
$ !
$ ! Compute difference between the future time and the current time
$ ! (in minutes)
$ !
$ !
$ MINUTES_TO_WAIT = FUTURE_TIME - CURRENT_TIME [7]
$ !
$ ! If the result is less than 0 the specified time is assumed to be
$ ! for the next day; more calculation is required.
$ !
$ IF MINUTES_TO_WAIT .LT. 0 THEN - [8]
MINUTES_TO_WAIT = 24*60 + FUTURE_TIME - CURRENT_TIME
$ !
$ ! Start looping to determine the value in hours and minutes from
$ ! the value expressed all in minutes
$ !
$ HOURS_TO_WAIT = 0
$ HOURS_TO_WAIT_LOOP: [9]
$ IF MINUTES_TO_WAIT .LT. 60 THEN GOTO FINISH_COMPUTE
$ MINUTES_TO_WAIT = MINUTES_TO_WAIT - 60
$ HOURS_TO_WAIT = HOURS_TO_WAIT + 1
$ GOTO HOURS_TO_WAIT_LOOP
$ FINISH_COMPUTE:
$ !
$ ! Construct the delta time string in the proper format
$ !
$ WAIT_TIME == F$STRING(HOURS_TO_WAIT)+ ":" + F$STRING(MINUTES_TO_WAIT)- [10]
+ ":00.00"
$ !
$ ! Examine the second parameter
$ !
$ IF P2 .EQS. "SHOW" THEN SHOW SYMBOL WAIT_TIME [11]
$ !
$ ! Normal exit
$ !
$ EXIT
$ !
$ BADTIME: [12]
$ ! Exit taken if first parameter is not formatted correctly
$ ! EXIT command returns but does not display error status
$ !
$ SET MESSAGE'SAVE_MESSAGE'
$ WRITE SYS$OUTPUT "Invalid time value: ",P1,", format must be hh:mm"
$ WRITE SYS$OUTPUT "Hours must be less than 24; minutes must be less than 60"
$ EXIT %X10000000
$ !
$ !
$ TELL: [13]
$ ! Display message and exit if user enters inquiry or enters
$ ! an illegal parameter
$ !
$ TYPE SYS$INPUT
This procedure converts an absolute time
value to a delta time value. The absolute time must be in
the form hh:mm and must indicate a time in the future.
On return, the global symbol WAIT_TIME contains the
converted time value. If you enter the keyword SHOW
as the second parameter, the procedure displays the
resulting value in the output stream. To invoke this
procedure, use the following syntax:

@CONVERT hh:mm [SHOW]
$ EXIT
CONVERT.COM ¸í·É ÇÁ·Î½ÃÀú ¼³¸í
[1] ÀÌ ÇÁ·Î½ÃÀú¿¡¼­´Â ¸Å°³ º¯¼ö°¡ »ý·«µÇ¾ú´ÂÁö ¶Ç´Â ¸Å°³ º¯¼ö¿¡ ÀÔ·ÂµÈ °ªÀÌ ¹°À½Ç¥(?) ¹®ÀÚÀÎÁö¸¦ °Ë»çÇÕ´Ï´Ù. µÎ °æ¿ì ¸ðµÎ ÇÁ·Î½ÃÀú°¡ ·¹À̺í TELL¿¡¼­ ºÐ±âµË´Ï´Ù.
[2] ÀÌ ÇÁ·Î½ÃÀú´Â F$CVTIME ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ½Ã°£ °ªÀÌ À¯È¿ÇÑ 24½Ã°£ ´ÜÀ§ Ç¥±â¹ýÀ¸·Î ÀԷµǾú´ÂÁö È®ÀÎÇÕ´Ï´Ù. F$CVTIME ÇÔ¼ö´Â ÀÔ·Â ½Ã°£ÀÌ À¯È¿ÇÏÁö ¾ÊÀº °æ¿ì °æ°í ¸Þ½ÃÁö¸¦ ¹ÝȯÇÕ´Ï´Ù. F$CVTIME ÇÔ¼ö°¡ ¿À·ù¸¦ ¹ÝȯÇÒ °æ¿ì ÇÁ·Î½ÃÀú´Â ±âº»°ª ON µ¿ÀÛÀ» ·¹À̺í BADTIME¿¡ ´ëÇÑ Á÷Á¢ Á¦¾î·Î º¯°æÇÕ´Ï´Ù.
ÇÁ·Î½ÃÀú´Â F$ENVIRONMENT ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ÇöÀç ¸Þ½ÃÁö ¼³Á¤À» ÀúÀåÇÕ´Ï´Ù. ±×·± ´ÙÀ½ °æ°í ¶Ç´Â ¿À·ù ¸Þ½ÃÁö°¡ Ç¥½ÃµÇÁö ¾Êµµ·Ï ¸Þ½ÃÁö Çü½ÄÀ» ¼³Á¤ÇÕ´Ï´Ù. ½Ã°£ °ªÀ» °Ë»çÇÑ ´ÙÀ½ ÇÁ·Î½ÃÀú´Â ±âº»°ª On Á¶°Ç°ú ¸Þ½ÃÁö Çü½ÄÀ» º¹¿øÇÕ´Ï´Ù.
[3] ÇÁ·Î½ÃÀú´Â ¸Å°³ º¯¼öÀÇ Çü½ÄÀ» °Ë»çÇÕ´Ï´Ù. ¸Å°³ º¯¼ö´Â ´ÙÀ½°ú °°Àº Çü½ÄÀÇ ½Ã°£ °ªÀ̾î¾ß ÇÕ´Ï´Ù.
hh:mm
IF ¸í·É¾î´Â (1) ÀÔ·ÂµÈ °ªÀÇ ±æÀÌ°¡ 5ÀÚÀÌ°í (2) ¼¼ ¹ø° ¹®ÀÚ(2ÀÇ ¿ÀÇÁ¼Â)°¡ ÄÝ·Ð(:)ÀÎÁö È®ÀÎÇÕ´Ï´Ù. IF ¸í·É¾î´Â ³í¸® OR ¿¬»êÀÚ¸¦ Æ÷ÇÔÇÕ´Ï´Ù. µÎ Ç¥Çö½Ä Áß Çϳª°¡ Âü(±æÀÌ°¡ 5°¡ ¾Æ´Ï°Å³ª ¼¼ ¹ø° ¹®ÀÚ À§Ä¡°¡ ÄÝ·ÐÀÌ ¾Æ´Ò °æ¿ì)ÀÏ °æ¿ì ÇÁ·Î½ÃÀú°¡ ·¹À̺í BADTIME¿¡¼­ ºÐ±âµË´Ï´Ù.
[4] F$TIME ·º½ÃÄ® ÇÔ¼ö´Â ÇöÀç ½Ã°£ °ªÀ» ±âÈ£ TIME¿¡ ÀÔ·ÂÇÕ´Ï´Ù.
[5] F$CVTIME ÇÔ¼ö´Â ±âÈ£ TIME¿¡ ÀúÀåµÈ ÇöÀç ½Ã°£À¸·ÎºÎÅÍ ºÐ¡± ¹× ½Ã¡± Çʵ带 ÃßÃâÇÕ´Ï´Ù. ±×·± ´ÙÀ½ F$CVTIME ÇÔ¼ö´Â º¯È¯ÇÒ ½Ã°£À¸·ÎºÎÅÍ ¡±ºÐ¡± ¹× ½Ã¡± Çʵ带 ÃßÃâÇÕ´Ï´Ù.
[6] ÀÌ ÇÒ´ç¹®Àº ÇöÀç ½Ã°£°ú ¹Ì·¡ ½Ã°£À» ºÐÀ¸·Î º¯È¯ÇÕ´Ï´Ù. ÇÒ´ç¹®¿¡ ±âÈ£ MINUTES, HOURS, FUTURE_HOURS ¹× FUTURE_MINUTES¸¦ »ç¿ëÇϸé ÀÌ °ªÀÌ Á¤¼ö·Î ÀÚµ¿ º¯È¯µË´Ï´Ù.
[7] ±×·± ´ÙÀ½ ÇÁ·Î½ÃÀú´Â ¹Ì·¡ ½Ã°£(ºÐ)¿¡¼­ ÇöÀç ½Ã°£(ºÐ)À» »®´Ï´Ù.
[8] °á°ú°¡ 0º¸´Ù ÀÛÀ¸¸é ¹Ì·¡ ½Ã°£ÀÌ ±× ´ÙÀ½ ³¯¿¡ ÇØ´çµÇ´Â °ÍÀ¸·Î Çؼ®µË´Ï´Ù. ÀÌ °æ¿ì ÇÁ·Î½ÃÀú´Â ¹Ì·¡ ½Ã°£¿¡ 24½Ã°£À» ´õÇÑ ´ÙÀ½ ÇöÀç ½Ã°£À» »®´Ï´Ù.
[9] ÇÁ·Î½ÃÀú´Â MINUTES_TO_WAIT °ªÀ¸·ÎºÎÅÍ ½Ã°£À» °è»êÇÏ´Â ·çÇÁ¸¦ ÀÔ·ÂÇÕ´Ï´Ù. ·çÇÁ¸¦ Åë°úÇÒ ¶§¸¶´Ù MINUTES_TO_WAIT°¡ 60º¸´Ù Å«Áö¸¦ °Ë»çÇÏ¿©, 60º¸´Ù Ŭ °æ¿ì MINUTES_TO_WAIT¿¡¼­ 60À» »« ´ÙÀ½ ½Ã°£ ´©ÀûÀÚ(HOURS_TO_WAIT)¿¡ 1À» ´õÇÕ´Ï´Ù.
[10] ·çÇÁ°¡ Á¾·áµÇ¸é ÇÁ·Î½ÃÀú´Â ½Ã°£ °ª°ú ºÐ °ªÀ» ½Ã°£ ¹®ÀÚ¿­·Î ¿¬°áÇÕ´Ï´Ù. ±âÈ£ HOURS_TO_WAIT ¹× MINUTES_TO_WAIT°¡ ÇØ´ç ¹®ÀÚ¿­·Î ¹Ù²î°í °£¼· ÄÝ·ÐÀ¸·Î ºÐ¸®µË´Ï´Ù. °á°ú ¹®ÀÚ¿­Àº ¹Ì·¡ÀÇ º¯°æ ½Ã°£ °ªÀ» º¸°üÇÏ´Â ±âÈ£ WAIT_TIME¿¡ ÇÒ´çµË´Ï´Ù. WAIT_TIMEÀº ÇÁ·Î½ÃÀú CONVERT.COMÀÌ Á¾·áµÉ ¶§ »èÁ¦µÇÁö ¾Êµµ·Ï ±Û·Î¹ú ±âÈ£·Î Á¤Àǵ˴ϴÙ.
[11] µÎ ¹ø° ¸Å°³ º¯¼öÀÎ SHOW¸¦ ÀÔ·ÂÇϸé ÇÁ·Î½ÃÀú´Â °á°ú ½Ã°£ °ªÀ» Ç¥½ÃÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ÇÁ·Î½ÃÀú°¡ Á¾·áµË´Ï´Ù.
[12] ·¹À̺í BADTIME¿¡¼­ ÇÁ·Î½ÃÀú´Â À߸ø ÀÔ·ÂµÈ °ª°ú ÇÊ¿äÇÑ Çü½ÄÀ» º¸¿© ÁÖ´Â ¿À·ù ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù. ¿À·ù ¸Þ½ÃÁö°¡ ¹ßÇàµÈ ÈÄ CONVERT.COMÀÌ Á¾·áµË´Ï´Ù. EXIT ¸í·ÉÀº ¿ì¼± ¼øÀ§ ¼ýÀÚ°¡ 1·Î ¼³Á¤µÈ ¿À·ù »óŸ¦ ¹ÝȯÇÕ´Ï´Ù. ÀÌ °æ¿ì¿¡´Â ¿À·ù ¸Þ½ÃÁö°¡ Ç¥½ÃµÇÁö ¾Ê½À´Ï´Ù.
ÀÌ ÇÁ·Î½ÃÀú´Â EXIT ¸í·ÉÀ» »ç¿ëÇÏ¿© ¿À·ù »óŸ¦ ¸í½ÃÀûÀ¸·Î ÁöÁ¤Çϱ⠶§¹®¿¡ ´Ù¸¥ ÇÁ·Î½ÃÀú¿¡¼­ CONVERT.COMÀ» ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. CONVERT.COMÀÌ ¿Ï·áµÇ¸é È£Ãâ ÇÁ·Î½ÃÀú¿¡¼­ ½Ã°£ÀÌ ¼º°øÀûÀ¸·Î Çؼ®µÇ¾ú´ÂÁö È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.
[13] ·¹À̺í TELL¿¡¼­ ÀÌ ÇÁ·Î½ÃÀú´Â ÇÁ·Î½ÃÀú°¡ ¼öÇàÇÏ´Â ÀÛ¾÷¿¡ ´ëÇÑ Á¤º¸¸¦ Ç¥½ÃÇÕ´Ï´Ù. TYPE ¸í·ÉÀº ÀÔ·Â µ¥ÀÌÅÍ ½ºÆ®¸²ÀÎ SYS$INPUT¿¡ ³ª¿­µÈ ÇàÀ» Ç¥½ÃÇÕ´Ï´Ù.
CONVERT.COM ¸í·É ÇÁ·Î½ÃÀú º¸±â ½ÇÇà
$ SHOW TIME
10-JUN-1999 10:38:26
$@CONVERT 12:00 SHOW
WAIT_TIME = "1:22:00.00"
SHOW TIME ¸í·ÉÀº ÇöÀç ³¯Â¥¿Í ½Ã°£À» Ç¥½ÃÇÕ´Ï´Ù. CONVERT.COMÀº ¸Å°³ º¯¼ö 12:00 ¹× SHOW¿Í ÇÔ²² ½ÇÇàµË´Ï´Ù. ÀÌ ÇÁ·Î½ÃÀú¿¡¼­´Â Àý´ë ½Ã°£ 12:00À» º¯°æ ½Ã°£ °ªÀ¸·Î º¯È¯ÇÏ¿© Å͹̳ο¡ Ç¥½ÃÇÕ´Ï´Ù.
REMINDER.COM ¸í·É ÇÁ·Î½ÃÀú
ÀÌ ¸í·É ÇÁ·Î½ÃÀú´Â ÁöÁ¤µÈ ½Ã°£¿¡ Å͹̳ο¡ ¾Ë¸² ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù. ÀÌ ÇÁ·Î½ÃÀú´Â ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÒ ½Ã°£°ú ¸Þ½ÃÁöÀÇ ÅؽºÆ®¸¦ ¹¯´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÏ°í, CONVERT.COMÀ» »ç¿ëÇÏ¿© ½Ã°£À» º¯°æ ½Ã°£À¸·Î º¯È¯ÇÕ´Ï´Ù. ±×·± ´ÙÀ½ ÁöÁ¤µÈ ½Ã°£ÀÌ µÇ¸é ¾Ë¸² ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÏ´Â ÇÏÀ§ ÇÁ·Î¼¼½º¸¦ »ý¼ºÇÕ´Ï´Ù. ÀÌ ÇÁ·Î½ÃÀú¿¡¼­´Â F$ENVIRONMENT, F$VERIFY ¹× F$GETDVI ÇÔ¼öÀÇ »ç¿ëÀ» º¸¿© ÁÝ´Ï´Ù.
º¸±â: REMINDER.COM
$ ! Procedure to obtain a reminder message and display this
$ ! message on your terminal at the time you specify.

$ !
$ ! Save current states for procedure and image verification
$ ! Turn verification off for duration of procedure
$
$ SAVE_VERIFY_IMAGE = F$ENVIRONMENT("VERIFY_IMAGE") [1]
$ SAVE_VERIFY_PROC = F$VERIFY(0)
$ !
$ ! Places the current process in a wait state until a specified
$ ! absolute time. Then, it rings the bell on the terminal and
$ ! displays a message.
$ ! $ ! Prompt for absolute time
$ !
$
$ GET_TIME:
$ INQUIRE REMINDER_TIME "Enter time to send reminder (hh:mm)" [2]
$ INQUIRE MESSAGE_TEXT "Enter message"
$ !
$ ! Call the CONVERT.COM procedure to convert the absolute time
$ ! to a delta time
$ ! $ @DISK2:[JONES.TOOLS]CONVERT 'REMINDER_TIME' [3]
$ IF .NOT. $STATUS THEN GOTO BADTIME
$ !
$ !
$ ! Create a command file that will be executed
$ ! in a subprocess. The subprocess will wait until
$ ! the specified time and then display your message
$ ! at the terminal. If you are working at a DEC_CRT
$ ! terminal, the message has double size blinking
$ ! characters. Otherwise, the message has normal letters.
$ ! In either case, the terminal bell rings when the
$ ! message is displayed.
$
$ CREATE WAKEUP.COM [4]
$ DECK ! Lines starting with $ are data lines
$ WAIT 'WAIT_TIME' [5]
$ BELL[0,7] = %X07 ! Create symbol to ring the bell
$ IF F$GETDVI("SYS$OUTPUT","TT_DECCRT") .NES. "TRUE" THEN GOTO OTHER_TERM
$ !
$ DEC_CRT_ONLY:
$ ! Create symbols to set special graphics (for DEC_CRT terminals only)
$ !
$ SET_FLASH = "<ESC>[1;5m" ! Turn on blinking characters
$ SET_NOFLASH = "<ESC>[0m" ! Turn off blinking characters
$ TOP = "<ESC>#3" ! Double size characters (top portion)
$ BOT = "<ESC>#4" ! Double size characters (bottom portion)
$ !
$ ! Write double size, blinking message to the terminal and ring the bell
$ !
$ WRITE SYS$OUTPUT BELL, SET_FLASH, TOP, MESSAGE_TEXT
$ WRITE SYS$OUTPUT BELL, BOT, MESSAGE_TEXT
$ WRITE SYS$OUTPUT F$TIME(), SET_NOFLASH
$ GOTO CLEAN_UP
$ !
$ OTHER_TERM:
$ WRITE SYS$OUTPUT BELL,MESSAGE_TEXT
$ WRITE SYS$OUTPUT F$TIME()
$ !
$ CLEAN_UP:
$ DELETE WAKEUP.COM;*
$ EOD
$ !
$ ! Now continue executing commands.
$ !
$ SPAWN/NOWAIT/INPUT=WAKEUP.COM [6]
$ END: [7]
$ ! Restore verification
$ SAVE_VERIFY_PROC = F$VERIFY(SAVE_VERIFY_PROC, SAVE_VERIFY_IMAGE)
$ EXIT
$ !
$ BADTIME:
$ WRITE SYS$OUTPUT "Time must be entered as hh:mm"
$ GOTO GET_TIME
REMINDER.COM ¸í·É ÇÁ·Î½ÃÀú ¼³¸í
[1] ÀÌ ÇÁ·Î½ÃÀú¿¡¼­´Â F$ENVIRONMENT ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ±âÈ£ SAVE_VERIFY_IMAGE¿¡ À̹ÌÁö È®ÀÎ ¼³Á¤À» ÀúÀåÇÕ´Ï´Ù. ±×·± ´ÙÀ½ F$VERIFY ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ±âÈ£ SAVE_VERIFY_PROC¿¡ ÇÁ·Î½ÃÀú È®ÀÎ ¼³Á¤À» ÀúÀåÇÕ´Ï´Ù.
¶ÇÇÑ, F$VERIFY ÇÔ¼ö´Â µÎ È®ÀÎ À¯ÇüÀ» ¸ðµÎ ²ü´Ï´Ù.
[2] ÀÌ ÇÁ·Î½ÃÀú´Â INQUIRE ¸í·ÉÀ» »ç¿ëÇÏ¿© ¸Þ½ÃÁö°¡ ¹ß¼ÛµÇ´Â ½Ã°£À» ¹¯´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù. ÀÌ °ªÀº ÇÁ·Î½ÃÀú CONVERT.COM¿¡ ´ëÇÑ ÀÔ·ÂÀ¸·Î »ç¿ëµË´Ï´Ù.
¶ÇÇÑ, ¸Þ½ÃÁöÀÇ ÅؽºÆ®¸¦ ¹¯´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù.
[3] ÀÌ ÇÁ·Î½ÃÀú´Â Áßø ÇÁ·Î½ÃÀúÀÎ CONVERT.COMÀ» ½ÇÇàÇÕ´Ï´Ù. µð½ºÅ©¿Í µð·ºÅ丮¸¦ ÆÄÀÏ ÁöÁ¤ ¹æ¹ýÀÇ ÀϺηΠÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ±×·¯¸é REMINDER.COMÀ» ½ÇÇàÇÏ´Â À§Ä¡¿¡ °ü°è ¾øÀÌ ½Ã½ºÅÛÀÌ CONVERT.COMÀ» ã½À´Ï´Ù.
CONVERT.COMÀº ¾Ë¸²À» º¯°æ ½Ã°£À¸·Î º¯È¯ÇÏ°í ÀÌ ½Ã°£À» ±Û·Î¹ú ±âÈ£ WAIT_TIMEÀ¸·Î ¹ÝȯÇÕ´Ï´Ù. ÀÌ º¯°æ ½Ã°£Àº ÇöÀç ½Ã°£¿¡¼­ ¸Þ½ÃÁö°¡ ¹ß¼ÛµÉ ½Ã°£±îÁöÀÇ ½Ã°£ °£°ÝÀ» ³ªÅ¸³À´Ï´Ù. CONVERT.COMÀÌ ¿À·ù¸¦ ¹ÝȯÇϸé ÇÁ·Î½ÃÀú°¡ ·¹À̺í BADTIME¿¡¼­ ºÐ±âµË´Ï´Ù.
[4] ÀÌ ÇÁ·Î½ÃÀú´Â CREATE ¸í·ÉÀ» »ç¿ëÇÏ¿© »õ ÇÁ·Î½ÃÀúÀÎ WAKEUP.COMÀ» ÀÛ¼ºÇÕ´Ï´Ù. ÀÌ ÇÁ·Î½ÃÀú´Â ÇÏÀ§ ÇÁ·Î½ÃÀú ³»¿¡¼­ ½ÇÇàµË´Ï´Ù. CREATE ¸í·ÉÀÌ ´Þ·¯ ±âÈ£·Î ½ÃÀ۵Ǵ ÇàÀ» ÀÐÀ» ¼ö ÀÖ°Ô ÇÏ·Á¸é CREATE ¸í·É¿¡ ´ëÇÑ ÀÔ·ÂÀ» DECK ¸í·É°ú EOD ¸í·É »çÀÌ¿¡ ³Ö½À´Ï´Ù. µû¶ó¼­ DECK ¸í·É°ú EOD ¸í·É »çÀÌ¿¡ ÀÖ´Â ¸ðµç ÇàÀº WAKEUP.COM¿¡ ±â·ÏµË´Ï´Ù.
[5] WAKEUP.COMÀÌ ¼öÇàÇÏ´Â ÀÛ¾÷Àº ´ÙÀ½°ú °°½À´Ï´Ù.
±âÈ£ WAIT_TIMEÀÌ ³ªÅ¸³»´Â ½Ã°£ÀÌ µÉ ¶§±îÁö ±â´Ù¸³´Ï´Ù.
Å͹̳Πº§À» ¿ï¸®´Â ±âÈ£ BELLÀ» ÀÛ¼ºÇÕ´Ï´Ù.
Å͹̳ÎÀÌ DEC_CRT Å͹̳ÎÀÌ°í À̽ºÄÉÀÌÇÁ ½ÃÄö½º¸¦ Àû¿ëÇÏ¿© µÎ ¹è Å©±âÀÇ ±ô¹ÚÀÌ´Â ¹®ÀÚ¸¦ Ç¥½ÃÇÒ ¼ö ÀÖ´ÂÁö ¿©ºÎ¸¦ °áÁ¤ÇÕ´Ï´Ù. DEC_CRT Å͹̳ÎÀÎÁö È®ÀÎÇÏ·Á¸é SHOW TERMINAL ¸í·ÉÀ» ÀÔ·ÂÇÏ¿© ÀÌ Æ¯¼ºÀÌ ³ª¿­µÇ´ÂÁö È®ÀÎÇÕ´Ï´Ù.
Å͹̳ÎÀÌ DEC_CRT Å͹̳ÎÀÏ °æ¿ì ÇÁ·Î½ÃÀú´Â ±âÈ£ SET_FLASH, TOP ¹× BOT¸¦ Á¤ÀÇÇÕ´Ï´Ù. ÀÌµé ±âÈ£´Â Å͹̳ÎÀÌ ¹Ý¦ÀÌ´Â µÎ ¹è Å©±â ¹®ÀÚ¸¦ »ç¿ëÇÏ°Ô ÇÕ´Ï´Ù. ¶ÇÇÑ, ÀÌ ÇÁ·Î½ÃÀú´Â ±âÈ£ SET_NOFLASH¸¦ Á¤ÀÇÇÏ¿© Å͹̳ÎÀ» ±âº» »óÅ·Πº¹±Í½Ãŵ´Ï´Ù. EDT ÆíÁý±â¸¦ »ç¿ëÇÏ¿© ÀÌ Á¤ÀǸ¦ ÀÛ¼ºÇÒ ¶§ À̽ºÄÉÀÌÇÁ ¹®ÀÚ(<ESC>)¸¦ ÀÔ·ÂÇÏ·Á¸é ESC Å°¸¦ µÎ ¹ø ´©¸¨´Ï´Ù.
ÀÌµé ±âÈ£¸¦ Á¤ÀÇÇÑ ´ÙÀ½ ÇÁ·Î½ÃÀú´Â Å͹̳ο¡ ¼¼ °³ÀÇ ÇàÀ» ±â·ÏÇÕ´Ï´Ù. ù ¹ø° ÇàÀº º§À» ¿ï¸®°í, ¹Ý¦ÀÌ´Â ¹®ÀÚ¸¦ ÄÑ°í, µÎ ¹è Å©±â ¹®ÀÚ¸¦ »ç¿ëÇÏ¿© ¸Þ½ÃÁöÀÇ »ó¹ÝºÎ¸¦ Ç¥½ÃÇÕ´Ï´Ù. µÎ ¹ø° ÇàÀº º§À» ´Ù½Ã ¿ï¸®°í ¸Þ½ÃÁöÀÇ ÇϹݺθ¦ Ç¥½ÃÇÕ´Ï´Ù. ¼¼ ¹ø° ÇàÀº ÇöÀç ½Ã°£À» ±â·ÏÇÑ ´ÙÀ½ ¹Ý¦ÀÌ´Â ¹®ÀÚ¸¦ ÇØÁ¦ÇÏ¿© Å͹̳ÎÀ» ±âº» »óÅ·Πº¹±Í½Ãŵ´Ï´Ù.
DEC_CRT Å͹̳ÎÀÌ ¾øÀ» °æ¿ì ÇÁ·Î½ÃÀú´Â Å͹̳Πº§À» ¿ï¸®°í ¸Þ½ÃÁö¿Í ½Ã°£À» Ç¥½ÃÇÕ´Ï´Ù.
DELETE ¸í·ÉÀº ÇÁ·Î½ÃÀú WAKEUP.COMÀÌ ½ÇÇàµÈ ´ÙÀ½ »èÁ¦ÇÕ´Ï´Ù.
[6] WAKEUP.COMÀÌ ÀÛ¼ºµÇ¸é ÇÁ·Î½ÃÀú´Â ÇÏÀ§ ÇÁ·Î¼¼½º¸¦ »ý¼ºÇÏ°í ÇØ´ç ÇÏÀ§ ÇÁ·Î¼¼½º¿¡ WAKEUP.COMÀ» ÀÔ·Â ¸í·É ÆÄÀÏ·Î »ç¿ëÇϵµ·Ï Áö½ÃÇÕ´Ï´Ù. /NOWAIT ÇÑÁ¤ÀÚ¸¦ »ç¿ëÇϸé ÇÏÀ§ ÇÁ·Î¼¼½º°¡ WAKEUP.COMÀ¸·ÎºÎÅÍ ¸í·ÉÀ» ½ÇÇàÇÏ´Â µ¿¾È¿¡µµ Å͹̳ο¡¼­ °è¼Ó ÀÛ¾÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. WAKEUP.COMÀº Å͹̳ο¡ ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù.
±âº»ÀûÀ¸·Î SPAWN ¸í·ÉÀº ÇÏÀ§ ÇÁ·Î¼¼½º¿¡ ±Û·Î¹ú ¹× ·ÎÄà ±âÈ£¸¦ Àü´ÞÇÕ´Ï´Ù. µû¶ó¼­, REMINDER.COM¿¡ ±âÈ£ WAIT_TIME ¹× MESSAGE_TEXT¿¡ ´ëÇÑ °ªÀ» Á¦°øÇÏ´õ¶óµµ WAKEUP.COMÀº ÀÌµé ±âÈ£¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
[7] ÇÁ·Î½ÃÀú´Â Á¾·áµÇ±â Àü¿¡ ¿øº» È®ÀÎ ¼³Á¤À» º¹¿øÇÕ´Ï´Ù.
REMINDER.COM ¸í·É ÇÁ·Î½ÃÀú º¸±â ½ÇÇà
$ @REMINDER
Enter time to send reminder (hh:mm):12:00
Enter message:TIME FOR LUNCH
%DCL-S-SPAWNED, process BLUTO_1 spawned
$
.
.
.
TIME FOR LUNCH
11-DEC-1999 12:00:56.99
ÀÌ ÇÁ·Î½ÃÀú´Â ½Ã°£ °ª°ú ¸Þ½ÃÁö¸¦ ¹¯´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÑ ´ÙÀ½, ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÏ´Â ÇÏÀ§ ÇÁ·Î¼¼½º¸¦ »ý¼ºÇÕ´Ï´Ù. Å͹̳ο¡¼­ ÀÛ¾÷À» °è¼ÓÇÒ ¼ö ÀÖ½À´Ï´Ù. ÁöÁ¤µÈ ½Ã°£¿¡ ÇÏÀ§ ÇÁ·Î¼¼½º´Â Å͹̳Πº§À» ¿ï¸®°í ¸Þ½ÃÁö¿Í ½Ã°£À» Ç¥½ÃÇÕ´Ï´Ù.
DIR.COM ¸í·É ÇÁ·Î½ÃÀú
ÀÌ ¸í·É ÇÁ·Î½ÃÀú´Â DCL ¸í·É DIRECTORY/SIZE=ALL/DATE¸¦ ¸ð¹æÇÏ¿© ÁöÁ¤µÈ ÆÄÀÏÀÇ (»ç¿ë ¹× ÇÒ´çµÈ) ºí·Ï Å©±â¿Í ÀÛ¼º ³¯Â¥¸¦ Ç¥½ÃÇÕ´Ï´Ù. ¶ÇÇÑ, F$PARSE, F$SEARCH, F$FILE_ATTRIBUTES ¹× F$FAO ·º½ÃÄ® ÇÔ¼ö »ç¿ëÀ» º¸¿© ÁÝ´Ï´Ù.
º¸±â: DIR.COM
$ !
$ ! Command procedure implementation of DIRECTORY/SIZE=ALL/DATE
$ ! command
$ !
$ SAVE_VERIFY_IMAGE = F$ENVIRONMENT("VERIFY_IMAGE")
$ SAVE_VERIFY_PROCEDURE = F$VERIFY(0)
$ !
$ ! Replace any blank field of the P1 file specification with
$ ! a wildcard character
$ !
$ P1 = F$PARSE(P1,"*.*;*") [1]
$ !
$ ! Define initial values for symbols
$ !
$ FIRST_TIME = "TRUE"
$ FILE_COUNT = 0
$ TOTAL_ALLOC = 0
$ TOTAL_USED = 0
$
$ LOOP: [2]
$ FILESPEC = F$SEARCH(P1)
$ ! Find next file in directory
$ IF FILESPEC .EQS. "" THEN GOTO DONE
$ ! If no more files, then done
$ IF .NOT. FIRST_TIME THEN GOTO SHOW_FILE
$ ! Print header only once
$ !
$ ! Construct and output the header line
$ !
$ FIRST_TIME = "FALSE" [3]
$ DIRSPEC = F$PARSE(FILESPEC,,, "DEVICE") -
+F$PARSE(FILESPEC,,, "DIRECTORY")
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "Directory ",DIRSPEC
$ WRITE SYS$OUTPUT ""
$ LASTDIR = DIRSPEC $
$ !
$ ! Put the file name together, get some of the file attributes, and
$ ! type the information out
$ !
$ SHOW_FILE:
$ FILE_COUNT = FILE_COUNT + 1
$ FILENAME = F$PARSE(FILESPEC,,, "NAME") - [4]
+ F$PARSE(FILESPEC,,, "TYPE") -
+ F$PARSE(FILESPEC,,, "VERSION")
$ ALLOC = F$FILE_ATTRIBUTES(FILESPEC, "ALQ")
$ USED = F$FILE_ATTRIBUTES(FILESPEC, "EOF")
$ TOTAL_ALLOC = TOTAL_ALLOC + ALLOC
$ TOTAL_USED = TOTAL_USED + USED
$ REVISED = F$FILE_ATTRIBUTES(FILESPEC,"RDT")
$ LINE = F$FAO("!19AS !5UL/!5!> !17AS",FILENAME,-
USED, ALLOC, REVISED)
$ WRITE SYS$OUTPUT LINE
$ GOTO LOOP
$
$ !
$ ! Output summary information, reset verification, and exit
$ !
$ DONE:
$ WRITE SYS$OUTPUT "" [5]
$ WRITE SYS$OUTPUT "Total of ''FILE_COUNT' files, " + -
"''TOTAL_USED'/''TOTAL_ALLOC' blocks."
$ SAVE_VERIFY_PROCEDURE = F$VERIFY(SAVE_VERIFY_PROCEDURE,SAVE_VERIFY_IMAGE)
$ EXIT
DIR.COM ¸í·É ÇÁ·Î½ÃÀú ¼³¸í
[1] ÀÌ ÇÁ·Î½ÃÀú´Â F$PARSE ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© »ç¿ëÀÚ Á¦°ø ÆÄÀÏ ÁöÁ¤ ¹æ¹ýÀÎ P1ÀÇ ºó Çʵ忡 º°Ç¥¸¦ ³Ö½À´Ï´Ù. DIR.COMÀ» ½ÇÇàÇÒ ¶§ ¸Å°³ º¯¼ö¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é F$PARSE ÇÔ¼ö°¡ P1¿¡ °ª "*.*;*"¸¦ ÇÒ´çÇÕ´Ï´Ù. ÀÌ °æ¿ì DIR.COMÀ» ½ÇÇàÇϸé ÇöÀç ±âº» µð·ºÅ丮ÀÇ ¸ðµç ÆÄÀÏÀÌ Ç¥½ÃµË´Ï´Ù.
[2] F$SEARCH ·º½ÃÄ® ÇÔ¼ö´Â µð·ºÅ丮¿¡¼­ P1ÀÌ ³ªÅ¸³»´Â ÆÄÀÏÀ» °Ë»öÇÕ´Ï´Ù. P1¿¡ ¿ÍÀϵåÄ«µå(º°Ç¥)°¡ Æ÷ÇԵǾî ÀÖÀ» °æ¿ì F$SEARCH ÇÔ¼ö´Â ÀÏÄ¡ÇÏ´Â ¸ðµç ÆÄÀÏ ÁöÁ¤ ¹æ¹ýÀ» ¹ÝȯÇÕ´Ï´Ù. ¸¶Áö¸· ÆÄÀÏ ÁöÁ¤ ¹æ¹ýÀÌ ¹ÝȯµÈ ´ÙÀ½ ÇÁ·Î½ÃÀú´Â ·¹À̺í DONE¿¡¼­ ºÐ±âµË´Ï´Ù.
[3] ÀÌ ÇÁ·Î½ÃÀú´Â Á¦ÀÏ Ã³À½ ·çÇÁ¸¦ Åë°úÇÒ ¶§ µð·ºÅ丮 Ç¥½Ã¸¦ À§ÇÑ ¸Ó¸®±ÛÀ» ±â·ÏÇÕ´Ï´Ù. ÀÌ ¸Ó¸®±Û¿¡´Â ÀåÄ¡ À̸§°ú µð·ºÅ丮 À̸§ÀÌ Æ÷ÇԵ˴ϴÙ. ÇÁ·Î½ÃÀú´Â F$PARSE ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ÀÌ À̸§À» ¾ò½À´Ï´Ù.
[4] ÀÌ ÇÁ·Î½ÃÀú´Â F$PARSE ·º½ÃÄ® ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© µð·ºÅ丮ÀÇ °¢ ÆÄÀÏ ÁöÁ¤ ¹æ¹ýÀ¸·ÎºÎÅÍ ÆÄÀÏ À̸§À» ÃßÃâÇÕ´Ï´Ù. ±×·± ´ÙÀ½ F$FILE_ATTRIBUTES ·º½ÃÄ® ÇÔ¼ö´Â °¢ ÆÄÀÏ¿¡ ´ëÇÑ »ç¿ëµÈ ºí·Ï, ÇÒ´çµÈ ºí·Ï ¹× ÀÛ¼º ³¯Â¥ Á¤º¸¸¦ ¾ò½À´Ï´Ù. ¸¶Áö¸·À¸·Î F$FAO ÇÔ¼ö´Â µð·ºÅ丮ÀÇ °¢ ÆÄÀÏ¿¡ ´ëÇÑ ´ÜÀÏ Ç¥½ÃÇàÀ» ¼­½ÄÈ­ÇÕ´Ï´Ù. F$FAO ÇÔ¼ö´Â ÆÄÀÏ À̸§°ú ÆÄÀÏ ¼Ó¼º Á¤º¸¸¦ Àμö·Î »ç¿ëÇÕ´Ï´Ù.
[5] F$SEARCH°¡ null ¹®ÀÚ¿­À» ¹ÝȯÇϸé ÇÁ·Î½ÃÀú°¡ ·¹À̺í DONE¿¡¼­ ºÐ±âµÇ°í ÃÑ ÆÄÀÏ ¼ö, »ç¿ëµÈ ÃÑ ºí·Ï ¼ö, µð·ºÅ丮¿¡ ÇÒ´çµÈ ÃÑ ºí·Ï ¼ö µîÀ» Ç¥½ÃÇÕ´Ï´Ù.
DIR.COM ¸í·É ÇÁ·Î½ÃÀú º¸±â ½ÇÇà
$ @DIR [VERN]*.COM
Directory DISK4:[VERN]

BATCH.COM;1 1/3 11-DEC-1999 11:43
CALC.COM;3 1/3 11-DEC-1999 11:30
CONVERT.COM;1 5/6 11-DEC-1999 15:23
.
.
.
LOGIN.COM;34 2/3 11-DEC-1999 13:17
PID.COM;7 1/3 11-DEC-1999 09:49
SCRATCH.COM;6 1/3 11-DEC-1999 11:29)

Total of 15 files, 22/48 blocks.
ÀÌ ÇÁ·Î½ÃÀú´Â µð·ºÅ丮 [VERN]¿¡ ÀÖ´Â ¸ðµç .COM ÆÄÀÏ¿¡ ´ëÇÑ Á¤º¸¸¦ ¹ÝȯÇÕ´Ï´Ù.
SYS.COM ¸í·É ÇÁ·Î½ÃÀú
ÀÌ ¸í·É ÇÁ·Î½ÃÀú´Â ÇöÀç ÇÁ·Î¼¼½º, ±×·ì ³»ÀÇ ¸ðµç ÇÁ·Î¼¼½º(ÇöÀç ÇÁ·Î¼¼½º¿¡ group ±ÇÇÑÀÌ ÀÖÀ» °æ¿ì) ¹× ½Ã½ºÅÛ ³»ÀÇ ¸ðµç ÇÁ·Î¼¼½º(ÇöÀç ÇÁ·Î¼¼½º¿¡ world ±ÇÇÑÀÌ ÀÖ´Â °æ¿ì)¿¡ ´ëÇÑ Åë°è¸¦ ¹ÝȯÇÕ´Ï´Ù. ÀÌ ÇÁ·Î½ÃÀú¿¡¼­´Â F$PID, F$EXTRACT ¹× F$GETJPI ·º½ÃÄ® ÇÔ¼öÀÇ »ç¿ë ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù.
º¸±â: SYS.COM
$ !
$ ! Displays information about owner, group, or system processes.
$ !
$ ! Turn off verification and save current settings
$ SAVE_VERIFY_IMAGE = F$ENVIRONMENT("VERIFY_IMAGE")
$ SAVE_VERIFY_PROCEDURE = F$VERIFY(0)
$ CONTEXT = "" ! Initialize PID search context [1]
$ !
$ ! Output header line.
$ !
$ WRITE SYS$OUTPUT " PID Username Term Process " + - [2]
"name State Pri Image"
$ !
$ ! Output process information.
$ !
$LOOP:
$ !
$ ! Get next PID. If null, then done.
$ !
$ PID = F$PID(CONTEXT) [3]
$ IF PID .EQS. "" THEN GOTO DONE
$ !
$ ! Get image file specification and extract the file name.
$ !
$ IMAGNAME = F$GETJPI(PID,"IMAGNAME") [4]
$ IMAGNAME = F$PARSE(IMAGNAME,,,"NAME","SYNTAX_ONLY")

$ !
$ ! Get terminal name. If none, then describe type of process.
$ !
$ TERMINAL = F$GETJPI(PID,"TERMINAL") [5]
$ IF TERMINAL .EQS. "" THEN -
TERMINAL = "-"+F$EXTRACT(0,3,F$GETJPI(PID,"MODE") )+"-"
$ IF TERMINAL .EQS. "-INT-" THEN TERMINAL = "-DET-"
$ IF F$GETJPI(PID,"OWNER") .NE. 0 THEN TERMINAL = "-SUB-"
$ !
$ ! Get more information, put process line together,
$ ! and output it.
$ !
$ LINE = F$FAO("!AS !12AS !7AS !15AS !5AS !2UL/!UL !10AS", -[6]
PID,F$GETJPI(PID,"USERNAME"),TERMINAL,-
F$GETJPI(PID,"PRCNAM"),-
F$GETJPI(PID,"STATE"),F$GETJPI(PID,"PRI"),-
F$GETJPI(PID,"PRIB"),IMAGNAME)
$ WRITE SYS$OUTPUT LINE
$ GOTO LOOP

$ !
$ ! Restore verification and exit.
$ ! $DONE:
$ SAVE_VERIFY_PROCEDURE = F$VERIFY(SAVE_VERIFY_PROCEDURE,SAVE_VERIFY_IMAGE)
$ EXIT
SYS.COM ¸í·É ÇÁ·Î½ÃÀú ¼³¸í
[1] ±âÈ£ CONTEXT´Â null °ªÀ¸·Î ÃʱâÈ­µË´Ï´Ù. ÀÌ ±âÈ£´Â F$PID ÇÔ¼ö¿Í ÇÔ²² »ç¿ëµÇ¾î ÇÁ·Î¼¼½º ID ¹øÈ£ ¸ñ·ÏÀ» ±¸ÇÕ´Ï´Ù.
[2] ÀÌ ÇÁ·Î½ÃÀú´Â Ç¥½ÃÇÒ ¸Ó¸®±ÛÀ» ÀÛ¼ºÇÕ´Ï´Ù.
[3] ÀÌ ÇÁ·Î½ÃÀú´Â ù ¹ø° ÇÁ·Î¼¼½º ID(PID) ¹øÈ£¸¦ °¡Á®¿É´Ï´Ù. ÇöÀç ÇÁ·Î¼¼½º¿¡ group ¶Ç´Â world ±ÇÇÑÀÌ ºÎÁ·ÇÒ °æ¿ì ÇöÀç ÇÁ·Î¼¼½ºÀÇ PID ¹øÈ£°¡ ¹ÝȯµË´Ï´Ù. ÇöÀç ÇÁ·Î¼¼½º¿¡ group ±ÇÇÑÀÌ ÀÖÀ» °æ¿ì ±×·ì ¸ñ·ÏÀÇ Ã¹ ¹ø° PID ¹øÈ£°¡ ¹ÝȯµË´Ï´Ù. ÇöÀç ÇÁ·Î¼¼½º¿¡ world ±ÇÇÑÀÌ ÀÖÀ» °æ¿ì ½Ã½ºÅÛ ¸ñ·ÏÀÇ Ã¹ ¹ø° PID ¹øÈ£°¡ ¹ÝȯµË´Ï´Ù. ÀÌ ÇÔ¼ö´Â ¸¶Áö¸· PID ¹øÈ£°¡ ¹ÝȯµÉ ¶§±îÁö ¼øÂ÷ÀûÀ¸·Î ´ÙÀ½ PID ¹øÈ£¸¦ ¹ÝȯÇÕ´Ï´Ù. ÀÌ ÁöÁ¡¿¡¼­ null ¹®ÀÚ¿­ÀÌ ¹ÝȯµÇ°í ÇÁ·Î½ÃÀú°¡ ³¡À¸·Î ºÐ±âµË´Ï´Ù.
[4] ÀÌ ÇÁ·Î½ÃÀú´Â F$GETJPI ·º½ÃÄ® ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© °¢ PID ¹øÈ£¿¡ ´ëÇÑ À̹ÌÁö ÆÄÀÏ ÁöÁ¤ ¹æ¹ýÀ» °¡Á®¿É´Ï´Ù. F$PARSE ÇÔ¼ö´Â F$GETJPI ÇÔ¼ö¿¡ ÀÇÇØ ¹ÝȯµÇ´Â ÁöÁ¤ ¹æ¹ýÀ¸·ÎºÎÅÍ ÆÄÀÏ À̸§À» ÃßÃâÇÕ´Ï´Ù.
[5] ÀÌ ÇÁ·Î½ÃÀú´Â F$GETJPI ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© °¢ PID ¹øÈ£¿¡ ´ëÇÑ Å͹̳ΠÀ̸§À» °¡Á®¿É´Ï´Ù. F$EXTRACT ÇÔ¼ö´Â F$GETJPI(PID,MODE¡±)¿¡ ÀÇÇØ ¹ÝȯµÇ´Â MODE ÁöÁ¤ ¹æ¹ýÀÇ Ã³À½ ¼¼ ¹®ÀÚ¸¦ ÃßÃâÇÏ¿© ÇÁ·Î¼¼½º À¯ÇüÀ» °áÁ¤ÇÕ´Ï´Ù. F$GETJPI ÇÔ¼ö¸¦ ´Ù½Ã »ç¿ëÇÏ¿© ÇÁ·Î¼¼½º°¡ ÇÏÀ§ ÇÁ·Î¼¼½ºÀÎÁö ¿©ºÎ¸¦ °áÁ¤ÇÕ´Ï´Ù.
[6] ÀÌ ÇÁ·Î½ÃÀú´Â F$GETJPI ·º½ÃÄ® ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ¹ÝȯµÈ °¢ PID ¹øÈ£¿¡ ´ëÇÑ »ç¿ëÀÚ À̸§, ÇÁ·Î¼¼½º À̸§, ÇÁ·Î¼¼½º »óÅÂ, ÇÁ·Î¼¼½º ¿ì¼± ¼øÀ§, ÇÁ·Î¼¼½º ±âº» ¿ì¼± ¼øÀ§ µîÀ» °¡Á®¿É´Ï´Ù. F$FAO ·º½ÃÄ® ÇÔ¼ö´Â ÀÌ Á¤º¸¸¦ È­¸é Ç¥½Ã·Î ¼­½ÄÈ­ÇÕ´Ï´Ù.
SYS.COM ¸í·É ÇÁ·Î½ÃÀú º¸±â ½ÇÇà
$ @SYS
PID Username Term Process name State Pri Image
00050011 NETNONPRIV -NET- MAIL_14411 LEF 9/4 MAIL
00040013 STOVE RTA6: STOVE LEF 9/4
00140015 MAROT -DET- DMFB0ACP HIB 9/8 F11BAC
00080016 THOMPSON -DET- MTA0ACP HIB 12/8 MTAAACP
00070017 JUHLES TTF1: JUHLES LEF 9/4
.
.
.
00040018 MARCO TTA2: MARCO HIB 9/4 RTPAD
0018001A VERN RTA3: VERN LEF 9/4
0033001B YISHA RTA7: YISHA CUR 4/4
0002004A SYSTEM -DET- ERRFMT HIB 12/7 ERRFMT
ÀÌ ÇÁ·Î½ÃÀú´Â ½Ã½ºÅÛ¿¡ ÀÖ´Â ¸ðµç ÇÁ·Î¼¼½º¿¡ ´ëÇÑ Á¤º¸¸¦ ¹ÝȯÇÕ´Ï´Ù. ÇöÀç ÇÁ·Î¼¼½º¿¡ world ±ÇÇÑÀÌ ÀÖ½À´Ï´Ù.
GETPARMS.COM ¸í·É ÇÁ·Î½ÃÀú
ÀÌ ¸í·É ÇÁ·Î½ÃÀú´Â ÇÁ·Î½ÃÀú¿¡ Àü´ÞµÈ ¸Å°³ º¯¼ö °³¼ö¸¦ ¹ÝȯÇÕ´Ï´Ù. ´Ù¸¥ ÇÁ·Î½ÃÀú¿¡¼­ GETPARMS.COMÀ» È£ÃâÇÏ¿© È£Ãâ ÇÁ·Î½ÃÀú¿¡ Àü´ÞµÈ ¸Å°³ º¯¼ö ¼ö¸¦ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.
º¸±â: GETPARMS.COM
$ ! Procedure to count the number of parameters passed to a command
$ ! procedure. This number is returned as the global symbol PARMCOUNT.

$ !
$ SAVE_VERIFY_IMAGE = F$ENVIRONMENT("VERIFY_IMAGE") [1]
$ SAVE_VERIFY_PROCEDURE = F$VERIFY(0)
$ ! $ IF P1 .EQS. "?" THEN GOTO TELL [2]
$ !
$ ! Loop to count the number of parameters passed. Null parameters are
$ ! counted until the last non-null parameter is passed.
$ !
$ COUNT = 0 [3]
$ LASTNONNULL = 0
$ LOOP:
$ IF COUNT .EQ. 8 THEN GOTO END_COUNT
$ COUNT = COUNT + 1
$ IF P'COUNT' .NES. "" THEN LASTNONNULL = COUNT
$ GOTO LOOP
$ !
$ END_COUNT: [4]
$ !
$ ! Place the number of non-null parameters passed into PARMCOUNT.
$ !
$ PARMCOUNT == LASTNONNULL
$ !
$ ! Restore verification setting, if it was on, before exiting
$ ! [5]
$ SAVE_VERIFY_PROCEDURE = F$VERIFY(SAVE_VERIFY_PROCEDURE,SAVE_VERIFY_IMAGE)
$ EXIT
$ !
$ TELL: [6]
$ TYPE SYS$INPUT
This procedure counts the number of parameters passed to
another procedure. This procedure can be called by entering
the following string in any procedure:

@GETPARMS 'P1 'P2 'P3 'P4 'P5 'P6 'P7 'P8

On return, the global symbol PARMCOUNT
contains the number of parameters passed to the procedure.
$ !
$ EXIT
GETPARMS.COM ¸í·É ÇÁ·Î½ÃÀú ¼³¸í
[1] ÀÌ ÇÁ·Î½ÃÀú´Â È®ÀÎ ±â´ÉÀ» ²ô±â Àü¿¡ ÇöÀç À̹ÌÁö ¹× ÇÁ·Î½ÃÀú È®ÀÎ ¼³Á¤À» ÀúÀåÇÕ´Ï´Ù.
[2] ¹°À½Ç¥ ¹®ÀÚ°¡ ÇÁ·Î½ÃÀú¿¡ ¸Å°³ º¯¼ö·Î Àü´ÞµÈ °æ¿ì ÇÁ·Î½ÃÀú´Â ·¹À̺í TELL¿¡¼­ ºÐ±âµË´Ï´Ù(¼³¸í 6 ÂüÁ¶).
[3] ÇÁ·Î½ÃÀú¿¡ Àü´ÞµÈ ¸Å°³ º¯¼öÀÇ ¼ö¸¦ °è»êÇϵµ·Ï ·çÇÁ°¡ ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù. Ä«¿îÅÍ COUNT ¹× LASTNONNULLÀº ·çÇÁ·Î µé¾î°¡±â Àü¿¡ 0À¸·Î ÃʱâÈ­µË´Ï´Ù. ·çÇÁ ³»¿¡¼­ COUNT´Â °ª 8±îÁö Áõ°¡µÇ°í Å×½ºÆ®µË´Ï´Ù. COUNT°¡ 8À̸é ÃÖ´ë ¸Å°³ º¯¼ö °³¼ö°¡ ÀÔ·ÂµÈ °ÍÀÔ´Ï´Ù. nullÀÌ ¾Æ´Ñ ¸Å°³ º¯¼ö°¡ Àü´ÞµÉ ¶§¸¶´Ù LASTNONNULLÀÌ ÇØ´ç ¸Å°³ º¯¼öÀÇ ¹øÈ£¿Í ÀÏÄ¡µË´Ï´Ù.
IF ¸í·ÉÀÌ ½ÇÇàµÉ ¶§¸¶´Ù ±âÈ£ COUNTÀÇ °ªÀÌ ´Þ¶óÁý´Ï´Ù. óÀ½ ½ÇÇàµÉ ¶§´Â COUNT °ªÀÌ 1ÀÌ°í IF ¸í·ÉÀÌ P1À» °Ë»çÇÕ´Ï´Ù. µÎ ¹ø° ½ÇÇàµÉ ¶§´Â P2¸¦ °Ë»çÇÕ´Ï´Ù. ¼¼ ¹ø°´Â P3¸¦ ³× ¹ø°´Â P4ÀÇ ¼øÀ¸·Î °Ë»çÇÕ´Ï´Ù.
[4] ¸Å°³ º¯¼ö °³¼ö°¡ 8¿¡ µµ´ÞÇϸé ÇÁ·Î½ÃÀú°¡ END_COUNT¿¡¼­ ºÐ±âµË´Ï´Ù. ±âÈ£ LASTNONNULL¿¡´Â Àü´ÞµÈ nullÀÌ ¾Æ´Ñ ¸¶Áö¸· ¸Å°³ º¯¼öÀÇ °³¼ö°¡ Æ÷ÇԵ˴ϴÙ. ÀÌ °ªÀº ±Û·Î¹ú ±âÈ£ PARMCOUNT¿¡ Æ÷ÇԵ˴ϴÙ. PARMCOUNT¸¦ ±Û·Î¹ú ±âÈ£·Î Á¤ÀÇÇØ¾ß ÀÌ ¸Å°³ º¯¼öÀÇ °ªÀ» È£Ãâ ¸í·É ¼öÁØ¿¡¼­ Å×½ºÆ®ÇÒ ¼ö ÀÖ½À´Ï´Ù.
[5] ¿øº» È®ÀÎ ¼³Á¤ÀÌ º¹¿øµË´Ï´Ù.
[6] ·¹À̺í TELL¿¡¼­ TYPE ¸í·ÉÀº ÀÔ·Â ½ºÆ®¸²¿¡ Æ÷ÇԵǴ µ¥ÀÌÅ͸¦ Ç¥½ÃÇÕ´Ï´Ù. ¸í·É ÇÁ·Î½ÃÀú¿¡¼­ ÀÔ·Â ½ºÆ®¸²Àº ¸í·É ÇÁ·Î½ÃÀú ÆÄÀÏÀÔ´Ï´Ù. TYPE ¸í·ÉÀº GETPARMS.COM »ç¿ë ¹æ¹ý¿¡ ´ëÇÑ ÁöħÀ» Ç¥½ÃÇÕ´Ï´Ù.
GETPARMS.COM ¸í·É ÇÁ·Î½ÃÀú º¸±â ½ÇÇà
ÇÁ·Î½ÃÀú SORTFILES.COM¿¡¼­´Â »ç¿ëÀÚ°¡ nullÀÌ ¾Æ´Ñ ¼¼ ¸Å°³ º¯¼ö¸¦ Àü´ÞÇØ¾ß ÇÕ´Ï´Ù. SORTFILES.COM ÇÁ·Î½ÃÀú¿¡´Â ´ÙÀ½°ú °°Àº ÇàÀÌ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù.
$ @GETPARMS 'P1' 'P2' 'P3' 'P4' 'P5' 'P6' 'P7' 'P8'
$ IF PARMCOUNT .NE. 3 THEN GOTO NOT_ENOUGH
.
.
.
$NOT_ENOUGH:
$ WRITE SYS$OUTPUT -
"Three non-null parameters required. Type SORTFILES HELP for info."
$
EXIT ÇÁ·Î½ÃÀú SORTFILES.COMÀº ´ÙÀ½°ú °°ÀÌ È£ÃâµÉ ¼ö ÀÖ½À´Ï´Ù.
$ @SORTFILES DEF 4
Three non-null parameters required. Type SORTFILE HELP for info.
ÀÌ ÇÁ·Î½ÃÀú¸¦ ¿Ã¹Ù¸£°Ô È£ÃâÇÏ·Á¸é(Áï, SORTFILES¿¡ Àü´ÞµÇ´Â ¸Å°³ º¯¼ö°¡ GETPARMS¿¡ ±×´ë·Î Àü´ÞµÇ¾î ó¸®µÇ°Ô ÇÏ·Á¸é) ±âÈ£ P1¿¡¼­ P8±îÁö°¡ ´ÜÀÏ ¹°À½Ç¥·Î ¹­¿© ÀÖ¾î¾ß ÇÕ´Ï´Ù. GETPARMSÀÇ ¹Ýȯ °ªÀÌ 3ÀÌ ¾Æ´Ò °æ¿ì SORTFILES´Â ¿À·ù ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ°í Á¾·áµË´Ï´Ù.
EDITALL.COM ¸í·É ÇÁ·Î½ÃÀú
ÀÌ ¸í·É ÇÁ·Î½ÃÀú´Â EDT ÆíÁý±â¸¦ ¹Ýº¹ÀûÀ¸·Î È£ÃâÇÏ¿© ÆÄÀÏ ±×·ìÀ» µ¿ÀÏÇÑ ÆÄÀÏ À¯ÇüÀ¸·Î ÆíÁýÇÕ´Ï´Ù. ÀÌ ÇÁ·Î½ÃÀú¿¡¼­´Â ·º½ÃÄ® ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© Ä®·³ Çü½Ä Ãâ·ÂÀ¸·ÎºÎÅÍ ÆÄÀÏ À̸§À» ÃßÃâÇÏ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù. ¶ÇÇÑ, ¸í·É ÇÁ·Î½ÃÀú ³»¿¡¼­ È£ÃâµÇ´Â ÇÁ·Î±×·¥¿¡ ´ëÇÑ ÀÔ·Â ½ºÆ®¸²À» ÀçÁ¤ÀÇÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù.
º¸±â: EDITALL.COM
$ ! Procedure to edit all files in a directory with a
$ ! specified file type. Use P1 to indicate the file type.
$ !
$ ON CONTROL_Y THEN GOTO DONE ! Ctrl/Y action [1]
$ ON ERROR THEN GOTO DONE
$ !
$ ! Check for file type parameter. If one was entered, continue;
$ ! otherwise, prompt for a parameter.
$ !
$ IF P1 .NES. "" THEN GOTO OKAY [2]
$ INQUIRE P1 "Enter file type of files to edit"
$ !
$ ! List all files with the specified file type and write the DIRECTORY
$ ! output to a file named DIRECT.OUT
$ !
$ OKAY:
$ DIRECTORY/VERSIONS=1/COLUMNS=1 - [3]
/NODATE/NOSIZE -
/NOHEADING/NOTRAILING -
/OUTPUT=DIRECT.OUT *.'P1'
$ IF .NOT. $STATUS THEN GOTO ERROR_SEC [4]
$ !
$ OPEN/READ/ERROR=ERROR_SEC DIRFILE DIRECT.OUT [5]
$ !
$ ! Loop to read directory file
$ !
$ NEWLINE: [6]
$ READ/END=DONE DIRFILE NAME
$ DEFINE/USER_MODE SYS$INPUT SYS$COMMAND: ! Redefine SYS$INPUT
$ EDIT 'NAME' ! Edit the file
$ GOTO NEWLINE
$ !
$ DONE: [7]
$ CLOSE DIRFILE/ERROR=NOTOPEN ! Close the file
$ NOTOPEN:
$ DELETE DIRECT.OUT;* ! Delete temp file
$ EXIT
$ !
$ ERROR_SEC:
$ WRITE SYS$OUTPUT "Error: ",F$MESSAGE($STATUS)
$ DELETE DIRECT.OUT;*
$ EXIT
EDITALL.COM ¸í·É ÇÁ·Î½ÃÀú ¼³¸í
[1] ON ¸í·ÉÀº ÀÌ ÇÁ·Î½ÃÀú¿¡ ´ëÇÑ Ã³¸® Á¶°ÇÀ» ¼³Á¤ÇÕ´Ï´Ù. ÀÌ ÇÁ·Î½ÃÀú¸¦ ½ÇÇàÇÏ´Â µ¿¾È¿¡ Ctrl/Y¸¦ ´©¸£¸é ÇÁ·Î½ÃÀú°¡ ·¹À̺í DONE¿¡¼­ ºÐ±âµË´Ï´Ù. ¿À·ù ¶Ç´Â ½É°¢ÇÑ ¿À·ù°¡ ¹ß»ýÇÒ °æ¿ì¿¡µµ ÇÁ·Î½ÃÀú°¡ ·¹À̺í DONE¿¡¼­ ºÐ±âµË´Ï´Ù.
[2] ÀÌ ÇÁ·Î½ÃÀú´Â ¸Å°³ º¯¼ö°¡ ÀԷµǾú´ÂÁö ¿©ºÎ¸¦ °Ë»çÇÕ´Ï´Ù. ¸Å°³ º¯¼ö°¡ ÀԷµÇÁö ¾ÊÀº °æ¿ì ÇÁ·Î½ÃÀú´Â ÆÄÀÏ Çü½ÄÀ» ¹¯´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù.
[3] DIRECTORY ¸í·ÉÀº ÆÄÀÏ Çü½ÄÀÌ P1À¸·Î ÁöÁ¤µÈ ¸ðµç ÆÄÀÏÀ» ³ª¿­ÇÕ´Ï´Ù. ¸í·É ÀÔ·ÂÀº DIRECT.OUT¿¡ ±â·ÏµË´Ï´Ù. /VERSIONS=1 ÇÑÁ¤ÀÚ´Â °¢ ÆÄÀÏÀÇ ÃÖ»óÀ§ ¹öÀü¸¸ ³ª¿­ÇÕ´Ï´Ù. /NOHEADING ¹× /NOTRAILING ÇÑÁ¤ÀÚ´Â Ãâ·Â¿¡ Á¦¸ñÇà ¶Ç´Â µð·ºÅ丮 ¿ä¾àÀ» Æ÷ÇÔÇÏÁö ¾Ê½À´Ï´Ù. /COLUMNS=1 ÇÑÁ¤ÀÚ´Â ·¹Äڵ帶´Ù ÆÄÀÏ À̸§À» Çϳª¾¿ ÁöÁ¤ÇÕ´Ï´Ù.
[4] IF ¸í·ÉÀº DIRECTORY ¸í·ÉÀÌ $STATUS °ªÀ» Å×½ºÆ®ÇÏ¿© ¹ÝȯµÇ´Â °ªÀ» °Ë»çÇÕ´Ï´Ù. DIRECTORY ¸í·ÉÀÌ ¼º°øÀûÀ¸·Î ¿Ï·áµÇÁö ¾ÊÀ¸¸é $STATUS´Â Á¤¼ö °ª¸¸ °®°í ÇÁ·Î½ÃÀú°¡ ·¹À̺í ERROR_SEC¿¡¼­ ºÐ±âµË´Ï´Ù.
[5] OPEN ¸í·ÉÀº µð·ºÅ丮 Ãâ·Â ÆÄÀÏÀ» ¿­°í ÇØ´ç ÆÄÀÏ¿¡ ³í¸® À̸§ DIRFILEÀ» ÁöÁ¤ÇÕ´Ï´Ù.
[6] READ ¸í·ÉÀº DIRECTORY ¸í·É Ãâ·Â¿¡¼­ ±âÈ£ À̸§ NAMEÀ¸·Î ÇÑ Ç྿ ÀнÀ´Ï´Ù. °¢ ÇàÀ» ÀÐÀº ÈÄ ÇÁ·Î½ÃÀú´Â DEFINE ¸í·ÉÀ» »ç¿ëÇÏ¿© ÆíÁý ¼¼¼Ç¿¡ ´ëÇÑ ÀÔ·Â ½ºÆ®¸²(SYS$INPUT)ÀÌ Å͹̳ÎÀÌ µÇµµ·Ï ÀçÁ¤ÀÇÇÕ´Ï´Ù. ±×·± ´ÙÀ½ ±âÈ£ NAMEÀ» ÆÄÀÏ ÁöÁ¤ ¹æ¹ýÀ¸·Î ÁöÁ¤ÇÏ¿© ÆíÁý±â¸¦ È£ÃâÇÕ´Ï´Ù. ÆíÁý ¼¼¼ÇÀÌ ¿Ï·áµÇ¸é ¸í·É ÀÎÅÍÇÁ¸®ÅÍ°¡ ¸í·É ÇÁ·Î½ÃÀúÀÇ ´ÙÀ½ ÇàÀ» ÀÐ°í ·¹À̺í NEWLINE¿¡¼­ ºÐ±âµË´Ï´Ù. ÇÁ·Î½ÃÀú°¡ µð·ºÅ丮¿¡¼­ ÁöÁ¤µÈ ÆÄÀÏ Çü½ÄÀ» °®´Â ÆÄÀÏÀ» ¸ðµÎ ÆíÁýÇÏ¸é ·¹À̺í DONE¿¡¼­ ºÐ±âµË´Ï´Ù.
[7] ·¹À̺í DONEÀº READ ¸í·É¿¡ ´ëÇÑ /END ÇÑÁ¤ÀÚÀÇ ´ë»ó ·¹À̺íÀÌ°í ÇÁ·Î½ÃÀú ½ÃÀ۽à ¼³Á¤ÇÑ ON CONTROL_Y ¹× ON ERROR Á¶°Ç¿¡ ´ëÇÑ ´ë»ó ·¹À̺íÀÔ´Ï´Ù. ÀÌ ·¹ÀÌºí¿¡¼­ ÇÁ·Î½ÃÀú´Â ÇÊ¿äÇÑ Á¤¸® ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù.
CLOSE ¸í·ÉÀº DIRECTORY ¸í·É Ãâ·Â ÆÄÀÏÀ» ´Ý°í /ERROR ÇÑÁ¤ÀÚ´Â ÆÄÀÏ¿¡¼­ ±× ´ÙÀ½ Çà¿¡ ´ëÇÑ ·¹À̺íÀ» ÁöÁ¤ÇÕ´Ï´Ù. /ERROR¸¦ »ç¿ëÇÏ¸é µð·ºÅ丮 ÆÄÀÏÀÌ ¿­¸®Áö ¾Ê´Â °æ¿ì Ç¥½ÃµÇ´Â ¿À·ù ¸Þ½ÃÁö¸¦ ¹«½ÃÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, µð·ºÅ丮 ÆÄÀÏÀÌ ¿­¸®±â Àü¿¡ Ctrl/Y¸¦ ´©¸¦ °æ¿ì ÀÌ ¿À·ù ¸Þ½ÃÁö°¡ ¹ß»ýµË´Ï´Ù.
Á¤¸®ÀÇ µÎ ¹ø° ´Ü°è¿¡¼­´Â Àӽà µð·ºÅ丮 ÆÄÀÏÀ» »èÁ¦ÇÕ´Ï´Ù.
EDITALL.COM ¸í·É ÇÁ·Î½ÃÀú º¸±â ½ÇÇà
$ @EDITALL DAT
* .
.
.
%DELETE-I-FILDEL, device:[directory]DIRECT.OUT;1 deleted (x blocks)
ÇÁ·Î½ÃÀú EDITALLÀº P1À» .DAT·Î ÁöÁ¤ÇÏ¿© È£ÃâµË´Ï´Ù. ÀÌ ÇÁ·Î½ÃÀú´Â ÆÄÀÏ Çü½ÄÀÌ .DATÀÎ ±âº» µð·ºÅ丮¿¡ ÀÖ´Â ¸ðµç ÆÄÀÏÀÇ µð·ºÅ丮 ¸ñ·ÏÀ» ÀÛ¼ºÇÏ°í °¢ ÆÄÀÏÀ» ÆíÁýÇÒ ÆíÁý±â¸¦ È£ÃâÇÕ´Ï´Ù. ÆÄÀÏ Çü½ÄÀÌ .DATÀÎ ¸¶Áö¸· ÆÄÀÏÀÌ ÆíÁýµÇ¸é ÇÁ·Î½ÃÀú´Â Àӽà ÆÄÀÏ DIRECT.OUTÀ» »èÁ¦ÇÏ°í Å͹̳ο¡ Á¤º¸ ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù.
MAILEDIT.COM ¸í·É ÇÁ·Î½ÃÀú
ÀÌ ¸í·É ÇÁ·Î½ÃÀú´Â Mail À¯Æ¿¸®Æ¼¿¡¼­ ÅؽºÆ® ÆíÁý±â¸¦ È£ÃâÇÕ´Ï´Ù.
º¸±â: MAILEDIT.COM
$ ! Command procedure to invoke an editor for Mail.
$ !
$ ! Inputs:
$ !
$ ! P1 = Input file name.
$ ! P2 = Output file name.
$ !
$ ! If MAIL$EDIT is undefined, Mail will invoke the user's selected
$ ! callable editor set by the mail SET EDITOR command.
$ !
$ ! If MAIL$EDIT is defined to be a command procedure, Mail will create
$ ! a subprocess to edit the mail, but any SET EDITOR command in Mail
$ ! will override the definition of MAIL$EDIT for the remainder of that
$ ! Mail session.
$ !
$ ! Note that this procedure is run in the context of a subprocess.
$ ! LOGIN.COM is not executed. However, all process logical names
$ ! and DCL global symbols are copied. In particular, note that the
$ ! user's individual definition of the symbol EDIT is used if there
$ ! is one. Otherwise, the system default editor is used.
$ !
$ ! The default directory is the same as the parent process
$ !
$ DEFINE /USER SYS$INPUT 'F$TRNLNM("SYS$OUTPUT")' [1]
$ IF P1 .EQS. "" THEN GOTO NOINPUT [2]
$ EDIT /OUTPUT='P2' 'P1'[3]
$ EXIT
$NOINPUT:
$ EDIT 'P2'[4]
$ EXIT
MAILEDIT.COM ¸í·É ÇÁ·Î½ÃÀú ¼³¸í
[1] DEFINE ¸í·ÉÀ» »ç¿ëÇÏ¸é ¸í·É ÆÄÀÏ ´ë½Å Å͹̳ο¡¼­ ÆíÁý±â ÀÔ·ÂÀ» °¡Á®¿Ã ¼ö ÀÖ½À´Ï´Ù.
[2] IF ¹®Àº Ãâ·Â ÆÄÀÏ À̸§ÀÌ ´Ù¸¥ ÆÄÀÏÀÇ ÆíÁý°ú ÆÄÀÏ À̸§ÀÌ µ¿ÀÏÇÑ ÆÄÀÏÀÇ ÆíÁýÀ» ±¸ºÐÇÕ´Ï´Ù.
[3] ÀÌ EDIT ¸í·ÉÀº ÀÔ·Â ÆÄÀÏ À̸§°ú Ãâ·Â ÆÄÀÏ À̸§À» »ç¿ëÇÏ¿© ÆíÁý±â¸¦ È£ÃâÇÕ´Ï´Ù. ÀÌ ÇàÀ» ÆíÁýÇÏ¿© ´Ù¸¥ ÆíÁý±â¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é, ´ÙÀ½°ú °°½À´Ï´Ù.
$ RUN XYZ_EDITOR.EXE /INPUT= 'P1' /OUTPUT='P2'
[4] ÀÌ EDIT ¸í·ÉÀº ´ÜÀÏ ÆÄÀÏ À̸§À» »ç¿ëÇÏ¿© ÆíÁý±â¸¦ È£ÃâÇÕ´Ï´Ù. ÀÌ ÇàÀ» ÆíÁýÇÏ¿© ´Ù¸¥ ÆíÁý±â¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é, ´ÙÀ½°ú °°½À´Ï´Ù.
$ RUN XYZ_EDITOR.EXE /INPUT= 'P2' /OUTPUT='P2'
MAILEDIT.COM ¸í·É ÇÁ·Î½ÃÀú º¸±â ½ÇÇà
$ DEFINE MAIL$EDIT MAILEDIT.COM
$ MAIL

MAIL>SHOW EDITOR
Your editor is defined by the file MAILEDIT.COM.

FORTUSER.COM ¸í·É ÇÁ·Î½ÃÀú
FORTRAN ÇÁ·Î±×·¥À» ÀÛ¼º, ÄÄÆÄÀÏ ¹× ½ÇÇàÇÏ´Â ´ëÈ­Çü »ç¿ëÀÚ¿¡ ´ëÇÑ Å͹̳Πȯ°æÀ» Á¦¾îÇÏ´Â ½Ã½ºÅÛ Á¤ÀÇ ·Î±×ÀÎ ¸í·É ÇÁ·Î½ÃÀú º¸±â¸¦ Á¦°øÇÕ´Ï´Ù. FORTUSER.COMÀÌ ·Î±×ÀÎ ¸í·É ÇÁ·Î½ÃÀú·Î ³ª¿­µÇ´Â Àü¿ë °èÁ¤¿¡ ·Î±×ÀÎÇÑ »ç¿ëÀÚ´Â FORTUSER.COM¿¡¼­ ¼ö¶ôÇÑ ¸í·É¸¸ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÇÁ·Î½ÃÀú´Â ·º½ÃÄ® ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ¸í·ÉÀ» À¯È¿ ¸í·É ¸ñ·Ï°ú ºñ±³ÇÏ¿© ¿É¼Ç Å×À̺íÀ» ´Ü°èº°·Î ó¸®ÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù.
º¸±â: FORTUSER.COM
$ ! Procedure to create, compile, link, execute, and debug
$ ! FORTRAN programs. Users can enter only the commands listed
$ ! in the symbol OPTION_TABLE.
$ SET NOCONTROL=Y [1]
$ SAVE_VERIFY_IMAGE = F$ENVIRONMENT("VERIFY_IMAGE")
$ SAVE_VERIFY_PROCEDURE = F$VERIFY(0)
$ OPTION_TABLE = "EDIT/COMPILE/LINK/RUN/EXECUTE/DEBUG/PRINT/HELP/FILE/DONE/" [2]
$ TYPE SYS$INPUT [3]
VMS FORTRAN Command Interpreter

Enter name of file with which you would like to work.
$ !
$ ! Set up for initial prompt
$ !
$ PROMPT = "INIT" [4]
$ GOTO HELP ! Print the initial help message
$ !
$ ! after the first prompting message, use the prompt: Command
$ !
$ INIT:
$ PROMPT = "GET_COMMAND"
$ GOTO FILE ! Get initial file name
$ !
$ ! Main command parsing routine. The routine compares the current
$ ! command against the options in the option table. When it finds
$ ! a match, it branches to the appropriate label.
$ !
$ GET_COMMAND:
$ ON CONTROL_Y THEN GOTO GET_COMMAND ! Ctrl/Y resets prompt [5]
$ SET CONTROL=Y
$ ON WARNING THEN GOTO GET_COMMAND ! If any, reset prompt
$ INQUIRE COMMAND "Command"
$ IF COMMAND .EQS. "" THEN GOTO GET_COMMAND
$ IF F$LOCATE(COMMAND + "/", OPTION_TABLE) .EQ. F$LENGTH(OPTION_TABLE) -[6]
THEN GOTO INVALID_COMMAND
$ GOTO 'COMMAND'
$ !
$ INVALID_COMMAND: [7]
$ WRITE SYS$OUTPUT " Invalid command"
$ !
$ HELP: [8]
$ TYPE SYS$INPUT
The commands you can enter are:
FILE Name of FORTRAN program in your current
default directory. Subsequent commands
process this file.
EDIT Edit the program.
COMPILE Compile the program with FORTRAN.
LINK Link the program to produce an executable image.
RUN Run the program's executable image.
EXECUTE Same function as COMPILE, LINK, and RUN.
DEBUG Run the program under control of the debugger.
PRINT Queue the most recent listing file for printing.
DONE Return to interactive command level.
HELP Print this help message.

Enter Ctrl/Y to restart this session
$ GOTO 'PROMPT' [9]
$ EDIT: [10]
$ DEFINE/USER_MODE SYS$INPUT SYS$COMMAND:
$ EDIT 'FILE_NAME'.FOR
$ GOTO GET_COMMAND
$ COMPILE:
$ FORTRAN 'FILE_NAME'/LIST/OBJECT/DEBUG
$ GOTO GET_COMMAND
$ LINK:
$ LINK 'FILE_NAME'/DEBUG
$ PURGE 'FILE_NAME'.*/KEEP=2
$ GOTO GET_COMMAND
$ RUN:
$ DEFINE/USER_MODE SYS$INPUT SYS$COMMAND:
$ RUN/NODEBUG 'FILE_NAME'
$ GOTO GET_COMMAND
$ DEBUG:
$ DEFINE/USER_MODE SYS$INPUT SYS$COMMAND:
$ RUN 'FILE_NAME'
$ GOTO GET_COMMAND
$ EXECUTE:
$ FORTRAN 'FILE_NAME'/LIST/OBJECT
$ LINK/DEBUG 'FILE_NAME'
$ PURGE 'FILE_NAME'.*/KEEP=2
$ RUN/NODEBUG 'FILE_NAME'
$ GOTO GET_COMMAND
$ PRINT:
$ PRINT 'FILE_NAME'
$ GOTO GET_COMMAND
$ BADFILE: [11]
$ WRITE SYS$OUTPUT "File must be in current default directory."
$ FILE:
$ INQUIRE FILE_NAME "File name"
$ IF FILE_NAME .EQS. "" THEN GOTO FILE
$ IF F$PARSE(FILE_NAME,,,"DIRECTORY") .NES. F$DIRECTORY() - [12]
THEN GOTO BADFILE
$ FILE_NAME = F$PARSE(FILE_NAME,,,"NAME")
$ GOTO GET_COMMAND
$ DONE:
$ EXIT
FORTUSER.COM ¸í·É ÇÁ·Î½ÃÀú ¼³¸í
[1] SET NOCONTROL=Y ¸í·ÉÀº ÀÌ ÇÁ·Î½ÃÀúÀÇ ÅëÁ¦¿¡ µû¶ó ·Î±×ÀÎÇÏ´Â »ç¿ëÀÚ°¡ ÇÁ·Î½ÃÀú³ª ÇÁ·Î½ÃÀúÀÇ ¸í·É ¶Ç´Â ÇÁ·Î±×·¥À» Áß´ÜÇÏÁö ¸øÇÏ°Ô ÇÕ´Ï´Ù.
[2] ¿É¼Ç Å×ÀÌºí¿¡´Â »ç¿ëÀÚ°¡ ½ÇÇàÇÒ ¼ö ÀÖ´Â ¸í·ÉÀÌ ³ª¿­µË´Ï´Ù. °¢ ¸í·ÉÀº ½½·¡½Ã·Î ºÐ¸®µË´Ï´Ù.
[3] ÀÌ ÇÁ·Î½ÃÀú´Â ÀÚµ¿À¸·Î ¼Ò°³µË´Ï´Ù.
[4] ±âÈ£ À̸§ PROMPT¿¡´Â ÇÁ·Î½ÃÀúÀÇ ·¹ÀÌºí °ªÀÌ ÁöÁ¤µË´Ï´Ù. ÇÁ·Î½ÃÀú°¡ óÀ½ È£ÃâµÉ ¶§ ÀÌ ±âÈ£´Â °ª INIT¸¦ °®½À´Ï´Ù. HELP ¸í·É ÅؽºÆ®´Â ·¹À̺í PROMPT¸¦ ÁöÁ¤ÇÏ´Â GOTO ¸í·ÉÀ¸·Î Á¾·áµË´Ï´Ù. ÀÌ ÅؽºÆ®°¡ óÀ½À¸·Î Ç¥½ÃµÇ¸é GOTO ¸í·ÉÀÌ ·¹À̺í HELP¿¡¼­ ºÐ±âµË´Ï´Ù. ±×·¯¸é »ç¿ëÀÚ°¡ ÀÔ·ÂÇÒ ¼ö ÀÖ´Â ¸í·ÉÀ» ¼³¸íÇÏ´Â HELP ¸Þ½ÃÁö°¡ Ç¥½ÃµË´Ï´Ù. ±×·± ´ÙÀ½ ÇÁ·Î½ÃÀú°¡ ·¹À̺í INIT¿¡¼­ ´Ù½Ã ºÐ±âµÇ¾î PROMPT °ªÀÌ GET_COMMAND¡±·Î º¯°æµË´Ï´Ù. ¸¶Áö¸·À¸·Î ÇÁ·Î½ÃÀú°¡ ·¹À̺í FILE¿¡¼­ ºÐ±âµÇ¾î ÆÄÀÏ À̸§À» °¡Á®¿É´Ï´Ù. µû¶ó¼­, µµ¿ò¸» ÅؽºÆ®°¡ Ç¥½ÃµÇ¸é ÇÁ·Î½ÃÀú°¡ ·¹À̺í GET_COMMAND¿¡¼­ ºÐ±âµÇ¾î ´ÙÀ½ ¸í·ÉÀ» °¡Á®¿É´Ï´Ù.
[5] Ctrl/Y Á¶°Ç µ¿ÀÛÀº °æ°í Á¶°Ç µ¿ÀÛó·³ ·¹À̺í GET_COMMAND·Î º¹±ÍÇϵµ·Ï ¼³Á¤µË´Ï´Ù. ÇÁ·Î½ÃÀú´Â ¸í·ÉÀ» ¹¯´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÏ°í ¾Æ¹«°Íµµ ÀÔ·ÂÇÏÁö ¾Ê´õ¶óµµ ÇÁ·ÒÇÁÆ®¸¦ °è¼ÓÇؼ­ Ç¥½ÃÇÕ´Ï´Ù. ¼¼¼ÇÀ» Á¾·áÇÏ°í ´ëÈ­Çü ¸í·É ¼öÁØÀ¸·Î º¹±ÍÇÏ·Á¸é ¸í·É DONEÀ» ÀÔ·ÂÇÕ´Ï´Ù.
[6] ÀÌ ÇÁ·Î½ÃÀú´Â F$LOCATE ¹× F$LENGTH ·º½ÃÄ® ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ¸í·ÉÀÌ ¿É¼Ç ¸ñ·Ï¿¡ Æ÷ÇԵǴÂÁö ¿©ºÎ¸¦ °áÁ¤ÇÕ´Ï´Ù. F$LOCATE ÇÔ¼ö´Â ½½·¡½Ã µÚ¿¡ ÀÖ´Â »ç¿ëÀÚ ÀÔ·Â ¸í·ÉÀ» °Ë»çÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, »ç¿ëÀÚ°¡ EDITÀ» ÀÔ·ÂÇϸé ÇÁ·Î½ÃÀú´Â EDIT/À» °Ë»çÇÕ´Ï´Ù. ¸í·ÉÀÌ ¿É¼Ç ¸ñ·Ï¿¡ Æ÷ÇÔµÇÁö ¾ÊÀ» °æ¿ì ÇÁ·Î½ÃÀú°¡ ·¹À̺í INVALID_COMMAND¿¡¼­ ºÐ±âµË´Ï´Ù. ¸í·ÉÀÌ À¯È¿Çϸé ÇÁ·Î½ÃÀú°¡ ÇØ´ç ·¹ÀÌºí¿¡¼­ ºÐ±âµË´Ï´Ù.
[7] ·¹À̺í INVALID_COMMAND¿¡¼­ ÇÁ·Î½ÃÀú´Â ¿À·ù ¸Þ½ÃÁö¸¦ ±â·ÏÇÏ°í À¯È¿ÇÑ ¸í·ÉÀ» ³ª¿­ÇÏ´Â µµ¿ò¸» ÅؽºÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù.
[8] µµ¿ò¸» ÅؽºÆ®¿¡´Â À¯È¿ÇÑ ¸í·ÉÀÌ ³ª¿­µË´Ï´Ù. ÀÌ ÅؽºÆ®´Â óÀ½ºÎÅÍ Ç¥½ÃµÇ¸ç, »ç¿ëÀÚ°¡ HELP ¸í·É ¶Ç´Â À¯È¿ÇÏÁö ¾ÊÀº ¸í·ÉÀ» ÀÔ·ÂÇÒ ¶§¸¶´Ù Ç¥½ÃµË´Ï´Ù.
[9] HELP ÅؽºÆ®ÀÇ ¸¶Áö¸· ºÎºÐ¿¡¼­ GOTO ¸í·ÉÀº ±âÈ£ À̸§ PROMPT¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ ÇÁ·Î½ÃÀú°¡ óÀ½ È£ÃâµÉ ¶§ ±âÈ£´Â °ª INIT¸¦ °¡Áö°í, ±× ÀÌÈÄ¿¡´Â °ª GET_COMMAND¸¦ °¡Áý´Ï´Ù.
[10] ¸ñ·Ï¿¡ ÀÖ´Â °¢ À¯È¿ ¸í·ÉÀº ¿É¼Ç Å×ÀÌºí¿¡ ÇØ´ç ¿£Æ®¸®°¡ ÀÖ°í ¸í·É ÇÁ·Î½ÃÀú¿¡ ÇØ´ç ·¹À̺íÀÌ ÀÖ½À´Ï´Ù. Å͹̳ο¡¼­ ÀÔ·ÂÀ» Àд ¸í·É(¿¹: EDIT)ÀÇ °æ¿ì ÇÁ·Î½ÃÀú´Â ÀÔ·Â ½ºÆ®¸²À» SYS$COMMAND·Î Á¤ÀÇÇÏ´Â DEFINE ¸í·ÉÀ» Æ÷ÇÔÇÕ´Ï´Ù.
[11] ·¹À̺í BADFILE¿¡¼­ ÇÁ·Î½ÃÀú´Â ÆÄÀÏÀÌ ÇöÀç µð·ºÅ丮¿¡ ÀÖ¾î¾ß ÇÔÀ» ³ªÅ¸³»´Â ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù. ±×·± ´ÙÀ½ ´Ù¸¥ ÆÄÀÏ À̸§À» ¹¯´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù.
[12] ÆÄÀÏ À̸§À» ÀÔ·ÂÇϸé ÇÁ·Î½ÃÀú´Â ÇöÀç ±âº» µð·ºÅ丮¿Í ´Ù¸¥ µð·ºÅ丮¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ÂÁö È®ÀÎÇÕ´Ï´Ù. ±×·± ´ÙÀ½ ÇÁ·Î½ÃÀú´Â F$PARSE ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ÆÄÀÏ À̸§À» ÃßÃâÇÕ´Ï´Ù. °¢ ¸í·ÉÀº ÇØ´ç ±âº» ÆÄÀÏ Çü½ÄÀ» Á¦°øÇÕ´Ï´Ù. ÆÄÀÏÀ» ó¸®ÇÒ ¸í·ÉÀ» °¡Á®¿Ã ¼ö ÀÖµµ·Ï ÇÁ·Î½ÃÀú°¡ ·¹À̺í GET_COMMAND¿¡¼­ ´Ù½Ã ºÐ±âµË´Ï´Ù.
FORTUSER.COM ¸í·É ÇÁ·Î½ÃÀú º¸±â ½ÇÇà
´ÙÀ½ º¸±â¿¡¼­´Â ÀÌ ¸í·É ÇÁ·Î½ÃÀú¸¦ Àü¿ë ¸í·É ÇÁ·Î½ÃÀú·Î »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù.
Username:CLASS30
Password:
OpenVMS Version 7.1

OpenVMS FORTRAN Command Interpreter
Enter name of file with which you would like to work.
The commands you can enter are:
FILE Name of FORTRAN program in your current
default directory. Subsequent commands
process this file.
EDIT Edit the program. COMPILE
Compile the program with VAX FORTRAN.
LINK Link the program to produce an executable image.
RUN Run the program's executable image.
EXECUTE Same function as COMPILE, LINK and RUN.
DEBUG Run the program under control of the debugger.
PRINT Queue the most recent listing file for printing.
DONE Return to interactive command level.
HELP Print this help message.

Enter Ctrl/Y to restart this session
File name: AVERAGE
Command: COMPILE
Command: LINK
Command: RUN
Command: FILE
File name: READFILE
Command: EDIT
ÀÌ º¸±â ½ÇÇà¿¡¼­´Â À̸§ÀÌ CLASS30ÀÎ »ç¿ëÀÚ°¡ FORTUSER ¸í·É ÇÁ·Î½ÃÀú¿¡ ÀÇÇØ Á¦¾îµÇ´Â °èÁ¤¿¡ ·Î±×ÀÎÇÏ´Â ¼¼¼ÇÀ» º¸¿© ÁÝ´Ï´Ù. FORTUSER ¸í·É ÇÁ·Î½ÃÀú´Â »ç¿ëÀÚ°¡ ½ÇÇàÇÒ ¼ö ÀÖ´Â ¸í·É°ú ¼¼¼ÇÀ» ´Ù½Ã ½ÃÀÛÇϱâ À§ÇÑ ¸í·ÉÀ» Ç¥½ÃÇÕ´Ï´Ù. »ç¿ëÀÚ°¡ ÆÄÀÏ AVERAGE¸¦ ÁöÁ¤ÇÏ°í, ÇØ´ç ÆÄÀÏÀ» ÄÄÆÄÀÏ, ¸µÅ© ¹× ½ÇÇàÇÕ´Ï´Ù. ±×·± ´ÙÀ½ »ç¿ëÀÚ´Â FILE ¸í·ÉÀ» ÀÔ·ÂÇÏ¿© ´Ù¸¥ ÆÄÀÏ ÀÛ¾÷À» ½ÃÀÛÇÕ´Ï´Ù.
LISTER.COM ¸í·É ÇÁ·Î½ÃÀú
ÀÔ·Â µ¥ÀÌÅ͸¦ ¹¯´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÏ°í, ¿­¿¡ ÀÖ´Â µ¥ÀÌÅ͸¦ ¼­½ÄÈ­ÇÑ ´ÙÀ½ Ãâ·Â ÆÄÀÏ·Î Á¤·ÄÇÕ´Ï´Ù. ÀÌ ÇÁ·Î½ÃÀú¿¡¼­´Â READ ¹× WRITE ¸í·É°ú ÇÒ´ç¹®ÀÇ ¹®ÀÚ ÇÏÀ§ ¹®ÀÚ¿­ ¿À¹ö·¹ÀÌ ¼­½ÄÀ» º¸¿© ÁÝ´Ï´Ù.
º¸±â: LISTER.COM
$ ! Procedure to accumulate programmer names and document file names.
$ ! After all programmer names and file names are entered, they are
$ ! sorted in alphabetic order by programmer name and printed on
$ ! the system printer.
$ !
$ SAVE_VERIFY_IMAGE = F$ENVIRONMENT("VERIFY_IMAGE") [1]
$ SAVE_VERIFY_PROCEDURE = F$VERIFY(0)
$ !
$ OPEN/WRITE OUTFILE DATA.TMP ! Create output file [2]
$ !
$ ! Loop to obtain programmers' last names and file names,
$ ! and write this data to DATA.TMP.
$ !
$ LOOP: [3]
$ INQUIRE NAME "Programmer (press Return to quit)"
$ IF NAME .EQS. "" THEN GOTO FINISHED
$ INQUIRE FILE "Document file name"
$ RECORD[0,20]:='NAME' [4]
$ RECORD[21,20]:='FILE'
$ WRITE OUTFILE RECORD
$ GOTO LOOP
$ FINISHED:
$ CLOSE OUTFILE
$ !
$ DEFINE/USER_MODE SYS$OUTPUT: NL: ! Suppress sort output $ SORT/KEY=(POSITION:1,SIZE=20) DATA.TMP DOC.SRT [5]
$ !
$ OPEN/WRITE OUTFILE DOCUMENT.DAT [6]
$ WRITE OUTFILE "Programmer Files as of ",F$TIME()
$ WRITE OUTFILE ""
$ RECORD[0,20]:="Programmer Name"
$ RECORD[21,20]:="File Name"
$ WRITE OUTFILE RECORD
$ WRITE OUTFILE ""
$ !
$ CLOSE OUTFILE [7]
$ APPEND DOC.SRT DOCUMENT.DAT
$ PRINT DOCUMENT.DAT

$ !
$ INQUIRE CLEAN_UP "Delete temporary files [Y,N]" [8]
$ IF CLEAN_UP THEN DELETE DATA.TMP;*,DOC.SRT;*
$ SAVE_VERIFY_PROCEDURE = F$VERIFY(SAVE_VERIFY_PROCEDURE,SAVE_VERIFY_IMAGE) $ EXIT
LISTER.COM ¸í·É ÇÁ·Î½ÃÀú ¼³¸í
[1] LISTER.COMÀº ÇöÀç È®ÀÎ ¼³Á¤À» ÀúÀåÇÏ°í È®ÀÎ ±â´ÉÀ» ºñÈ°¼ºÈ­ÇÕ´Ï´Ù.
[2] OPEN ¸í·ÉÀº ±â·ÏÇÒ Àӽà ÆÄÀÏÀ» ÀÛ¼ºÇÕ´Ï´Ù.
[3] INQUIRE ¸í·ÉÀº ÇÁ·Î±×·¡¸Ó À̸§°ú ÆÄÀÏ À̸§À» ¹¯´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù. Return Å°¸¦ ´­·¯ INQUIRE ¸í·É ÇÁ·ÒÇÁÆ®¿¡ ´ëÇÑ ÀÀ´äÀ¸·Î null ÇàÀ» ÀÔ·ÂÇϸé ÇÁ·Î½ÃÀú´Â ´õ ÀÌ»óÀÇ µ¥ÀÌÅÍ°¡ ÀԷµÇÁö ¾Ê´Â °ÍÀ¸·Î °£ÁÖÇÏ°í ·¹À̺í FINISHED¿¡¼­ ºÐ±âµË´Ï´Ù.
[4] ±âÈ£ NAME ¹× FILE¿¡ °ªÀ» ÇÒ´çÇÑ ÈÄ ÇÁ·Î½ÃÀú´Â ÇÒ´ç¹®ÀÇ ¹®ÀÚ¿­ ¿À¹ö·¹ÀÌ ¼­½ÄÀ» »ç¿ëÇÏ¿© ±âÈ£ RECORD¿¡ ´ëÇÑ °ªÀ» ±¸¼ºÇÕ´Ï´Ù. RECORDÀÇ 1¿­ºÎÅÍ 21¿­±îÁö¿¡ NAMEÀÇ ÇöÀç °ªÀÌ ±â·ÏµË´Ï´Ù. ¸í·É ÀÎÅÍÇÁ¸®ÅÍ´Â °ø¹éÀ» »ç¿ëÇÏ¿© NAME °ªÀ» ÆеùÇÏ¿© ÁöÁ¤µÈ 20ÀÚ ±æÀ̸¦ ä¿ó´Ï´Ù.
¸¶Âù°¡Áö·Î RECORDÀÇ ´ÙÀ½ 20¿­¿¡ FILE °ªÀÌ Ã¤¿öÁý´Ï´Ù. ±×·± ´ÙÀ½ RECORD °ªÀÌ Ãâ·Â ÆÄÀÏ¿¡ ±â·ÏµË´Ï´Ù.
[5] ÆÄÀÏÀÌ ´ÝÈù ´ÙÀ½ ÇÁ·Î½ÃÀú´Â Ãâ·Â ÆÄÀÏ DATA.TMP¸¦ Á¤·ÄÇÕ´Ï´Ù. DEFINE ¸í·ÉÀº null ÆÄÀÏ NL¿¡ SORT ¸í·É Ãâ·ÂÀ» Áö½ÃÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ´ÙÀ½°ú °°Àº Åë°è°¡ Å͹̳ο¡ Ç¥½ÃµË´Ï´Ù.
óÀ½ 20¿­¿¡ ´ëÇØ ÇÁ·Î±×·¡¸Ó À̸§ ¼øÀ¸·Î Á¤·ÄÀÌ ¼öÇàµË´Ï´Ù.
Á¤·ÄµÈ Ãâ·Â ÆÄÀÏÀÇ À̸§Àº DOC.SRTÀÔ´Ï´Ù.
[6] ÀÌ ÇÁ·Î½ÃÀú´Â OPEN ¸í·ÉÀ» »ç¿ëÇÏ¿© ÃÖÁ¾ Ãâ·Â ÆÄÀÏ DOCUMENT.DAT¸¦ ÀÛ¼ºÇÕ´Ï´Ù. ÆÄÀÏ¿¡ ±â·ÏµÈ ù° ÇàÀº ¸Ó¸®±Û ÇàÀ¸·Î ÇØ´ç ¿­ÀÇ ¸Ó¸®±Û, ³¯Â¥¿Í ½Ã°£, Á¦¸ñ µîÀÌ Á¦°øµË´Ï´Ù.
[7] ÇÁ·Î½ÃÀú´Â ÆÄÀÏ DOCUMENT.DAT¸¦ ´Ý°í ÇØ´ç ÆÄÀÏ¿¡ Á¤·ÄµÈ Ãâ·Â ÆÄÀÏ DOC.SRT¸¦ ÷ºÎÇÕ´Ï´Ù. ±×·± ´ÙÀ½ Ãâ·Â ÆÄÀÏÀ» ½Ã½ºÅÛ ÇÁ¸°ÅÍÀÇ ´ë±â¿­¿¡ µî·ÏÇÕ´Ï´Ù.
[8] ÇÁ·Î½ÃÀú´Â Áß°£ ÆÄÀÏÀ» »èÁ¦ÇÒÁö ¿©ºÎ¸¦ °áÁ¤Ç϶ó´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù. INQUIRE ¸í·É ÇÁ·ÒÇÁÆ®¿¡ Âü¿¡ ÇØ´çÇÏ´Â ÀÀ´ä(T, t, Y, y)À» ÀÔ·ÂÇϸé ÆÄÀÏ DATA.TMP¿Í DOC.SRT°¡ »èÁ¦µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ÇØ´ç ÆÄÀÏÀÌ À¯ÁöµË´Ï´Ù.
LISTER.COM ¸í·É ÇÁ·Î½ÃÀú º¸±â ½ÇÇà
$ @LISTER
Programmer:WATERS
Document file name:CRYSTAL.CAV
Programmer:JENKINS
Document file name:MARIGOLD.DAT
Programmer:MASON
Document file name:SYSTEM.SRC
Programmer:ANDERSON
Document file name:JUNK.J
Programmer:Return
Delete temporary files [Y,N]:y
ÀÌ ÇÁ·Î½ÃÀú ½ÇÇàÀÇ °á°ú Ãâ·Â ÆÄÀÏ¿¡´Â ´ÙÀ½ÀÌ Æ÷ÇԵ˴ϴÙ.
Programmer Files as of 31-DEC-1999 16:18:58.79

Programmer Name File Name

ANDERSON JUNK.J
JENKINS MARIGOLD.DAT
MASON SYSTEM.SRC
WATERS CRYSTAL.CAV
CALC.COM ¸í·É ÇÁ·Î½ÃÀú
»ê¼ú °è»êÀ» ¼öÇàÇÏ°í °á°ú °ªÀ» 16Áø¼ö ¹× 10Áø¼ö °ªÀ¸·Î º¯È¯ÇÕ´Ï´Ù.
º¸±â: CALC.COM
$ ! Procedure to calculate expressions. If you enter an
$ ! assignment statement, then CALC.COM evaluates the expression
$ ! and assigns the result to the symbol you specify. In the next
$ ! iteration, you can use either your symbol or the symbol Q to
$ ! represent the current result.
$ !
$ ! If you enter an expression, then CALC.COM evaluates the
$ ! expression and assigns the result to the symbol Q. In
$ ! the next iteration, you can use the symbol Q to represent
$ ! the current result.
$ !
$ SAVE_VERIFY_IMAGE = F$ENVIRONMENT("VERIFY_IMAGE")
$ SAVE_VERIFY_PROCEDURE = F$VERIFY(0)
$ START:
$ ON WARNING THEN GOTO START [1]
$ INQUIRE STRING "Calc" [2]
$ IF STRING .EQS. "" THEN GOTO CLEAN_UP
$ IF F$LOCATE("=",STRING) .EQ. F$LENGTH(STRING) THEN GOTO EXPRESSION
$ !
$ ! Execute if string is in the form symbol = expression
$ STATEMENT: [3]
$ 'STRING' ! Execute assignment statements
$ SYMBOL = F$EXTRACT(0,F$LOCATE("=",STRING)-1,STRING) ! get symbol name
$ Q = 'SYMBOL' ! Set up q for future iterations
$ LINE = F$FAO("Decimal = !SL Hex = !-!XL Octal = !-!OL",Q)
$ WRITE SYS$OUTPUT LINE
$ GOTO START
$ !
$ !
$ ! Execute if string is an expression
$ EXPRESSION: [4]
$ Q = F$INTEGER('STRING') ! Can use Q in next iteration
$ LINE = F$FAO("Decimal = !SL Hex = !-!XL Octal = !-!OL",Q)
$ WRITE SYS$OUTPUT LINE
$ GOTO START
$ !
$ CLEAN_UP:
$ SAVE_VERIFY_PROCEDURE = F$VERIFY(SAVE_VERIFY_PROCEDURE,SAVE_VERIFY_IMAGE)
$ EXIT
CALC.COM ¸í·É ÇÁ·Î½ÃÀú Âü°í
[1] ÀÌ ÇÁ·Î½ÃÀú´Â ÇÁ·Î½ÃÀú¸¦ ´Ù½Ã ½ÃÀÛÇÏ´Â ¿À·ù ó¸® Á¶°ÇÀ» ¼³Á¤ÇÕ´Ï´Ù. ½É°¢µµ°¡ ³ôÀº ¿À·ù ¶Ç´Â °æ°í°¡ ¹ß»ýÇϸé ÇÁ·Î½ÃÀú°¡ ½ÃÀÛ ºÎºÐ¿¡¼­ ºÐ±âµÇ¾î ON Á¶°ÇÀ» ÃʱâÈ­ÇÕ´Ï´Ù.
ÀÌ ±â¼úÀº »ç¿ëÀÚ°¡ ½ÄÀ» À߸ø ÀÔ·ÂÇÏ´õ¶óµµ ÇÁ·Î½ÃÀú°¡ Á¾·áµÇÁö ¾Ê°Ô ÇÕ´Ï´Ù.
[2] INQUIRE ¸í·ÉÀº »ê¼ú½ÄÀ» ¹¯´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù. ÇÁ·Î½ÃÀú´Â ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î ½ÄÀ» Àû¿ëÇÕ´Ï´Ù.
name = expression
expression
Return Å°¸¦ ´©¸£¸é ÇÁ·Î½ÃÀú´Â CALC ¼¼¼ÇÀÌ ³¡³­ °ÍÀ¸·Î °£ÁÖÇÏ°í Á¾·áÇÕ´Ï´Ù.
"name = expression" Çü½ÄÀ¸·Î ÀÔ·ÂÇϸé ÇÁ·Î½ÃÀú°¡ ·¹À̺í STATEMENT¿¡¼­ °è¼Ó ½ÇÇàµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ÇÁ·Î½ÃÀú°¡ ·¹À̺í EXPRESSION¿¡¼­ ºÐ±âµË´Ï´Ù.
[3] ÇÁ·Î½ÃÀú´Â ÇÒ´ç¹®À» ½ÇÇàÇÏ°í ½ÄÀÇ °á°ú¸¦ ±âÈ£·Î ÁöÁ¤ÇÕ´Ï´Ù. ±×·± ´ÙÀ½ ±âÈ£ À̸§À» ÃßÃâÇÏ°í ±âÈ£ °ªÀ» Q·Î ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ´ÙÀ½¿¡ ÇÁ·Î½ÃÀú¸¦ ¹Ýº¹ÇÏ´Â µ¿¾È Q ¶Ç´Â ±âÈ£¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·± ´ÙÀ½ °á°ú¸¦ Ç¥½ÃÇÏ°í ·¹À̺í START¿¡¼­ ´Ù½Ã ºÐ±âµË´Ï´Ù.
[4] ÇÁ·Î½ÃÀú´Â ½ÄÀ» Æò°¡ÇÏ°í °á°ú¸¦ ±âÈ£ Q·Î ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ´ÙÀ½¿¡ ÇÁ·Î½ÃÀú¸¦ ¹Ýº¹ÇÏ´Â µ¿¾È Q¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·± ´ÙÀ½ °á°ú¸¦ Ç¥½ÃÇÏ°í ·¹À̺í START¿¡¼­ ´Ù½Ã ºÐ±âµË´Ï´Ù.
CALC.COM ¸í·É ÇÁ·Î½ÃÀú º¸±â ½ÇÇà
$ @CALC
Calc:2 * 30
Decimal = 60 Hex = 0000003C Octal = 00000000074
Calc:Q + 3 Decimal = 63 Hex = 0000003F Octal = 00000000077
Calc:TOTAL = Q + 4 Decimal = 67 Hex = 00000043 Octal = 00000000103
Calc:5 + 7

Decimal = 12 Hex = 0000000C Octal = 00000000014
Calc:
Return
$

ÇÁ·Î½ÃÀú¿¡¼­ °¢ ÇÁ·ÒÇÁÆ® ´ÙÀ½¿¡ »ç¿ëÀÚ´Â »ê¼ú½ÄÀ» ÀÔ·ÂÇÕ´Ï´Ù. ÀÌ ÇÁ·Î½ÃÀú´Â °á°ú¸¦ 10Áø¼ö, 16Áø¼ö ¹× 8Áø¼ö·Î Ç¥½ÃÇÕ´Ï´Ù. µ¥ÀÌÅÍ°¡ ¾ø´Â Çà¿¡¼­ Return Å°¸¦ ´­·¯ null ÇàÀ» ÁöÁ¤Çϸé CALC ¼¼¼ÇÀÌ ³¡³³´Ï´Ù.
BATCH.COM ¸í·É ÇÁ·Î½ÃÀú
¸í·É ¹®ÀÚ¿­, ¸í·É ÇÁ·Î½ÃÀú ¶Ç´Â ¸í·É ¸ñ·ÏÀ» Àû¿ëÇÑ ´ÙÀ½ ÇØ´ç ¸í·ÉÀ» ÀÏ°ý ó¸® ÀÛ¾÷À¸·Î ½ÇÇàÇÕ´Ï´Ù.
º¸±â: BATCH.COM
$ VERIFY_IMAGE = F$ENVIRONMENT("VERIFY_IMAGE")
$ VERIFY_PROCEDURE = F$VERIFY(0)
$!
$! Turn off verification and save current settings.
$! (This comment must appear after you turn verification
$! off; otherwise it will appear in the batch job log file.)
$!
$!
$! If this is being executed as a batch job,
$! (from the SUBMIT section below) go to the EXECUTE_BATCH_JOB section
$! Otherwise, get the information you need to prepare to execute the
$! batch job.
$!
$ IF F$MODE() .EQS. "BATCH" THEN GOTO EXECUTE_BATCH_JOB [1]
$!
$!
$! Prepare to submit a command (or a command procedure) as a batch job.
$! First, determine a mnemonic process name for the batch job. Use the
$! following rules:
$!
$! 1) If the user is executing a single command, then use the verb name.
$! Strip off any qualifiers that were included with the command.
$! 2) If the user is executing a command procedure, then use the file name. $! 3) Otherwise, use BATCH.
$!
$ JOB_NAME = P1 [2]
$ IF JOB_NAME .EQS. "" THEN JOB_NAME = "BATCH"
$ IF F$EXTRACT(0,1,JOB_NAME) .EQS. "@" THEN JOB_NAME = F$EXTRACT(1,999,JOB_NAME)
$ JOB_NAME = F$EXTRACT(0,F$LOCATE("/",JOB_NAME),JOB_NAME)
$ JOB_NAME = F$PARSE(JOB_NAME,,,"NAME","SYNTAX_ONLY")
$ IF JOB_NAME .EQS. "" THEN JOB_NAME = "BATCH"
$!
$!
$! Get the current default device and directory.
$!
$ ORIGDIR = F$ENVIRONMENT("DEFAULT")
$!
$!
$! Concatenate the parameters to form the command string to be executed.
$! If the user did not enter a command string, the symbol COMMAND will have
$! a null value.
$!
$ COMMAND = P1 + " " + P2 + " " + P3 + " " + P4 + " " + - [3]
P5 + " " + P6 + " " + P7 + " " + P8 $!
$!
$! If the user is executing a single command and if both the command and the
$! original directory specification are small enough to be passed as
$! parameters to the SUBMIT command, then submit the batch job now.
$!
$ IF (P1 .NES. "") .AND. (F$LENGTH(COMMAND) .LE. 255) .AND. - [4]
(F$LENGTH(ORIGDIR) .LE. 255) THEN GOTO SUBMIT
$!
$!
$! If the single command to be executed in the batch job is very large, or
$! if you have to prompt for commands to execute in the batch job, then
$! create a temporary command procedure to hold those commands and get the
$! fully expanded name of the command procedure.
$!
$ CREATE_TEMP_FILE:
$ ON CONTROL_Y THEN GOTO CONTROL_Y_HANDLER [5]
$ OPEN/WRITE/ERROR=FILE_OPEN_ERROR TEMPFILE SYS$SCRATCH:'JOB_NAME'.TMP [6]
$ FILESPEC = F$SEARCH("SYS$SCRATCH:" + JOB_NAME + ".TMP")
$!
$! By default, have the batch job continue if it encounters any errors.
$!
$ WRITE TEMPFILE "$ SET NOON"
$!
$! Either write the single large command to the file, or prompt for
$! multiple commands and write them to the file.
$!
$ IF COMMAND .NES. " " THEN GOTO WRITE_LARGE_COMMAND
$
$ LOOP:
$ READ /END_OF_FILE=CLOSE_FILE /PROMPT="Command: " SYS$COMMAND COMMAND
$ IF COMMAND .EQS. "" THEN GOTO CLOSE_FILE
$ WRITE TEMPFILE "$ ",COMMAND
$ GOTO LOOP
$
$ WRITE_LARGE_COMMAND:
$ WRITE TEMPFILE "$ ",COMMAND
$
$!
$! Finish the temporary file by defining a symbol so that you will know
$! the name of the command procedure to delete and then close the file.
$! Define the symbol COMMAND to mean "execute the command procedure
$! you have just created." Then submit the batch job and execute
$! this command procedure in the batch job.
$!
$ CLOSE_FILE: [7]
$ WRITE TEMPFILE "$ BATCH$DELETE_FILESPEC == """,FILESPEC,""""
$ CLOSE TEMPFILE
$ ON CONTROL_Y THEN EXIT
$ COMMAND = "@" + FILESPEC
$!
$!
$! Submit BATCH.COM as a batch job, and pass it two parameters.
$! P1 is the command (or name of the command procedure) to execute.
$! P2 is the directory from which to execute the command.
$!
$ SUBMIT: [8]
$ SUBMIT/NOTIFY/NOPRINT 'F$ENVIRONMENT("PROCEDURE")' /NAME='JOB_NAME' - /PARAMETERS=("''COMMAND'","''ORIGDIR'")
$ GOTO EXIT
$!
$!
$! The user pressed Ctrl/Y while the temporary command procedure was open.
$! Close the command procedure, delete it if it exists, and exit.
$!
$ CONTROL_Y_HANDLER: [9]
$ CLOSE TEMPFILE
$ IF F$TYPE(FILESPEC) .NES. "" THEN DELETE/NOLOG 'FILESPEC'
$ WRITE SYS$OUTPUT "Ctrl/Y caused the command procedure to abort."
$ GOTO EXIT
$!
$!
$! The temporary command procedure could not be created.
$! Notify the user and exit.
$!
$ FILE_OPEN_ERROR: [10]
$ WRITE SYS$OUTPUT "Could not create sys$scratch:",job_name,".tmp"
$ WRITE SYS$OUTPUT "Please correct the situation and try again."
$!
$!
$! Restore the verification states and exit. $!
$ EXIT: [11]
$ VERIFY_PROCEDURE = F$VERIFY(VERIFY_PROCEDURE,VERIFY_IMAGE)
$ EXIT
$!
$!
$! BATCH.COM was invoked as a batch job. P1 contains the command
$! to execute and P2 the default directory specification.
$! Return a status code that indicates the termination status of P1.
$!
$ EXECUTE_BATCH_JOB: [12]
$ SET NOON
$ VERIFY_PROCEDURE = F$VERIFY(VERIFY_PROCEDURE,VERIFY_IMAGE)
$ SET DEFAULT 'P2'
$ 'P1'
$ IF F$TYPE(BATCH$DELETE_FILESPEC) .EQS. "" THEN EXIT $STATUS
$ STATUS = $STATUS
$ DELETE /NOLOG 'BATCH$DELETE_FILESPEC'
$ EXIT STATUS
BATCH.COM ¸í·É ÇÁ·Î½ÃÀú ¼³¸í
[1] ÀÌ IF ¹®Àº BATCH.COMÀÌ ÀÏ°ý ó¸® ¸ðµå¿¡¼­ ½ÇÇà ÁßÀÎÁö ¿©ºÎ¸¦ Å×½ºÆ®ÇÕ´Ï´Ù. BATCH.COMÀ» ´ëÈ­ÇüÀ¸·Î È£ÃâÇÒ °æ¿ì ÀÏ°ý ó¸® ÀÛ¾÷À¸·Î ½ÇÇàÇÒ ¸í·É ÇÁ·Î½ÃÀú ¶Ç´Â ¸í·É ¹®ÀÚ¿­À» ¸Å°³ º¯¼ö·Î Á¦°øÇÕ´Ï´Ù. ¸Å°³ º¯¼ö¸¦ Á¦°øÇÏÁö ¾ÊÀ¸¸é BATCH.COMÀº ¸í·ÉÀ» ¹¯´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÏ°í, ÆÄÀÏ¿¡ ÀÌ ¸í·ÉÀ» ±â·ÏÇÑ ´ÙÀ½ ÀÌ ¸í·É ÇÁ·Î½ÃÀú¸¦ ÀÏ°ý ó¸® ÀÛ¾÷À¸·Î ½ÇÇàÇÕ´Ï´Ù. BATCH.COMÀº ÀÏ°ý ó¸® ÀÛ¾÷¿¡¼­ ½ÇÇàÇÒ ¸í·ÉÀ» ÁغñÇÑ ´ÙÀ½ SUBMIT ¸í·ÉÀ» »ç¿ëÇÏ¿© ÀÏ°ý ó¸® ÀÛ¾÷À¸·Î ½ÇÇàÇÏ°í ÀÌ ÀÛ¾÷¿¡¼­ ¸í·ÉÀ» ½ÇÇàÇÕ´Ï´Ù(¼³¸í 8 ÂüÁ¶). BATCH.COMÀ» ÀÏ°ý ó¸® ÀÛ¾÷À¸·Î È£ÃâÇϸé ÇÁ·Î½ÃÀú°¡ ·¹À̺í EXECUTE_BATCH_JOB¿¡¼­ ºÐ±âµË´Ï´Ù. BATCH.COMÀ» ÀÏ°ý ó¸® ¸ðµå¿¡¼­ ½ÇÇàÇÒ °æ¿ì ½ÇÇàÇÒ ¸í·É ¶Ç´Â ¸í·É ÇÁ·Î½ÃÀú¸¦ P1À¸·Î ÁöÁ¤ÇÏ°í ±âº» µð·ºÅ丮¸¦ P2·Î ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù.
[2] ÀÌ ¸í·ÉÀº ÀÏ°ý ó¸® ÀÛ¾÷À» ½ÇÇà°ú ºñ±³ÇÕ´Ï´Ù. ¸ÕÀú, ÇÁ·Î½ÃÀú´Â ÀÏ°ý ó¸® ÀÛ¾÷¿¡ ´ëÇÑ À̸§À» ±¸¼ºÇÕ´Ï´Ù. ¸í·É ¹®ÀÚ¿­ÀÌ Àü´ÞµÇ¸é BATCH.COMÀº µ¿»ç À̸§À» ÀÛ¾÷ À̸§À¸·Î »ç¿ëÇÕ´Ï´Ù. ¸í·É ÇÁ·Î½ÃÀú°¡ Àü´ÞµÇ¸é BATCH.COMÀº ÆÄÀÏ À̸§À» »ç¿ëÇÕ´Ï´Ù. ÀÔ·ÂÀÌ Àü´ÞµÇÁö ¾ÊÀ¸¸é BATCH.COMÀº ÀÛ¾÷ À̸§À» BATCH·Î ÁöÁ¤ÇÕ´Ï´Ù.
[3] ¸Å°³ º¯¼ö¸¦ ¿¬°áÇÏ¿© ½ÇÇàÇÒ ¸í·É ¹®ÀÚ¿­À» Çü¼ºÇÕ´Ï´Ù. ¸í·É ¹®ÀÚ¿­Àº ±âÈ£ COMMAND·Î ÁöÁ¤µË´Ï´Ù.
[4] SUBMIT ¸í·ÉÀº 255ÀÚ¸¦ ÃÊ°úÇÏ´Â ¸Å°³ º¯¼ö¸¦ Àü´ÞÇÒ ¼ö ¾ø½À´Ï´Ù. µû¶ó¼­, ÀÌ ÇÁ·Î½ÃÀú´Â ¸í·É ¹®ÀÚ¿­°ú µð·ºÅ丮 À̸§ÀÌ 255ÀÚ¸¦ ³ÑÁö ¾Ê´ÂÁö Å×½ºÆ®ÇÏ¿©, ¸í·É ¹®ÀÚ¿­°ú µð·ºÅ丮 À̸§ÀÌ ¸ðµÎ 255ÀÚ¸¦ ³ÑÁö ¾Ê°í »ç¿ëÀÚ°¡ ¸í·É ¹®ÀÚ¿­À» Àü´ÞÇÑ °æ¿ì ·¹À̺í SUBMIT¿¡¼­ ºÐ±âµË´Ï´Ù.
[5] ÀÌ ÇÁ·Î½ÃÀú´Â ÀÌ ¸í·É ÇÁ·Î½ÃÀú ¼½¼ÇÀ» ¼öÇàÇÏ´Â µ¿¾È »ç¿ëÀÚ°¡ Ctrl/Y¸¦ ´©¸¦ °æ¿ì Á¤¸® ÀÛ¾÷ÀÌ ¼öÇàµÇµµ·Ï Ctrl/Y 󸮱⸦ ±¸¼ºÇÕ´Ï´Ù.
[6] ÀÌ ÇÁ·Î½ÃÀú´Â ½ÇÇàÇÒ ¸í·ÉÀ» Æ÷ÇÔ½Ãų Àӽà ÆÄÀÏÀ» ÀÛ¼ºÇÕ´Ï´Ù. »ç¿ëÀÚ°¡ ±ä ¸í·É ¹®ÀÚ¿­À» ÀÔ·ÂÇϸé ÇÁ·Î½ÃÀú°¡ WRITE_LARGE_COMMAND¿¡¼­ ºÐ±âµÇ°í Àӽà ÆÄÀÏ¿¡ ÀÌ ¸í·ÉÀ» ±â·ÏÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ» °æ¿ì ÇÁ·Î½ÃÀú´Â ½ÇÇàÇÒ ¸í·ÉÀ» ¹¯´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù. °¢ ¸í·ÉÀº Àӽà ÆÄÀÏ¿¡ ±â·ÏµË´Ï´Ù.
[7] Àӽà ÆÄÀÏÀ» ´Ý±â Àü¿¡ ÆÄÀÏ¿¡ ±âÈ£ ÇÒ´ç¹®À» ±â·ÏÇϽʽÿÀ. ÀÌ ÇÒ´ç¹®Àº Àӽà ÆÄÀÏ¿¡ ´ëÇÑ ÆÄÀÏ À̸§À» ±âÈ£ BATCH$DELETE_FILESPECÀ¸·Î ÁöÁ¤ÇÕ´Ï´Ù. Àӽà ÆÄÀÏÀ» ´ÝÀº ´ÙÀ½ ÇÁ·Î½ÃÀú´Â ±âº» Ctrl/Y 󸮱⸦ ÃʱâÈ­ÇÕ´Ï´Ù. ±×·± ´ÙÀ½ ±âÈ£ COMMAND°¡ ½ÇÇàµÉ ¶§ Àӽà ¸í·É ÆÄÀÏÀ» È£ÃâÇϵµ·Ï ±âÈ£ COMMAND¸¦ Á¤ÀÇÇÕ´Ï´Ù.
[8] ÀÌ ÇÁ·Î½ÃÀú´Â Á¤ÀÇµÈ ÀÛ¾÷ À̸§À» »ç¿ëÇÏ¿© ÀÏ°ý ó¸® ÀÛ¾÷À¸·Î ÀÚµ¿ ½ÇÇàµË´Ï´Ù(¼³¸í 2 ÂüÁ¶). ÀÌ ÇÁ·Î½ÃÀú´Â ½ÇÇàÇÒ ¸í·É ¶Ç´Â ¸í·É ÇÁ·Î½ÃÀú¿Í ¸í·ÉÀ» ½ÇÇàÇÒ µð·ºÅ丮¶ó´Â µÎ ¸Å°³ º¯¼ö¸¦ Àü´ÞÇÕ´Ï´Ù. ±×·± ´ÙÀ½ ·¹À̺í EXIT¿¡¼­ ºÐ±âµË´Ï´Ù (¼³¸í 11 ÂüÁ¶).
[9] ÀÌ ¼½¼Ç¿¡¼­´Â Àӽà ÆÄÀÏÀÌ ÀÛ¼ºµÇ´Â µ¿¾È »ç¿ëÀÚ°¡ Ctrl/Y¸¦ ÀÔ·ÂÇϸé Á¤¸® ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù.
[10] ÀÌ ¼½¼Ç¿¡¼­´Â Àӽà ÆÄÀÏÀ» ÀÛ¼ºÇÒ ¼ö ¾øÀ» °æ¿ì ¿À·ù ¸Þ½ÃÁö¸¦ ±â·ÏÇÕ´Ï´Ù.
[11] ÇÁ·Î½ÃÀú´Â ¿øº» È®ÀÎ ¼³Á¤À» ÃʱâÈ­ÇÑ ´ÙÀ½ Á¾·áµË´Ï´Ù.
[12] BATCH.COMÀÌ ÀÏ°ý ó¸® ¸ðµå¿¡¼­ ½ÇÇàµÉ ¶§ ÀÌ ¸í·ÉÀÌ ½ÇÇàµË´Ï´Ù. ¸ÕÀú, ON ¿À·ù 󸮰¡ ÇØÁ¦µÇ°í »ç¿ëÀÚÀÇ ±âº» È®ÀÎ ¼³Á¤ÀÌ ¼³Á¤µË´Ï´Ù. ±×·± ´ÙÀ½ ±âº»°ªÀÌ P2¿¡¼­ ³ªÅ¸³»´Â µð·ºÅ丮·Î ¼³Á¤µÇ°í P1¿¡¼­ ³ªÅ¸³»´Â ¸í·É ¶Ç´Â ¸í·É ÇÁ·Î½ÃÀú°¡ ½ÇÇàµË´Ï´Ù. Àӽà ÆÄÀÏÀÌ ÀÛ¼ºµÈ °æ¿ì ÀÌ ÆÄÀÏÀº »èÁ¦µË´Ï´Ù. BATCH$DELETE_FILESPECÀ» »èÁ¦Çϱâ Àü¿¡ P1ÀÇ ¿Ï·á »óÅ°¡ ÀúÀåµË´Ï´Ù. ÀÌ ¿Ï·á »óÅ´ EXIT ¸í·É¿¡ ÀÇÇØ ¹ÝȯµË´Ï´Ù.
BATCH.COM ¸í·É ÇÁ·Î½ÃÀú º¸±â ½ÇÇà
$ @BATCH RUN MYPROG
Job RUN (queue SYS$BATCH, entry 1715) started on SYS$BATCH
ÀÌ º¸±â¿¡¼­´Â BATCH.COMÀ» »ç¿ëÇÏ¿© ÀÏ°ý ó¸® ÀÛ¾÷¿¡¼­ ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
COMPILE_FILE.COM ¸í·É ÇÁ·Î½ÃÀú
Pascal ¶Ç´Â FORTRANÀ¸·Î ÀÛ¼ºµÈ ÆÄÀÏÀ» ÄÄÆÄÀÏ, ¸µÅ© ¹× ½ÇÇàÇÕ´Ï´Ù. ÀÌ ÇÁ·Î½ÃÀú´Â ó¸®ÇÒ ÆÄÀÏÀ» ¹¯´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÏ°í ÆÄÀÏ Çü½ÄÀÌ .PASÀÎÁö .FORÀÎÁö¸¦ È®ÀÎÇÕ´Ï´Ù. ÆÄÀÏ Çü½ÄÀÌ .PAS ¶Ç´Â .FORÀÌ ¾Æ´Ï°Å³ª ÇöÀç ±âº» µð·ºÅ丮¿¡ ÆÄÀÏÀÌ ¾øÀ» °æ¿ì ¸í·É ÇÁ·Î½ÃÀú´Â ÇØ´ç ¿À·ù ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÕ´Ï´Ù. ÀÌ ÇÁ·Î½ÃÀú¿¡¼­´Â IF-THEN-ELSE ¾ð¾î ±¸Á¶ÀÇ »ç¿ë ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù.
º¸±â: COMPILE_FILE.COM
$! This command procedure compiles, links, and runs a file written in Pascal
$! or FORTRAN.
$!
$ ON CONTROL_Y THEN EXIT
$!
$ TOP:
$ INQUIRE FILE "File to process"
$ IF F$SEARCH(FILE) .NES. "" [1]
$ THEN
$ FILE_TYPE = F$PARSE(FILE,,,"TYPE") [2] ! determine file type
$ FILE_TYPE = F$EXTRACT(1,F$LENGTH('FILE_TYPE'),FILE_TYPE) ! remove period
$! Remove type from file specification
$ PERIOD_LOC = F$LOCATE(".",FILE)
$ FILE = F$EXTRACT(0,PERIOD_LOC,FILE)
$ ON WARNING THEN GOTO OTHER
$ GOTO 'FILE_TYPE'
$ ELSE [3]
$ WRITE SYS$OUTPUT FILE, "does not exist"
$ ENDIF [4]
$!
$ GOTO END $!
$!
$!
$ FOR: [5]
$ ON ERROR THEN GOTO PRINT
$ FORTRAN/LIST 'FILE'
$ GOTO LINK
$!
$ PAS:
$ ON ERROR THEN GOTO PRINT
$ PASCAL/LIST 'FILE'
$ GOTO LINK
$!
$ OTHER:
$ WRITE SYS$OUTPUT "Can't handle files of type .''FILE_TYPE'"
$ GOTO END
$!
$ LINK: [6]
$ ON ERROR THEN GOTO END
$ WRITE SYS$OUTPUT "Successful compilation ...."
$ LINK 'FILE'
$ DEFINE/USER_MODE SYS$INPUT SYS$COMMAND
$ RUN 'FILE'
$ GOTO CLEANUP
$! $ PRINT: [7]
$ WRITE SYS$OUTPUT "Unsuccessful compilation, printing listing file ...."
$ PRINT 'FILE'
$!
$ CLEANUP:
$ DELETE 'FILE'.OBJ;
$ DELETE 'FILE'.LIS;
$!
$ END:
$ INQUIRE/NOPUNCTUATION ANS "Process another file (Y or N)? "
$ IF ANS THEN GOTO TOP
$ EXIT
COMPILE_FILE.COM ¸í·É ÇÁ·Î½ÃÀú ¼³¸í
[1] IF ¸í·ÉÀº F$SEARCH ·º½ÃÄ® ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© µð·ºÅ丮¸¦ °Ë»çÇÏ°í ÆÄÀÏÀÌ ÀÖ´ÂÁö È®ÀÎÇÕ´Ï´Ù.
[2] THEN ¸í·É ´ÙÀ½ÀÇ ¸í·É ºí·ÏÀº ´ÙÀ½À» ¼öÇàÇÕ´Ï´Ù.
F$LENGTH ·º½ÃÄ® ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ÆÄÀÏ Çü½ÄÀÇ ±æÀÌ °áÁ¤
ÆÄÀÏ Çü½Ä °áÁ¤
ÆÄÀÏ Çü½Ä¿¡¼­ ±â°£ Á¦°Å
ÆÄÀÏ ÁöÁ¤ ¹æ¹ý¿¡¼­ ÆÄÀÏ Çü½ÄÀ» Á¦°ÅÇÏ¿© ÆÄÀÏ À̸§ °áÁ¤
ÆÄÀÏ À̸§¿¡¼­ ±â°£ Á¦°Å
¿À·ù°¡ ¹ß»ýÇÒ °æ¿ì ¼öÇàÇÒ ÀÛ¾÷ Á¤ÀÇ
±âÈ£ FILE_TYPE¿¡ ÀÇÇØ Á¤ÀÇµÈ ·¹ÀÌºí¿¡¼­ ºÐ±â
[3] "File to process:" ÇÁ·ÒÇÁÆ®¿¡ ÀÔ·ÂÇÑ ÆÄÀÏÀÌ µð·ºÅ丮¿¡ ¾øÀ¸¸é ELSE ¸í·É ´ÙÀ½¿¡ ÀÌ ¸í·ÉÀÌ ½ÇÇàµË´Ï´Ù.
[4] ENDIF ¸í·ÉÀº IF-THEN-ELSE ¸í·É ±¸Á¶¸¦ Á¾·áÇÕ´Ï´Ù.
[5] ÇÁ·Î½ÃÀú´Â FORTRAN ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÏ°í LINK ·¹ÀÌºí¿¡¼­ ºÐ±âµË´Ï´Ù. ÄÄÆÄÀÏÇÏ´Â µ¿¾È ¿À·ù°¡ ¹ß»ýÇϸé ÇÁ·Î½ÃÀú°¡ PRINT ·¹ÀÌºí¿¡¼­ ºÐ±âµË´Ï´Ù.
[6] ÀÌ ÇÁ·Î½ÃÀú´Â ¿Ã¹Ù¸£°Ô ÄÄÆÄÀÏµÈ ÇÁ·Î±×·¥À» Ç¥½ÃÇÏ°í, ÇÁ·Î±×·¥À» ¸µÅ© ¹× ½ÇÇàÇÑ ´ÙÀ½ CLEANUP ·¹ÀÌºí¿¡¼­ ºÐ±âµË´Ï´Ù. ¿À·ù°¡ ¹ß»ýÇϸé ÇÁ·Î±×·¥ÀÌ END ·¹ÀÌºí¿¡¼­ ºÐ±âµË´Ï´Ù.
[7] ÇÁ·Î½ÃÀú´Â ±âº» Àμ⠴ë±â¿­¿¡ ÇÁ·Î±×·¥ ¸ñ·Ï ÆÄÀÏÀ» ÀÔ·ÂÇÕ´Ï´Ù.
COMPILE_FILE.COM ¸í·É ÇÁ·Î½ÃÀú º¸±â ½ÇÇà
$ @COMPILE_FILE
File to process: RAND.PAS
Successful compilation
%DELETE-I-FILDEL,WORK:[DESCH]RAND.OBJ;1 deleted (3 blocks)
%DELETE-I-FILDEL,WORK:[DESCH]RAND.LIS;1 deleted (9 blocks)

Process another file (Y or N)?
N Return

TOC PREV NEXT INDEX