home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 3 Comm / 03-Comm.zip / ck190b.zip / CKERMIT.INI < prev    next >
Text File  |  1994-08-22  |  22KB  |  668 lines

  1. COMMENT - Standard C-Kermit initialization file
  2. ;
  3. ; For C-Kermit Version: 5A(190)
  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. ;
  10. ; Authors:
  11. ;   Frank da Cruz, Christine M. Gianone
  12. ;   Columbia University, New York, NY, USA
  13. ;
  14. ; OS/2 modifications for version 5A(189-190):
  15. ;   Jeffrey Altman
  16. ;   Altmania Productions
  17. ;
  18. ; Version 5A(188): 23 November 1992
  19. ; Version 5A(189): 29 June 1993
  20. ; Version 5A(190) (in progress): Sat Aug 20 11:20:07 1994
  21. ;
  22. ; This is the standard and recommended C-Kermit 5A initialization file.
  23. ; It should be portable to all implementations of C-Kermit 5A edit 188
  24. ; and later.  To override settings or definitions made in this file, to
  25. ; add new settings or definitions, or to make any other desired
  26. ; customizations, create a separate, personal customization file called: 
  27. ;
  28. ;   .mykermrc     (UNIX, OS-9, Aegis)
  29. ;   CKERMOD.INI   (OS/2, VMS, OpenVMS, AOS/VS, Atari ST, Commodore Amiga)
  30. ;
  31. ; You can also define the customization filename in an environment
  32. ; variable (logical name in VMS), CKERMOD, which takes precedence over
  33. ; the names shown above.
  34. ;
  35. ; WHAT THIS FILE DOES:
  36. ;
  37. ; . The FULLSCREEN file transfer display is selected if it is available
  38. ; . Defines your default dialing directory name:
  39. ;     .kdd for UNIX, OS-9 and Aegis; CKERMIT.KDD for other operating systems.
  40. ;        You can override this with the environment variable CKDDIR.
  41. ; . Defines your default services directory name:
  42. ;     .ksd for UNIX, OS-9 and Aegis; CKERMIT.KSD for other operating systems.
  43. ;        You can override this with environment variable CKSDIR.
  44. ; . Defines your customization file name (name given above)
  45. ; . Performs system-dependent setups for UNIX, VMS, OS/2, etc.
  46. ; . Defines an EDIT macro to let you invoke a text editor from C-Kermit.
  47. ; . Defines TSEND, BSEND, TGET, BGET macros for text and binary file transfer.
  48. ; . Defines VTPRINT, PCGET, and PCSEND macros for use with MS-DOS Kermit.
  49. ; . Opens your dialing directory if you have one.
  50. ; . Reads your services directory and defines ACCESS and LIST macros for it.
  51. ; . Executes your personal customization file, if you have one.
  52. ;
  53. ; C-Kermit 5A is documented in the book "Using C-Kermit" by Frank da Cruz
  54. ; and Christine M. Gianone, 1993, Digital Press / Butterworth-Heinemann,
  55. ; Woburn, MA; ISBN 1-55558-108-0, Price: US $34.95.
  56.  
  57. def \%g FORWARD            ; Use FORWARD for speed if available.
  58. check FORWARD
  59. if success forward OK
  60. ec WARNING:
  61. ec This command file should be used with C-Kermit 5A(190) Beta.18 or later.
  62. def \%g GOTO
  63. :OK
  64.  
  65. ; Everything after this point depends on the script programming language.
  66. ; The CHECK command terminates this command file immediately if the script
  67. ; programming language (IF command) is not configured.
  68. ;
  69. set take error on        ; This makes CHECK quit if no script language.
  70. check if            ; Do we have an IF command?  If not, quit now.
  71. set take error off        ; Back to normal.
  72.  
  73. COMMENT - Greet and make sure C-Kermit edit is 188 or higher.
  74. ;
  75. echo Executing \v(cmdfile) for \v(system)...
  76. if < \v(version) 501188 -
  77.   stop 1 \v(cmdfile): C-Kermit 5A(188) or later required.
  78.  
  79. def _dedit            ; No default editor yet.
  80. \%g \v(system)            ; First do system-dependent items...
  81.  
  82. :unknown            ; Should not happen
  83. Stop 1 Error: System type unknown!
  84.  
  85. :Aegis                ; Apollo Aegis and
  86. :UNIX                ; UNIX, all versions
  87. def _dedit vi            ; Default editor is VI
  88. asg _myinit -
  89.   \v(home).mykermrc        ; Customization filename
  90. if > \v(version) 501189 if remote \%g COMMON ; Skip local-mode items if "-R"
  91. asg _dialdir -
  92.   \v(home).kdd            ; C-Kermit dialing directory
  93. asg _servicedir -
  94.   \v(home).ksd            ; C-Kermit services directory
  95. check fullscreen        ; Do we have a fullscreen display?
  96. if success set file displ full  ; If so, use it.
  97. \%g COMMON                      ; End of UNIX section
  98.  
  99. :OS9/68K            ; OS-9
  100. asg _myinit -
  101.   \v(home).mykermrc        ; Customization filename
  102. if > \v(version) 501189 if remote \%g COMMON
  103. asg _dialdir -
  104.   \v(home).kdd            ; C-Kermit dialing directory
  105. asg _servicedir -
  106.   \v(home).ksd            ; C-Kermit services directory
  107. if eq "\$(TERM)" "vt100" -      ; File transfer display
  108.   set file display full         ; Only works with VT-100 terminal type
  109. else if eq "\$(TERM)" "VT100" -
  110.   set file display full
  111. else set file display crt
  112. \%g COMMON            ; End of OS-9 section
  113.  
  114. :VMS                ; VMS and OpenVMS
  115. def _dedit edit            ; Default editor is EDIT.
  116. set file display fullscreen     ; File transfer fisplay
  117. \%g COMMON
  118.  
  119. :OS/2                ; OS/2
  120. asg _inifile \v(cmdfile)    ; Get directory where this file is kept...
  121. asg _inidirlen \feval(\flength(\m(_inifile))-11)
  122. asg _inidir \fsubstr(\m(_inifile),1,\m(_inidirlen))
  123. asg _dialdir    \m(_inidir)CKERMIT.KDD
  124. asg _servicedir \m(_inidir)CKERMIT.KSD
  125. asg _myinit     \m(_inidir)CKERMOD.INI
  126. asg _inidirlen            ; Release unneeded variables
  127. set file display fullscreen     ; File transfer fisplay
  128. set server display on        ; Show display in server mode too.
  129. def _dedit e            ; Default editor is E
  130. set command bytesize 8          ; Use 8 bits between Kermit and console.
  131. set xfer char latin1            ; Use Latin-1 for text file transfer.
  132. def cls echo \27[H\27[2J        ; Define CLS command to clear the screen.
  133. def os2 push            ; Make OS2 a synonym for PUSH, RUN, etc.
  134. def more run type \%1 | more    ; Easy access to MORE command.
  135. def vdir run dir | more    ; "Verbose" DIRECTORY
  136. def tdir run dir /o-d | more ; Reverse Time-Order DIRECTORY
  137. \%g COMMON                      ; End of OS/2 section
  138.  
  139. :AOS/VS                ; Data General AOS/VS
  140. def _dedit sed            ; Default editor is SED
  141. set file char dg-international    ; File character-set
  142. set xfer char latin1        ; Transfer character-set
  143. set file display crt            ; File transfer fisplay
  144. def cli push            ; Escape to CLI
  145. def reset -            ; Macro to reset DG DASHER terminal
  146.  run write [!ascii 236 306 301]
  147. \%g COMMON                      ; End of AOS/VS section
  148.  
  149. :Amiga                ; Commodore Amiga
  150. def cls echo \27[H\27[2J    ; CLS command to clear the screen
  151. set file display full           ; Supports fullscreen display
  152. set file char latin1        ; Use Latin Alphabet 1 for file transfer
  153. set xfer char latin1        ; ...
  154. \%g COMMON                      ; End of Amiga section
  155.  
  156. :Atari_ST            ; Atari ST
  157. def cls echo \27H\27J        ; Clear screen a`la VT52
  158. set file display crt        ; FULLSCREEN not available
  159. set server display on        ; Show file xfer display in server mode too
  160. set server timeout 15        ; Nonzero required for ^C interruption!
  161. \%g COMMON                      ; End of Atari ST section
  162.  
  163. :Macintosh            ; Apple Macintosh
  164. set server display on        ; Show file xfer display in server mode too.
  165. \%g COMMON
  166.  
  167. :Stratus_VOS                    ; Stratus VOS
  168. def _dedit emacs        ; Default editor is emacs
  169. asg _myinit \v(home)ckermod.ini
  170. if > \v(version) 501189 if remote \%g COMMON
  171. asg _dialdir \v(home)ckermit.kdd
  172. asg _servicedir \v(home)ckermit.ksd
  173. \%g COMMON                      ; End of Stratus VOS section
  174.  
  175. :COMMON                ; System-independent items
  176.  
  177. ; Make the C-Kermit prompt show my current directory.
  178. ; Environment variable or logical name CKPROMPT takes precedence.
  179. ;
  180. if def \$(CKPROMPT) set prompt \$(CKPROMPT)
  181.   else if eq "\v(system)" "VMS" set prompt \v(dir) C-Kermit>
  182.   else  set prompt [\v(dir)] C-Kermit>
  183.  
  184. COMMENT - Macros to send and get binary and text files.
  185. ;
  186. def _send asg \%9 \ffiles(\%1),-
  187.   if = 0 \%9 end 1 {\?File not found},-
  188.   if = 1 \%9 send \%1 \%2,-  ; Single file with as-name
  189.   else send \%1              ; or wildcard with no as-name
  190. def binary set file type binary
  191. def text set file type text
  192. def bsend binary, _send \%1 \%2    ; Send binary file(s)
  193. def tsend text, _send \%1 \%2    ; Send text file(s)
  194. def bget remote set file type binary, -          ; Get binary file(s)
  195.   if success get \%1 \%2 \%3 \%4 \%5 \%6 \%7 \%8 ;  from server
  196. def tget remote set file type text, -            ; Get text file(s)
  197.   if success get \%1 \%2 \%3 \%4 \%5 \%6 \%7 \%8 ;  from server
  198.  
  199. COMMENT - EDIT macro.
  200. ;
  201. ; EDITOR environment variable, if defined, takes precedence.
  202. ;
  203. check push            ; Only works if we have a PUSH command
  204. if fail \%g macros        ; (so it doesn't work on the Macintosh).
  205.  
  206. if def \$(EDITOR) assign myeditor \$(EDITOR)
  207.   else assign myeditor \m(_dedit)
  208. if not def myeditor def myeditor edit
  209. def _dedit
  210. def myfile
  211.  
  212. def edit if = \v(argc) 2 assign myfile \%1,-
  213.   if not def myfile echo Edit what?,-
  214.   else run \m(myeditor) \m(myfile)
  215.  
  216. :MACROS
  217.  
  218. ; Define macros that are useful when running C-Kermit in remote mode.
  219. ; These macros serve no purpose on local-mode-only versions such as
  220. ; OS/2, Macintosh, Amiga, and Atari ST Kermit, so we skip defining them
  221. ; for those systems.
  222. ;
  223. if not = 0 \findex(\v(system),OS/2:Macintosh:Amiga:Atari_ST) \%g files
  224.  
  225. COMMENT - VTPRINT macro.  Print a file on your PC's local printer.
  226. ;
  227. def vtprint echo \27[5i, type \%1, echo \27[4i
  228.  
  229. COMMENT - Macros for host-initiated file transfer with MS-DOS Kermit
  230. ;         And OS/2 C-Kermit.
  231. ;
  232. ; The method for doing this changed in June/July 1993, when C-Kermit 5A(189)
  233. ; and MS-DOS Kermit 3.13 were released (at approximately the same time).
  234. ; There is no good way for C-Kermit to find out the MS-DOS Kermit version
  235. ; number, so we determine which method to use based on the C-Kermit version.
  236. ;
  237. if > \v(version) 501188 \%g apc
  238.  
  239. COMMENT - PCGET macro, for use with MS-DOS Kermit 3.12 and earlier.  Argument:
  240. ; 1 = Name of file to get from MS-DOS Kermit.
  241. ; Requires MS-DOS Kermit macro TERMINALS defined as "server, connect".
  242. ;
  243. def PCGET echo \27[\?34h, get \%1, finish
  244.  
  245. COMMENT - PCSEND macro, for use with MS-DOS Kermit 3.12 and earlier.  Args:
  246. ; \%1 = Name of file to send to MS-DOS Kermit.
  247. ; \%2 = Optional name to send it with.
  248. ; Requires MS-DOS Kermit macro TERMINALR defined as "receive, connect".
  249. ;
  250. def PCSEND asg \%9 \ffiles(\%1),-
  251.   if = 0 \%9 end 1 {\?File not found},-
  252.   set delay 1, echo \27[\?34l,-
  253.   if = 1 \%9 send \%1 \%2,-  ; Single file with as-name
  254.   else send \%1              ; or wildcard with no as-name
  255.  
  256. \%g files
  257.  
  258. :APC
  259.  
  260. COMMENT - PCGET macro, for use against MS-DOS Kermit 3.13 and later,
  261. ; or C-Kermit 5A(190) or later on the PC.  Arguments:
  262. ; 1 = Name of file to get from PC.
  263. ; 2 = Optional name that C-Kermit should store it under.
  264. ;
  265. def pcget apc server, -
  266.   msleep 200,-
  267.   if not eq "\v(ftype)" "" remote set file type \v(ftype), -
  268.   xif def \%2 { -          ; If we have an "as-name"
  269.     get, \%1, \%2, -       ; use multiline GET
  270.     asg _tmp \v(status) -  ; Remember status
  271.   } else { -               ; Otherwise
  272.     get \%1, -             ; use regular GET
  273.     asg _tmp \v(status) -  ; Remember status
  274.   }, -
  275.   fin, end \m(_tmp)        ; FINISH server and return status
  276.  
  277. COMMENT - PCSEND macro, for use against MS-DOS Kermit 3.13 and later,
  278. ; or C-Kermit 5A(190) or later.  Arguments:
  279. ; \%1 = Name of file to send to MS-DOS Kermit.
  280. ; \%2 = Optional name to send it with.
  281. ;
  282. def pcsend asg \%9 \ffiles(\%1),-
  283.   if = 0 \%9 end 1 {\?File not found},-
  284.   set delay 1, apc receive,-
  285.   if = 1 \%9 send \%1 \%2,- ; Single file with as-name
  286.   else send \%1             ; or wildcard with no as-name
  287.  
  288. :FILES
  289.  
  290. ; Get customization, dialing directory, and services directory filenames.
  291. ; Let environment variables take precedence, so users do not have to edit
  292. ; this file to change these filenames.
  293. ;
  294. if def \$(CKERMOD) assign _myinit \$(CKERMOD)
  295. if not def _myinit assign _myinit \v(home)CKERMOD.INI
  296.  
  297. if > \v(version) 501189 if remote \%g NOSERVICES
  298.  
  299. if def \$(CKDDIR) assign _dialdir \$(CKDDIR)
  300. if not def _dialdir assign _dialdir \v(home)CKERMIT.KDD
  301.  
  302. if def \$(CKSDIR) assign _servicedir \$(CKSDIR)
  303. if not def _servicedir assign _servicedir \v(home)CKERMIT.KSD
  304.  
  305. CHECK DIAL            ; Is the DIAL command enabled?
  306. xif fail { -            ; No.
  307.     echo DIAL disabled -
  308. } else { -            ; Yes, check for and open the dial directory.
  309.     xif exist \m(_dialdir) { -
  310.         set dial directory \m(_dialdir), -
  311.         echo { Dial directory is \m(_dialdir) } -
  312.     } -
  313. }
  314.  
  315. COMMENT - Check for existence of services directory
  316. ;
  317. if not exist \m(_servicedir) \%g NOSERVICES
  318.  
  319. COMMENT - Have services directory, so read it and define related macros
  320. ;
  321. echo { Services directory is \m(_servicedir)}
  322.  
  323. def max_svcs 50               ; Adjust this if you have more than 50 entries!
  324. open read \m(_servicedir)     ; Open services directory file
  325. xif fail { -
  326.     echo Can't open \m(_servicedir), -
  327.     goto NOSERVICES -
  328. }
  329. declare \&d[\m(max_svcs)]     ; Declare array for service directory entries
  330. for \%i 1 \m(max_svcs) 1 { -  ; Read entries into array
  331.     read \&d[\%i], -
  332.     if fail \%g DONE -
  333. }
  334. close read                    ; Didn't reach the end
  335. echo -                        ; Close the file and print useful message
  336.   \?Too many entries in services directory:
  337. echo { Maximum is \m(max_svcs).}
  338. echo { Change definition of max_svcs in \v(cmdfile) to allow more. }
  339. echo { Services directory disabled.}
  340. \%g NOSERVICES
  341.  
  342. :DONE                         ; We have the services directory in memory
  343. asg \&d[0] \feval(\%i - 1)    ; Keep size of array in zeroth element
  344.  
  345. ; LIST macro.  Arguments:
  346. ; \%1 = service name (optional)
  347. ;
  348. def LIST -
  349.   if > \v(argc) 1 goto SEARCH, -
  350.   echo \&d[0] items in services directory:, -   ; No search item
  351.   for \%i 1 \&d[0] 1 { echo \&d[\%i] }, end, -  ; List whole directory
  352. :SEARCH, -                                      ; Search item given
  353.   lookup \%1, -                                 ; Look it up
  354.   if def \v(return) echo \v(return), -          ; List it if found
  355.   else echo \%1: Not found                      ; or say it wasn't
  356.  
  357. COMMENT - SERIAL macro.  Arguments:
  358. ; \%1 = device name
  359. ; \%2 = speed
  360. ;
  361. def SERIAL -
  362.   if < \v(argc) 3 -                       ; All arguments given?
  363.     end 1 Usage: SERIAL device speed,-    ; No.
  364.   set line \%1,-                          ; OK, try to SET LINE.
  365.   if failure -                            ; If this failed,
  366.     end 1 Can't open device: \%1,-        ; print message and quit.
  367.   set speed \%2,-                         ; Try to set the speed.
  368.   if fail end 1 Unsupported speed: \%2,-  ; Failed.
  369.   echo Connection successful.             ; Succeeded.
  370.  
  371. COMMENT - NET macro.  Arguments:
  372. ; \%1 = network type
  373. ; \%2 = host name or address
  374. ;
  375. def NET if < \v(argc) 3 end 1 Usage: NET network host,-
  376.   set network \%1,-
  377.   if fail end 1 unsupported network: \%1,-
  378.   set host \%2,-
  379.   if fail end 1 can't reach host: \%2,-
  380.   echo Connection successful.
  381.  
  382. COMMENT - CALL macro.  Arguments:
  383. ;
  384. ; \%1 = modem type
  385. ; \%2 = device name
  386. ; \%3 = speed
  387. ; \%4 = phone number
  388. ;
  389. def CALL if < \v(argc) 5 end 1 Usage: CALL modem device speed number,-
  390.   set modem \%1,-
  391.   if fail end 1 unknown modem type: \%1,-
  392.   set line \%2,-
  393.   if fail end 1 can't open device: \%2,-
  394.   set speed \%3,-
  395.   if fail end 1 unsupported speed: \%3,-
  396.   for \%i 1 10 1 { -
  397.     xif > \%i 1 { -
  398.         echo Will redial in 1 minute: please wait...,-
  399.         pause 60,-
  400.         echo Redialing: try number \%i...,-
  401.     },-
  402.     dial \%4,-
  403.     if success goto OK,-
  404.     hangup,-
  405.   } -
  406.   end 1 Can't place call: \%4,-
  407.   :ok,-
  408.   pause 1,-
  409.   echo Connection successful.
  410.  
  411. COMMENT - SPRINT macro.  Arguments:
  412. ; \%1 = Service name or address
  413. ;
  414. def SPRINT -
  415.     if < \v(argc) 2 end 1 Usage: \%0 service,-
  416.     set input timeout proceed,-
  417.     output @D\13,-
  418.     input 10 TERMINAL=,-
  419.     if fail end 1 No terminal prompt,-
  420.     out D1\13,-
  421.     inp 10 @,-
  422.     if fail end 1 No atsign prompt,-
  423.     output c \%1\13,-
  424.     input 10 CONNECTED,-
  425.     if fail end 1 Can't access \%1 from SprintNet
  426.  
  427. COMMENT - VMSLOGIN macro.  Arguments:
  428. ; \%1 = VMS user ID
  429. ; \%2 = Password.  If password not supplied, it is prompted for.
  430. ;
  431. def VMSLOGIN if < \v(argc) 2 end 1 Usage: VMSLOGIN userid password,-
  432.     if eq \fcode(\%2) 32 asg \%2 \fsubst(\%2,2), -
  433.     while not def \%2 { - 
  434.         askq \%2 { \%1's password: } -
  435.     },-
  436.     set parity none,-
  437.     set duplex full,-
  438.     set handshake none,-
  439.     set flow xon/xoff,-
  440.     set input timeout proceed,-
  441.     for \%i 1 3 1 { -
  442.         out \13,-
  443.         in 5 Username:,-
  444.         if success goto DOLOGIN -
  445.     },-
  446.     end 1 No Username prompt,-
  447. :DOLOGIN,-
  448.     out \%1\13,-
  449.     inp 5 Password:,-
  450.     if fail end 1 No password prompt,-
  451.     out \%2\13,-
  452.     def \%2,-
  453.     set inp ech off,-
  454.     minp 20 \27Z \27[c,-
  455.     xif success { -
  456.       out \27[\?1c,-
  457.       in 2 [6n,-
  458.       if succ out \27[24;80R -
  459.     } else { out \13},-
  460.     set inp ech on,-
  461.     if not def \%3 asg \%3 {\10\13$\32},-
  462.     reinp 0 \%3,-
  463.     if fail inp 60 \%3,-
  464.     if fail end 1 No system prompt,-
  465.     echo Login successful.
  466.  
  467. COMMENT - UNIXLOGIN macro.  Arguments:
  468. ; \%1 = user ID
  469. ; \%2 = password
  470. ;
  471. def UNIXLOGIN if < \v(argc) 2 end 1 Usage: \%0 userid password,-
  472.     if eq \fcode(\%2) 32 asg \%2 \fsubst(\%2,2), -
  473.     while not def \%2 { - 
  474.         askq \%2 { \%1's password: } -
  475.     },-
  476.     set parity none,-
  477.     set duplex full,-
  478.     set handshake none,-
  479.     set case on,-
  480.     out \13,-
  481.     set input timeout proceed,-
  482.     for \%i 1 15 1 { -
  483.         in 5 login:,-
  484.         if success goto DOLOGIN,-
  485.         output \\B -
  486.     },-
  487.     end 1 No login prompt,-
  488. :DOLOGIN,-
  489.     out \%1\13,-
  490.     inp 5 Password:,-
  491.     if fail end 1 No password prompt,-
  492.     out \%2\13,-
  493.     def \%2,-
  494.     if not def \%3 asg \%3 {\13\10$ },-
  495.     inp 60 \%3,-
  496.     if fail end 1 No system prompt,-
  497.     echo, echo Login successful.
  498.  
  499. COMMENT - VMLINELOGIN macro.  Arguments:
  500. ; \%1 = User ID
  501. ; \%2 = Password
  502. ;
  503. def VMLINELOGIN -
  504.     if < \v(argc) 2 end 1 Usage: \%0 userid password,-
  505.     if eq \fcode(\%2) 32 asg \%2 \fsubst(\%2,2), -
  506.     while not def \%2 { - 
  507.         askq \%2 { \%1's password: } -
  508.     },-
  509.     set parity mark,-
  510.     set flow none,-
  511.     set handshake xon,-
  512.     set duplex half,-
  513.     set input timeout quit,-
  514.     input 10 BREAK KEY,-
  515.     pause 1,-
  516.     output \\B,-
  517.     input 10 .\17, output login \%1\13,-
  518.     input 10 .\17, output \%2\13, def \%2,-
  519.     input 10 .\17, output \13,-
  520.     input 10 .\17, output \13,-
  521.     set input timeout proceed,-
  522.     echo Login successful.
  523.  
  524. COMMENT - VMFULLOGIN macro.  Arguments:
  525. ; \%1 = User ID
  526. ; \%2 = Password
  527. ;
  528. def VMFULLOGIN -
  529.     if < \v(argc) 2 end 1 Usage: \%0 userid password,-
  530.     if eq \fcode(\%2) 32 asg \%2 \fsubst(\%2,2), -
  531.     while not def \%2 { - 
  532.         askq \%2 { \%1's password: } -
  533.     },-
  534.     set input timeout quit,-
  535.     set parity even,-
  536.     set duplex full,-
  537.     set handshake none,-
  538.     set flow xon/xoff,-
  539.     out \13,-
  540.     inp 5 TERMINAL TYPE:,-
  541.     out vt-100\13,-
  542.     inp 20 RUNNING,-
  543.     pau 1,-
  544.     out \%1\9\%2\13,-
  545.     out \13\13,-
  546.     set input timeout proceed,-
  547.     echo Login successful.
  548.  
  549. COMMENT - CISLOGIN macro for CompuServe.  Arguments:
  550. ; \%1 = CompuServe User ID
  551. ; \%2 = Password
  552. ;
  553. def CISLOGIN -
  554.     if < \v(argc) 2 end 1 Usage: \%0 userid password,-
  555.     if eq \fcode(\%2) 32 asg \%2 \fsubst(\%2,2), -
  556.     while not def \%2 { - 
  557.         askq \%2 { \%1's password: } -
  558.     },-
  559.     set terminal bytesize 7,-
  560.     set input timeout quit,-
  561.     output \13,-
  562.     input 5 Host Name:,-
  563.     output cis\13,-
  564.     input 5 User ID:,-
  565.     output \%1\13,-
  566.     input 5 Password:,-
  567.     output \%2\13,-
  568.     def \%2,-
  569.     if not def \%3 asg \%3 CompuServe Information Service,-
  570.     input 30 \%3,-
  571.     echo, echo Login successful.
  572.  
  573. COMMENT - DOWLOGIN macro for Dow Jones News/Retrieval.  Arguments:
  574. ; \%1 = Dow Jones Password
  575. ;
  576. def DOWLOGIN -
  577.     if eq \fcode(\%2) 32 asg \%2 \fsubst(\%2,2), -
  578.     while not def \%2 { - 
  579.         askq \%2 { \%1's password: } -
  580.     },-
  581.     set input timeout proceed,-
  582.     input 20 SERVICE PLEASE\?\?\?\?,-
  583.     if fail end 1 no service prompt,-
  584.     out djnr\13,-
  585.     input 10 @@@@,-
  586.     if fail end 1 No password prompt,-
  587.     pause 1,-
  588.     output \%1\13,-
  589.     if not def \%3 asg \%3 ENTER QUERY,-
  590.     input 30 \%3,-
  591.     if fail end 1 No main query prompt,-
  592.     pause 1@,-
  593.     echo Login successful.
  594.  
  595. COMMENT - DJNRSPRINT macro: Log in to Dow Jones via SprintNet.
  596. ;
  597. def djnrsprint sprint dow, dowlogin
  598.  
  599. COMMENT - NOLOGIN macro.  Does nothing.  Use when login not required.
  600. ;
  601. def nologin comment
  602.  
  603. COMMENT - LOOKUP macro.  Argument:
  604. ; \%1 = Service name to look for in services directory
  605. ;
  606. def LOOKUP -
  607.     set case off,-          ; Ignore alphabetic case
  608.     for \%i 1 \&d[0] 1 { -  ; Loop thru services directory
  609.         if eq \%1 \fsubstr(\&d[\%i],1,\flen(\%1)) - ; Got a match?
  610.           break -           ; If so, we're done
  611.     },-
  612.     if not > \%i \&d[0] return \&d[\%i] ; Return the entry
  613.  
  614. def _a1 return \%1
  615. def _a2 return \%2
  616.  
  617. def DOACCESS -        ; (Used internally by ACCESS macro)
  618.     do \%5 \%6 \%7 \%8 \%9,- ; Do the connection macro
  619.     if fail end 1,-
  620.     _a2 \%3,-                ; Prompt, if any
  621.     asg \%2 \v(return),-
  622.     _a1 \%3,-                ; Login macro name
  623.     asg \%3 \v(return),-
  624.     do \%3 \%4 {\%1} \%2     ; Login macro, userid, password, prompt
  625.  
  626. ; ACCESS macro.  Arguments:
  627. ; \%1 = service name
  628. ; \%2 = password (optional)
  629. ;
  630. def ACCESS -
  631.     if not defined \%1 end 1 access what?,-      ; Check service
  632.     lookup \%1,-                                 ; Look it up
  633.     if success doaccess { \%2} \v(return),-      ; OK, try it
  634.     else end 1 "\%1" not in services directory,- ; Not found
  635.     if fail stop 1                               ; DOACCESS failed?
  636.  
  637. \%g ENDSERVICES            ; Skip around NOSERVICES definitions.
  638.  
  639. :NOSERVICES
  640. def access echo { Services directory not available.}
  641. asg list \m(access)
  642.  
  643. :ENDSERVICES
  644.  
  645. COMMENT - In VMS and OpenVMS, allow for system-wide site customizations
  646. ;
  647. if not equal "\v(system)" "VMS" \%g CUSTOM
  648. xif exist CKERMIT_INI:CKERMIT.SYS { -
  649.     echo Executing CKERMIT_INI:CKERMIT.SYS, -
  650.     take CKERMIT_INI:CKERMIT.SYS -
  651. }
  652.  
  653. COMMENT - Execute user's personal customization file
  654. ;
  655. :CUSTOM
  656. xif exist \m(_myinit)  { -        ; If it exists,
  657.     echo Executing \m(_myinit)..., -    ; print message,
  658.     take \m(_myinit) -            ; and TAKE the file.
  659. }
  660.  
  661. COMMENT - Greeting.
  662. ;
  663. if < \v(ntime) 43200 echo Good Morning!
  664.   else if < \v(ntime) 61200 echo Good Afternoon!
  665.   else echo Good Evening.
  666.  
  667. ; End of C-Kermit 5A initialization file.
  668.