home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / c-kermit / ockermit.ini < prev    next >
Text File  |  2020-01-01  |  21KB  |  619 lines

  1. COMMENT - Standard C-Kermit initialization file
  2. ;
  3. ; For C-Kermit Version: 8.0
  4. ;
  5. ; Filename:
  6. ;   .kermrc     (UNIX, OS-9, Aegis)
  7. ;   CKERMIT.INI (OS/2, VMS, OpenVMS, AOS/VS, Atari ST, Commodore Amiga)
  8. ;   ckermit.ini (Stratus VOS)
  9. ;   K95.INI     (Kermit 95 -- but this big version is not used there)
  10. ;   K2.INI      (Kermit/2  -- but ditto)
  11. ;
  12. ; Authors:
  13. ;   Frank da Cruz, Christine M. Gianone, Jeffrey Altman
  14. ;   Columbia University, New York, NY 10025-7799, USA
  15. ;
  16. ; This is the standard and recommended C-Kermit 8.0 initialization file.  To
  17. ; override settings or definitions made in this file, to add new settings or
  18. ; definitions, or to make any other desired customizations, create a separate,
  19. ; personal customization file called:
  20. ;
  21. ;   .mykermrc     (UNIX, OS-9, Aegis, BeBox, Plan 9)
  22. ;   CKERMOD.INI   (OS/2, VMS, OpenVMS, AOS/VS, Atari ST, Commodore Amiga)
  23. ;   ckermod.ini   (VOS)
  24. ;
  25. ; You can also define the customization filename in an environment
  26. ; variable (logical name in VMS), CKERMOD, which takes precedence over
  27. ; the names shown above.
  28. ;
  29. ; WHAT THIS FILE DOES:
  30. ;
  31. ; . Defines your default dialing directory name:
  32. ;     .kdd for UNIX, OS-9 and Aegis; CKERMIT.KDD for other operating systems.
  33. ;        You can override this with the environment variable K_DIAL_DIRECTORY
  34. ; . Defines your default network directory name:
  35. ;     .knd for UNIX, OS-9 and Aegis; CKERMIT.KND for other operating systems.
  36. ;        You can override this with the environment variable K_NET_DIRECTORY
  37. ; . Defines your default services directory name:
  38. ;     .ksd for UNIX, OS-9 and Aegis; CKERMIT.KSD for other operating systems.
  39. ;        You can override this with environment variable K_SERVICE_DIRECTORY.
  40. ; . Defines your customization file name (name given above)
  41. ; . Performs system-dependent setups for UNIX, VMS, OS/2, etc.
  42. ; . Defines VTPRINT macros for use with K95, MS-DOS Kermit, etc.
  43. ; . If you have a services directory, all the macros needed to use it are
  44. ;     defined.  If you don't have a services directory, the macros are not
  45. ;     defined and Kermit starts faster.
  46. ; . Executes your personal customization file, if you have one.
  47. ;   NOTE: Your customization file is NOT executed by Kermit itself; it is
  48. ;   executed by this file.
  49. ;
  50. ; In UNIX, with C-Kermit 7.0 and later, you can store this file with a name
  51. ; other than .kermrc, and it will not be executed automatically, but, if you
  52. ; give this file execute permission, you can execute directly because of the
  53. ; "kerbang line" at the top, whenever you want all of the above actions to
  54. ; occur.  The kerbang line must reflect the actual full path of the Kermit
  55. ; 7.0-or-later executable.
  56. ;
  57. ; C-Kermit 6.0 is documented in the book "Using C-Kermit", 2nd Edition,
  58. ; by Frank da Cruz and Christine M. Gianone, 1997, Digital Press /
  59. ; Butterworth-Heinemann, ISBN 1-55558-164-1.  New features of subsequent
  60. ; versions are documented at the Kermit website:
  61. ; http://www.columbia.edu/kermit/
  62. ;
  63. ; Everything after this point depends on the script programming language.
  64. ; The CHECK command terminates this command file immediately if the script
  65. ; programming language (IF command) is not configured.
  66. ;
  67. set take error on        ; This makes CHECK quit if no script language.
  68. check if            ; Do we have an IF command?  If not, quit now.
  69. set take error off        ; Back to normal.
  70.  
  71. local _sd _servicedir _xp       ; Declare local variables.
  72.  
  73. COMMENT - C-Kermit version 6.0 or later required.
  74. ;
  75.  
  76. asg _xp \v(xprogram)
  77. if not def _xp asg _xp \v(program)
  78. if not equal "\m(_xp)" "C-Kermit" -
  79.   stop 1 \v(cmdfile): This initialization file is only for C-Kermit.
  80. echo Executing \v(cmdfile) for \v(system)...
  81. if < \v(version) 60000 -
  82.   stop 1 \v(cmdfile): C-Kermit 6.0 or later required.
  83.  
  84. forward \v(system)        ; First do system-dependent items...
  85.  
  86. :unknown            ; Should not happen
  87. Stop 1 Error: System type unknown!
  88.  
  89. :Aegis                ; Apollo Aegis and
  90. :UNIX                ; UNIX, all versions
  91. asg _myinit -
  92.   \v(home).mykermrc        ; Customization filename
  93. if remote forward COMMON        ; Skip local-mode items if "-R"
  94. asg _dialdir -
  95.   \v(home).kdd            ; C-Kermit dialing directory
  96. asg _netdir -
  97.   \v(home).knd            ; C-Kermit network directory
  98. asg _servicedir -
  99.   \v(home).ksd            ; C-Kermit services directory
  100. forward COMMON                  ; End of UNIX section
  101.  
  102. :OS9/68K            ; OS-9
  103. asg _myinit -
  104.   \v(home).mykermrc        ; Customization filename
  105. if remote forward COMMON
  106. asg _dialdir -
  107.   \v(home).kdd            ; C-Kermit dialing directory
  108. asg _netdir -
  109.   \v(home).knd            ; C-Kermit network directory
  110. asg _servicedir -
  111.   \v(home).ksd            ; C-Kermit services directory
  112. else set file display crt
  113. forward COMMON            ; End of OS-9 section
  114.  
  115. :VMS                ; VMS and OpenVMS
  116. forward COMMON
  117.  
  118. :OS/2                ; Kermit 95
  119. :WIN32
  120. echo This initialization file is not for use with K95.
  121. forward COMMON                  ; End of OS/2 section
  122.  
  123. :AOS/VS                ; Data General AOS/VS
  124. set window 1            ; Sliding windows don't work
  125. set file char dg-international    ; File character-set
  126. set xfer char latin1        ; Transfer character-set
  127. set file display crt            ; File transfer fisplay
  128. def cli push            ; Escape to CLI
  129. def reset -            ; Macro to reset DG DASHER terminal
  130.  run write [!ascii 236 306 301]
  131. forward COMMON                  ; End of AOS/VS section
  132.  
  133. :Amiga                ; Commodore Amiga
  134. def cls echo \27[H\27[2J    ; CLS command to clear the screen
  135. set file char latin1        ; Use Latin Alphabet 1 for file transfer
  136. set xfer char latin1        ; ...
  137. forward COMMON                  ; End of Amiga section
  138.  
  139. :Atari_ST            ; Atari ST
  140. def cls echo \27H\27J        ; Clear screen a`la VT52
  141. set server display on        ; Show file xfer display in server mode too
  142. set server timeout 15        ; Nonzero required for ^C interruption!
  143. forward COMMON                  ; End of Atari ST section
  144.  
  145. :Macintosh            ; Apple Macintosh
  146. set server display on        ; Show file xfer display in server mode too.
  147. forward COMMON
  148.  
  149. :Stratus_VOS                    ; Stratus VOS
  150. asg _myinit \v(home)ckermod.ini
  151. if remote forward COMMON
  152. asg _dialdir \v(home)ckermit.kdd
  153. asg _netdir \v(home)ckermit.knd
  154. asg _servicedir \v(home)ckermit.ksd
  155. forward COMMON                  ; End of Stratus VOS section
  156.  
  157. :COMMON                ; For all systems
  158.  
  159. ; Define macros that are useful when running C-Kermit in remote mode.
  160. ; These macros serve no purpose on local-mode-only versions such as
  161. ; OS/2, Macintosh, Amiga, and Atari ST Kermit, so we skip defining them
  162. ; for those systems.
  163. ;
  164. if not = 0 \findex(\v(system),WIN32:OS/2:Macintosh:Amiga:Atari_ST) -
  165.   forward files
  166.  
  167. ; VTPRINT macro.  Print a file on your PC's local printer.
  168.  
  169. def VTPRINT echo \27[5i, type \%1, echo \27[4i
  170. ; or if your printer needs a formfeed to force the page out:
  171. ; def VTPRINT  def echo \27[5i, type \%1, echo \12\27[4i
  172.  
  173. ; Macros for host-initiated file transfer using APC:
  174. ;   NOT NEEDED ANY MORE because of autodownload/autoupload.
  175. ;   Remove the following FORWARD command to reinstate these definitions:
  176.  
  177. :FILES
  178.  
  179. ; Get customization and directory file names.  Environment variables take
  180. ; precedence, so you do not have to edit this file to change these filenames.
  181. ;
  182. if def \$(CKERMOD) assign _myinit \$(CKERMOD)
  183. if not def _myinit assign _myinit \v(home)CKERMOD.INI
  184.  
  185. if remote forward CUSTOM ; Skip all this if -R given on command line
  186.  
  187. if def \$(K_NET_DIRECTORY) assign _netdir \$(K_NET_DIRECTORY)
  188. if not def _netdir assign _netdir \v(home)CKERMIT.KND
  189.  
  190. if def \$(K_DIAL_DIRECTORY) assign _dialdir \$(K_DIAL_DIRECTORY)
  191. if not def _dialdir assign _dialdir \v(home)CKERMIT.KDD
  192.  
  193. CHECK DIAL            ; Is there a DIAL command?
  194. xif fail {             ; No.
  195.     echo DIAL disabled
  196.     forward CUSTOM
  197. }
  198.  
  199. CHECK NETWORK
  200. xif success {
  201.     xif exist \m(_netdir) {
  202.     set net directory \m(_netdir)
  203.     echo { Network directory is \m(_netdir) }
  204.     }
  205. }
  206.  
  207. if eq "\v(name)" "telnet" forward CUSTOM
  208.  
  209. xif exist \m(_dialdir) {
  210.     set dial directory \m(_dialdir)
  211.     echo { Dial directory is \m(_dialdir) }
  212. }
  213.  
  214. COMMENT - Services directory
  215.  
  216. if def \$(K_SERVICE_DIRECTORY) assign _servicedir \$(K_SERVICE_DIRECTORY)
  217. if not def _servicedir assign _servicedir \v(home)CKERMIT.KSD
  218.  
  219. ; If no services directory is found skip all the big macro definitions and
  220. ; go straight to the bottom, where we execute the customization file.
  221.  
  222. if not exist \m(_servicedir) forward custom
  223.  
  224. echo { Services directory is \m(_servicedir)}
  225.  
  226. def MAX_SVCS 200               ; Adjust this if you have more entries
  227. define _sd 0                   ; Assume no services directory
  228. open read \m(_servicedir)      ; Try to open services directory file
  229. xif success {
  230.     declare \&d[\m(MAX_SVCS)]  ; It's open, declare directory array
  231.     for \%i 1 \m(MAX_SVCS) 1 { ; Read the lines into the array
  232.     read \&d[\%i]
  233.     if fail break
  234.     }
  235.     close read
  236.     xif > \%i  \m(MAX_SVCS) {
  237.     echo Too many entries in services directory
  238.     echo { Maximum is \m(MAX_SVCS).}
  239.     echo { Change definition of MAX_SVCS in \v(cmdfile) to allow more. }
  240.     echo { Services directory disabled.}
  241.     } else {
  242.         asg \&d[0] \feval(\%i - 1)
  243.         define _sd 1
  244.     }
  245. }
  246.  
  247. xif not \m(_sd) {
  248.     def access echo { Services directory not available.}
  249.     asg list \m(access)
  250. } else {
  251.     def FIND {
  252.     set case off
  253.     for \%i 1 \&d[0] 1 {
  254.         if eq {\%1} {\fsubstr(\&d[\%i],1,\flen(\%1))} break
  255.     }
  256.     if not > \%i \&d[0] return \&d[\%i]
  257.     }
  258.     def LIST {
  259.     xif > \v(argc) 1 {
  260.         do find \%1
  261.         if def \v(return) echo \v(return)
  262.         else echo \%1: Not found
  263.     } else {
  264.         echo \&d[0] items in services directory:
  265.         for \%i 1 \&d[0] 1 { echo \fcont(\&d[\%i]) }
  266.     }
  267.     }
  268.     def SPLIT { asg _word1 \%1, asg _word2 \%2 }
  269.     def DOACCESS {               ; (Used internally by ACCESS macro)
  270.     do \%5 \%6 \%7 \%8 \%9   ; Do the connection macro
  271.     if fail end 1
  272.         split \%3                ; Get words from \%3
  273.     asg \%3 \m(_word1)
  274.     asg \%2 \m(_word2)
  275.     do \%3 \%4 {\%1} \%2     ; Login macro, userid, password, prompt
  276.     }
  277.     def ACCESS {
  278.     if not defined \%1 end 1 access what?        ; Check service
  279.     do find \%1                                  ; Look it up
  280.     if success doaccess {\%2} \v(return)         ; OK, try it
  281.     else end 1 "\%1" not in services directory   ; Not found
  282.     if fail end 1                                ; DOACCESS failed?
  283.     xif eq \v(cmdlevel) 1 {
  284.         echo
  285.         echo ACCESS: Login succeeded - CONNECTing...
  286.             show escape
  287.             output \13
  288.         connect /quietly
  289.         }
  290.     }
  291. }
  292.  
  293. :CONNECTION ; Macros for making connections
  294.  
  295. COMMENT - SERIAL macro.  Arguments:
  296. ; \%1 = device name
  297. ; \%2 = speed
  298. ;
  299. def SERIAL {
  300.     if < \v(argc) 3                         ; All arguments given?
  301.       end 1 Usage: SERIAL device speed      ; No.
  302.     set line \%1                            ; OK, try to SET LINE.
  303.     if failure -                            ; If this failed,
  304.       end 1 Can't open device: \%1          ; print message and quit.
  305.     set speed \%2                           ; Try to set the speed.
  306.     if fail end 1 Unsupported speed: \%2    ; Failed.
  307.     echo Connection successful.             ; Succeeded.
  308. }
  309.  
  310. COMMENT - NET macro.  Arguments:
  311. ; \%1 = network type
  312. ; \%2 = host name or address
  313. ;
  314. def NET {
  315.     if < \v(argc) 3 end 1 Usage: NET network host
  316.     set network type \%1
  317.     if fail end 1 unsupported network: \%1
  318.     set login user                ; Don't send user ID.
  319.     set host \%2
  320.     if fail end 1 Can't reach host: \%2
  321.     echo Connection successful.
  322. }
  323.  
  324. COMMENT - CALL macro.  Arguments:
  325. ;
  326. ; \%1 = modem type
  327. ; \%2 = device name
  328. ; \%3 = speed
  329. ; \%4 = phone number
  330. ;
  331. def CALL {
  332.     if < \v(argc) 5 -         ; All arguments present?
  333.       end 1 Usage: CALL modem device speed number
  334.     xif not equal {\v(modem)} {\%1} { ; Set modem type
  335.         set modem \%1
  336.         if fail end 1 unknown modem type: \%1
  337.     }
  338.     xif not equal {\v(line)} {\%2} { ; Communication device
  339.         set line \%2
  340.         if fail end 1 can't open device: \%2
  341.     }
  342.     xif not equal {\v(speed)} {\%3} { ; Communication speed
  343.         set speed \%3
  344.         if fail end 1 unsupported speed: \%3
  345.     }
  346.     dial \%4                  ; Dial the number
  347.     if fail end 1 Can't place call: \%4
  348.     end 0 Connection successful.
  349. }
  350.  
  351. COMMENT - TCPCALL macro.  Arguments:
  352. ;
  353. ; \%1 = server name:port
  354. ; \%2 = modem type
  355. ; \%3 = phone number
  356. ;
  357. def TCPCALL {
  358.     if < \v(argc) 4 -         ; All arguments present?
  359.       end 1 Usage: TCPCALL server[:port] modem number
  360.     set net type tcp/ip       ; Which network to use
  361.     if fail end 1 unsupported network: tcp/ip
  362.     set host \%1              ; Access server and port
  363.     if fail end 1 can't access server \%1
  364.     set modem \%2             ; Set modem type
  365.     if fail end 1 unknown modem type: \%2
  366.     dial \%3                  ; Dial the number
  367.     if fail end 1 Can't place call: \%3
  368.     end 0 Connection successful.
  369. }
  370.  
  371. COMMENT - SPRINT macro.  Arguments:
  372. ; \%1 = Service name or address
  373. ;
  374. def SPRINT {
  375.     if < \v(argc) 2 end 1 Usage: \%0 service
  376.     set input timeout proceed
  377.     output @D\13
  378.     input 10 TERMINAL=
  379.     if fail end 1 No terminal prompt
  380.     out D1\13
  381.     inp 10 @
  382.     if fail end 1 No atsign prompt
  383.     output c \%1\13
  384.     input 10 CONNECTED
  385.     if fail end 1 Can't access \%1 from SprintNet
  386. }
  387.  
  388. COMMENT - ULOGIN macro.  For logging into systems where user ID is required
  389. ; but there is no password.  Arguments:
  390. ; \%1 = UNIX user ID
  391. ;
  392. define ULOGIN {
  393.     if < \v(argc) 2 end 1 Usage: \%0 userid
  394.     set input timeout proceed     ; Handle timeouts ourselves
  395.     set case on                   ; Case is important in UNIX
  396.     minput 5 login: Username: {User ID:} {User Name:}
  397.     out \%1\13                    ; Send username, carriage return
  398.     end 0
  399. }
  400.  
  401. COMMENT - VMSLOGIN macro.  Arguments:
  402. ; \%1 = VMS user ID
  403. ; \%2 = Password.  If password not supplied, it is prompted for.
  404. ; \%3 = System prompt.  If omitted a default is supplied.
  405. ;
  406. define VMSLOGIN {
  407.     if < \v(argc) 2 end 1 Usage: \%0 userid [ password [ prompt ] ]
  408.     while not defined \%2 {
  409.         askq \%2 { \%1's password: }
  410.     }
  411.     set parity none               ; Set communication parameters
  412.     set duplex full
  413.     set handshake none
  414.     set input timeout proceed     ; Handle timeouts ourselves
  415.     in 5 Username:                ; Is prompt already there?
  416.     xif fail {                    ; No.
  417.         for \%i 1 3 1 {           ; Try 3 times to get it.
  418.             out \13               ; Send carriage return
  419.             in 5 Username:        ; Look for prompt
  420.             if success break      ; Success, go log in
  421.         }
  422.         if > \%i 3 end 1 No Username prompt
  423.     }
  424.     out \%1\13                    ; Send username, carriage return
  425.     inp 5 Password:               ; Wait 5 sec for this prompt
  426.     if fail end 1 No password prompt
  427.     pause                         ; Wait a sec
  428.     out \%2\13                    ; Send password
  429.     xif not emulation {           ; No emulator built in?
  430.         set input echo off        ; Protect terminal from this
  431.         minput 10 {\27Z} {\27[c} {\27[0c} ; Get terminal ID query
  432.         xif success {                     ; Got one
  433.             output \27[\?1c               ; Send VT100 terminal ID
  434.             in 2 \27[6n                   ; Screen dimension query?
  435.             if succ out \27[\v(rows);\v(cols)R ; Send dimensions
  436.         }
  437.         set input echo on         ; Echo input again
  438.     }
  439.     if not def \%3 -              ; If we were not given a prompt
  440.       asg \%3 {\v(prompt)}        ; use the SET LOGIN PROMPT value
  441.     if not def \%3 -              ; If we still don't have a prompt
  442.       asg \%3 {\13$\32}           ; use this one as the default
  443.     reinp 0 \%3                   ; Did we INPUT the prompt already?
  444.     if fail inp 60 \%3            ; No, look now.
  445.     if fail end 1
  446. }
  447.  
  448. COMMENT - UNIXLOGIN macro.  Arguments:
  449. ; \%1 = UNIX user ID
  450. ; \%2 = Password.  If password not supplied, it is prompted for.
  451. ; \%3 = System prompt.  If omitted a default is supplied.
  452. ;
  453. define UNIXLOGIN {
  454.     local \%m \%i
  455.     if < \v(argc) 2 -
  456.       end 1 Usage: \%0 userid [ password [ prompt ] ]
  457.     while not defined \%2 {
  458.         askq \%2 { \%1's password: }
  459.     }
  460.     set input echo on
  461.     set parity none               ; Set communication parameters.
  462.     set duplex full
  463.     set handshake none
  464.     set input timeout proceed     ; Handle timeouts ourselves
  465.     set case on                   ; Case is important in UNIX
  466.     def \%m 10                    ; Waiting time for INPUT
  467.     for \%i 1 5 1 {
  468.         minput \%m login: {ssword:} {Password for \%1:}
  469.     if success break
  470.     output \B\13
  471.         \%m ::= 6-\%1
  472.     }
  473.     if > \%i 5 end 1 {No response from host}
  474.     xif = \v(minput) 1 {      ; Have username prompt
  475.     output \%1\13          ; Send username
  476.         minput 5 {ssword:} {ssword for \%1:} ; Wait for password prompt
  477.     if fail end 1 {No password prompt}
  478.     }
  479.     pause                         ; Wait a sec
  480.     out \%2\13                    ; Send password
  481.     if not def \%3 -              ; If we were not given a prompt
  482.       asg \%3 {\v(prompt)}        ; use the SET LOGIN PROMPT value
  483.     if not def \%3 -              ; If we still don't have a prompt
  484.       asg \%3 {\10$ }             ; use this one as the default
  485.     reinp 0 \%3                   ; Did we INPUT the prompt already?
  486.     if fail inp 60 \%3            ; No, look now.
  487.     if fail end 1
  488. }
  489.  
  490. COMMENT - VMLINELOGIN macro.  Arguments:
  491. ; \%1 = User ID
  492. ; \%2 = Password
  493. ;
  494. define VMLINELOGIN {
  495.     if < \v(argc) 2 -
  496.       end 1 Usage: \%0 userid [ password ]
  497.     while not defined \%2 {
  498.         askq \%2 { \%1's password: }
  499.     }
  500.     set parity mark               ; Set communication parameters
  501.     set flow none
  502.     set handshake xon
  503.     set duplex half
  504.     set input timeout quit        ; Don't bother with IF FAILURE
  505.     input 10 BREAK KEY            ; Look for BREAK KEY prompt
  506.     pause 1                       ; Wait a second
  507.     output \B                     ; Send BREAK
  508.     input 10 .\17, output logon \%1\13    ; Now log in
  509.     input 10 .\17, output \%2\13          ; Send password
  510.     input 10 .\17, output \13             ; Send carriage return
  511.     input 10 .\17, output \13             ; Send another one
  512.     end 0
  513. }
  514.  
  515. COMMENT - VMFULLOGIN macro.  Arguments:
  516. ; \%1 = User ID
  517. ; \%2 = Password
  518. ;
  519. define VMFULLOGIN {
  520.     if < \v(argc) 2 -
  521.       end 1 Usage: \%0 userid [ password ]
  522.     while not defined \%2 {
  523.         askq \%2 { \%1's password: }
  524.     }
  525.     set input timeout quit      ; Quit if INPUT fails
  526.     set parity even             ; Set communication parameters
  527.     set duplex full
  528.     set handshake none
  529.     set flow xon/xoff
  530.     out \13                     ; Send carriage return
  531.     inp 5 TERMINAL TYPE:        ; Get terminal-type prompt
  532.     out vt-100\13               ; Just send "vt-100"
  533.     inp 20 RUNNING              ; Get RUNNING message
  534.     pau 1                       ; Wait one second
  535.     out \%1\9\%2\13             ; Send user ID, tab, password
  536.     out \13\13                  ; Two more carriage returns
  537.     end 0
  538. }
  539.  
  540. COMMENT - CISLOGIN macro.  Arguments:
  541. ; \%1 = CompuServe User ID
  542. ; \%2 = Password
  543. ; \%3 = Prompt
  544. ;
  545. define CISLOGIN {
  546.     if < \v(argc) 2 -
  547.       end 1 Usage: \%0 userid [ password [ prompt ] ]
  548.     while not defined \%2 {
  549.         askq \%2 { \%1's password: }
  550.     }
  551.     set terminal bytesize 7     ; No 8-bit characters
  552.     set input timeout quit      ; Skip the IF FAILURE's
  553.     output \13                  ; Send initial carriage return
  554.     input 5 Host Name:          ; Look for Host Name prompt
  555.     output cis\13               ; Send "cis" and carriage return
  556.     input 5 User ID:            ; Look for User ID prompt
  557.     output \%1\13               ; Send ID and carriage return
  558.     input Password:             ; Look for Password prompt
  559.     output \%2\13               ; Send password and CR
  560.     if not def \%3 asg \%3 \v(prompt)
  561.     if not def \%3 asg \%3 {CompuServe Information Service}
  562.     input 30 \%3
  563.     end 0
  564. }
  565.  
  566. COMMENT - DOWLOGIN macro.  Arguments:
  567. ; \%1 = Dow Jones Password
  568. ;
  569. define DOWLOGIN {
  570.     while not defined \%1 {              ; Get password
  571.         askq \%1 { Dow Jones password: }
  572.     }
  573.     set input timeout proceed
  574.     input 20 SERVICE PLEASE\?\?\?\?      ; Look for Dow prompt
  575.     if fail end 1 No service prompt
  576.     out djnr\13                          ; Select DJNR
  577.     input 10 @@@@@@@@                        ; Get password prompt
  578.     if fail end 1 No password prompt
  579.     pause 1                              ; Wait a second, then...
  580.     output \%1\13                        ; send password and CR
  581.     input 30 ENTER QUERY                 ; Get DJNR query prompt
  582.     if fail end 1 No main query prompt
  583.     pause 1
  584. }
  585.  
  586. COMMENT - DJNRSPRINT macro: Log in to Dow Jones via SprintNet.
  587. ;
  588. def djnrsprint sprint dow, if success dowlogin
  589.  
  590. COMMENT - NOLOGIN macro.  Does nothing.  Use when login not required.
  591. ;
  592. def nologin comment
  593.  
  594. :CUSTOM ; Customization file
  595.  
  596. ; In VMS and OpenVMS, allow for system-wide site customizations
  597.  
  598. xif equal "\v(system)" "VMS" {
  599.     xif exist CKERMIT_INI:CKERMIT.SYS {
  600.     echo Executing CKERMIT_INI:CKERMIT.SYS
  601.     take CKERMIT_INI:CKERMIT.SYS
  602.     }
  603. }
  604.  
  605. ; Execute user's personal customization file
  606.  
  607. xif exist \m(_myinit)  {        ; If it exists,
  608.     echo Executing \m(_myinit)...    ; print message,
  609.     take \m(_myinit)            ; and TAKE the file.
  610. }
  611.  
  612. ; Finish up with traditional greeting.
  613.  
  614. if < \v(ntime) 43200 echo Good Morning!
  615.   else if < \v(ntime) 61200 echo Good Afternoon!
  616.   else echo Good Evening.
  617.  
  618. End ; of C-Kermit 8.0 initialization file.
  619.