home *** CD-ROM | disk | FTP | other *** search
/ CD-ROM Aktiv 1 / CDA1_96.ISO / novell / marxmenu.exe / MARXREAD.ME < prev    next >
Text File  |  1995-08-02  |  50KB  |  1,823 lines

  1. Version 2.43
  2.  
  3. 04-15-93
  4.  
  5. Bumped up the version number because it's been a while since I last
  6. changed it.
  7.  
  8. Starting with this version MarxMenu stores it's serial number
  9. information in the Bindery as well as the MARXMENU.EXE file. Thus when
  10. you get a new version of MarxMenu it will serialize itself the first
  11. time you run it. This makes updates easier.
  12.  
  13.  
  14. 04-16-93
  15.  
  16. BiosDate : String
  17. Returns the date of the rom Bios.
  18.  
  19.  
  20. 04-18-93
  21. MarxMenu is now more Windows aware. When running MarxMenu under Windows
  22. the TaskNumber variable reads the Virtual Machine ID. Thus MarxMenu no
  23. longer requires that you set a TASK= environment variable under windows.
  24.  
  25.  
  26. DriveType (Drive) : String
  27. DriveType returns the type of drive of a given drive letter. This is
  28. like DiskType with the exception of how it deals with floppy drives.
  29. DiskType actually tries to read the floppy so if you put a 720k disk in
  30. a 1.4 meg drive then DiskType will return 720. DriveType returns the
  31. type of drive the CMOS is configured for.
  32.  
  33.  
  34. PcType : String
  35. PcType returns the type of computer you are running as a string. Types
  36. include: PC, XT, AT, PS2.
  37.  
  38.  
  39. CpuName : String
  40. Returns the name of the CPU. CPU names include:
  41.  
  42.   8088, 8086, V20 ,V30, 80188, 80186, 80286,
  43.   80386, 80386SX, 80486, 80486SX
  44.  
  45.  
  46. McpClass : Number
  47. Returns the math coprocessor class.
  48.  
  49.  0 = None
  50.  1 = 8078
  51.  2 = 80287
  52.  3 = 80387
  53.  4 = 80487 (486 CPU)
  54.  
  55.  
  56. McpName : String
  57. Returns the name of the marh coprocessor. If there is no math
  58. coprocessor then an empty string is returned. Names include:
  59.  
  60.   8087, 80287, 80387, 80487
  61.  
  62.  
  63. EmsInstalled : Boolean
  64. Returns True if EMS memory manager is installed.
  65.  
  66.  
  67. EmsVersion : String
  68. EmsVersion returns the version of the EMS driver you are using. If EMS
  69. isn't present it returns an empty string.
  70.  
  71.  
  72. XmsInstalled : Boolean
  73. Returns True if XMS memory manager is installed.
  74.  
  75.  
  76. XmsVersion : String
  77. XmsVersion returns the version of the XMS driver you are using. If XMS
  78. isn't present it returns an empty string.
  79.  
  80.  
  81. VCPIInstalled : Boolean
  82. Returns True if VCPI services are installed.
  83.  
  84.  
  85. VCPIVersion : String
  86. VCPIVersion returns the version of the VCPI driver you are using. If
  87. VCPI isn't present it returns an empty string.
  88.  
  89.  
  90. DPMIInstalled : Boolean
  91. Returns True if DPMI services are installed.
  92.  
  93.  
  94. DPMIVersion : String
  95. DPMIVersion returns the version of the DPMI driver you are using. If
  96. DPMI isn't present it returns an empty string.
  97.  
  98.  
  99. MouseVersion : String
  100. MouseVersion returns the version of the mouse driver you are using. If a
  101. mouse driver isn't present it returns an empty string.
  102.  
  103.  
  104. MouseIRQ : Number
  105. Returns the interrupt number that the mouse driver is using.
  106.  
  107.  
  108. MouseType : String
  109. Reurns the type of mouse being used. If a mouse driver isn't present it
  110. returns an empty string.
  111.  
  112.  Mouse Types: BUS, SERIAL, HP, INPORT, PS2, UNKNOWN
  113.  
  114.  
  115. 04-21-93
  116.  
  117. ComNewLineProgram : Procedure
  118. ComNewLineProgram is a procedure variable that if set to point to a
  119. procedure is executed every time a new line is received at the modem.
  120.  
  121.  Example:
  122.    ComNewLineProgram = Loc ExamineLastLine
  123.  
  124.    Procedure ExamineLastLine
  125.    var St P
  126.       P = pos('Time Sync:',ComLastLine)
  127.       if P = 0 then Return
  128.       St = mid(ComLastLine,P + 11,17)    ;read Date and Time
  129.       NovServerTime = TimeOf(St)
  130.    EndProc
  131.  
  132. In this example, ExamineLastLine is executed once each new line and is
  133. scaned for the word "Time Sync:". If the word is found it sets the
  134. server time to the value following that word.
  135.  
  136.  
  137. 04-23-93
  138.  
  139. NovChangeObjPassword (Obj, Type, OldPassword, NewPassword)
  140. NovChangeObjPassword is like NovChangePassword except it allows you to
  141. change the password on other objects than yourself. Type refers to the
  142. object type. Users are type 1.
  143.  
  144.  Example:
  145.     NovChangeObjPassword('DAN',1,'POTATOE','POTATO')
  146.  
  147.  
  148. 05-06-93
  149.  
  150. ClearKbdBuffer
  151. ClearKbdBuffer clears the characters out of the keyboard buffer.
  152.  
  153.  
  154. 05-18-93
  155.  
  156. Overlayed : Boolean
  157. Overalyed returns true if menu is loaded as an overlay.
  158.  
  159.  
  160. 05-25-93
  161.  
  162. I've expanded the use of the word Trim. Besides trimming the blanks from
  163. the ends of strings it will also trim blank lines from the ends of
  164. arrays.
  165.  
  166.  
  167. 05-28-93
  168.  
  169. Local : Array
  170. Parameters passed to procedures and local variables in a procedure are
  171. elements of an array of local variables. By using the word Local you can
  172. address passed parameters and local variables as if they were elements
  173. of an array.
  174.  
  175.  Example:
  176.    Procedure Test (A,B)
  177.    var C,D
  178.       Writeln A B C D
  179.    EndProc
  180.  
  181. In the above example the variable A is the same as Local[1], B is
  182. Local[2], C is Local[3], and D is Local[4]. The Local command can be
  183. used to pass a varying number of parameters to a procedure as follows:
  184.  
  185.  Example:
  186.    Procedure Test
  187.       Loop Local
  188.          Writeln Local[LoopIndex]
  189.       endloop
  190.    EndProc
  191.  
  192.    Test (1,2,3,4)
  193.  
  194. This allows the procedure Test to accept and process any number of
  195. parameters you wish to pass to it.
  196.  
  197. ===============================================================
  198.  
  199. Version 2.44
  200.  
  201. 06-21-93
  202.  
  203. I've changed the semaphores to work with TSRs in upper memory. You no
  204. longer need a TSR in low memory for semaphores to live. This improves
  205. software metering.
  206.  
  207.  
  208. TSRs (Array)
  209. TSRs returns a list of all TSRs in memory as well as the names of
  210. pending batch files.
  211.  
  212.  Example:
  213.    var TsrList
  214.    TSRs(TsrList)
  215.    Loop TsrList
  216.       Writeln TsrList[LoopIndex]
  217.    EndLoop
  218.  
  219.  
  220. InMem (TsrName) : Boolean
  221. Inmem returns true if the TSR you are looking for is loaded. This allow
  222. you to do conditionals based on the presence or absence of a TSR. It
  223. will also check for the names of pending batch files.
  224.  
  225.  Example:
  226.    if not InMem('BTRIEVE')
  227.       Bat 'BTRIEVE.EXE'
  228.    endif
  229.  
  230.  
  231. MemoryLoc (TsrName) : Number
  232. MemoryLoc returns the memory segment address of the TSR name you
  233. specify. If the TSR isn't in memory it returns a 0.
  234.  
  235.  Example:
  236.    Writeln 'Btrieve is at $' HexString(MemoryLoc('BTRIEVE'),4)
  237.  
  238.  
  239. 07-16-93
  240.  
  241. Well, I'm now jumping into the VLM stuff and making MarxMenu Netware 4
  242. smart. Here's what I have so far. I still don't consider netware 4 to be
  243. done yet, but it's getting at least close enough to start developing
  244. for. Since this involves a lot of changes it's likely that I might have
  245. broken a command or two. If you find something that doesn't work, let me
  246. know about it.
  247.  
  248.  
  249. VlmLoaded : Boolean
  250. Returns true if the VLM shell is loaded.
  251.  
  252.  
  253. NovConTableSize : Number
  254. NovConTableSize returns the maximum number of servers the shell can
  255. connect to. In the past using the NETX shells this has been 8. But the
  256. new shells can be set to different values.
  257.  
  258.  
  259. 07-20-93
  260.  
  261. NovFirstNetworkDrive : String
  262. NovFirstNetworkDrive returns the drive letter of the first network drive
  263. on a Novell network.
  264.  
  265.  
  266. 07-27-93
  267.  
  268. The NovFullName command is now writeable.
  269.   Example:
  270.   NovFullName ('RNOORDA') = 'Ray Noorda'
  271.  
  272.  
  273. NovManager (UserName) : Boolean
  274. Returns True if the user has workgroup manager priveledges. If UserName
  275. isn't specified then the current user is assumed.
  276.  
  277.  Example:
  278.    if NovManager ('FRED') then Writeln 'Fred is a Manager'
  279.    if NovManager then Writeln 'I am a Manager'
  280.  
  281.  
  282. NovMaxUserConnections (UserName) : Number
  283. Returns the maximum number of connections that a user is limited to. A
  284. zero means unlimited connections. If UserName isn't specified then the
  285. current user is assumed. You can also use this command to set the limit.
  286.  
  287.  Example:
  288.    Writeln NovMaxConnection ('FRED')    ; Fred's Limit
  289.    Writeln NovMaxConnection             ; My Limit
  290.    NovMaxConnections ('BARNEY') = 5     ; Set Barney's limit to 5
  291.  
  292.  
  293. NovSpaceUsed (UserName,Volume) : Number
  294. NovSpaceUsed returns the total disk space in use by the user on the
  295. specified volume.
  296.  
  297.  Example:
  298.    Writeln NovSpaceUsed ('BILL','F:')   ; Bill's disk space on F:
  299.  
  300. NovSpaceLimit (UserName, Volume) : Number
  301. NovSpaceLimit returns the disk space limit for the user on the specified
  302. volume. You can also use this command to set the limit.
  303.  
  304.  Example:
  305.    Writeln NovSpaceLimit ('BILL','F:')     ; Bill's space limit on F:
  306.    NovSpaceLimit ('BILL','SYS:') = 2000000 ; Limits Bill's space
  307.  
  308.  
  309. NovSerialNumber : String
  310. NovSerialNumber returns the current server serial number as a string.
  311.  
  312.  Example:
  313.    Writeln NovSerialNumber
  314.  
  315.  
  316. NovUserFiles (UserName,Volume) : Number
  317. NovUserFiles returns the number of files on the volume that are owned by
  318. the user. This commamd takes a while to run. Expect delays from a few
  319. seconds to several minutes.
  320.  
  321.  Example:
  322.    Writeln NovUserFiles ('PETE','SYS:')
  323.  
  324.  
  325. NovUserDirectories (UserName,Volume) : Number
  326. NovUserDirectories returns the number of directories on the volume that
  327. are owned by the user. This commamd takes a while to run. Expect delays
  328. from a few seconds to several minutes.
  329.  
  330.  Example:
  331.    Writeln NovUserDirectories ('PETE','F:')
  332.  
  333. ===============================================================
  334.  
  335. Version 2.45
  336.  
  337. 08-09-93
  338.  
  339. I bumped up the version number so that this can be the first official
  340. VLM shell version.
  341.  
  342. I've enhanced the compilers ability to deal with conditionals. You can
  343. now use the following syntax:
  344.  
  345.  if <condition> then <statement> else <statement>
  346.  
  347. This will work if the statements a single statements. Also:
  348.  
  349.  Repeat <Statement>
  350.  Until <Condition>
  351.  
  352. or
  353.  
  354.  Repeat <Statement> Until <Condition>
  355.  
  356. have been added. Before you had to put Repeat on a line by itself.
  357.  
  358.  
  359. The command ExitMenu can now take a command line which tells MarxMenu to
  360. run this one line and then don't come back to the menu.
  361.  
  362. Example:
  363.   ExitMenu 'DIR /W'
  364.  
  365.  
  366. I made a change in the MXSTOP.BAT file. MarxMenu no longer deletes the
  367. temporary batch file itself when exiting the menu. MarxMenu sets an
  368. environment variable DELBAT to the name of the temporary batch file. The
  369. MXSTOP.BAT file actually deletes it. You will want to run MARXMENU INST
  370. to create a new MXSTOP.BAT file.
  371.  
  372.  
  373. I added logic into MarxMenu to automatically process environment
  374. variable referrences within filenames. Thus:
  375.  
  376.  F:\HOME\%USERNAME%\WINDOWS becomes F:\HOME\MARC\WINDOWS
  377.  
  378. This logic works with all commands that use file names.
  379.  
  380.  
  381. New Commands:
  382.  
  383. LoopVal
  384. LoopVal returns the current variable in a Loop EndLoop when the loop is
  385. started using an array.
  386.  
  387.  Example:
  388.    var X
  389.    ReadDirectory X
  390.    Loop X
  391.       LoopVal = CleanFileName LoopVal
  392.       Writeln LoopVal
  393.    EndLoop
  394.  
  395. LoopVal can be read or written to. It can be indexed or used with
  396. qualifiers. Any function that can be used with variables can be used
  397. with LoopVal. With nested loops, LoopVal always references the innermost
  398. loop.
  399.  
  400.  
  401. EnvExpandString (String) : String
  402. EnvExpandString will take a string that has environment variable
  403. referrences in it and substitute the environment variable for that part
  404. of the string.
  405.  
  406.  Example:
  407.    Writeln EnvExpandString 'F:\HOME\%USERNAME%\WINDOWS'
  408.    ; returns F:\HOME\MARC\WINDOWS
  409.  
  410.  
  411. 08-13-93
  412.  
  413. NovSemaphoreInfo (2DArray,Commection)
  414. NovSemaphoreInfo reads the semaphore information of a connection number.
  415. It returns a two dimensional array of the semaphore names, open count,
  416. value, and task number.
  417.  
  418.  Example:
  419.    Var Sem
  420.    Qualifier Name, OpenCount, Val, Task
  421.    NovConSemaphoreInfo(Sem,9)
  422.    Loop Sem
  423.       Write   LoopVal.Name ' ' LoopVal.OpenCount ' '
  424.       Writeln LoopVal.Val ' ' LoopVal.Task
  425.    EndLoop
  426.  
  427.  
  428. NovLoginTime (Connection)
  429. Returns the login time of a specific connection. If the connection
  430. number isn't specified then the current connection is assumed.
  431.  
  432.  Example:
  433.    var X
  434.    X = NovLoginTime
  435.    Writeln DateString(X) ' ' TimeString(X)
  436.  
  437.  
  438. NovServDescription (Array)
  439. NovServDescription returns an array of strings that contain the novell
  440. file server description,
  441.  
  442.  Example:
  443.    var Des
  444.    NovServDescription(Des)
  445.    Loop Des
  446.       Writeln LoopVal
  447.    EndLoop
  448.  
  449.  
  450. NovConUsingAFile (Array,FileName)
  451. NovConUsingAFile creates an array with a list of connection numbers that
  452. have a file open.
  453.  
  454.  Example:
  455.    ;WhoHas program in MarxMenu
  456.    var ConnectionList
  457.    NovConUsingAFile(ConnectionList,ParamStr(2))
  458.    Loop ConnectionList
  459.       Writeln NovLoginName(LoopVal) ' [' LoopVal ']'
  460.    EndLoop
  461.  
  462.  
  463. NovDiskSpaceFromDel (Path) : Number
  464. NovDiskSpaceFromDel returns the amount of disk space that is used by
  465. deleted files and is available for reuse.
  466.  
  467.  Example:
  468.     Writeln NovDiskSpaceFromDel 'F:'
  469.  
  470.  
  471. NovDiskSpaceFromDelNA (Path) : Number
  472. NovDiskSpaceFromDelNA returns the amount of disk space that is used by
  473. deleted files and is not yet available for reuse.
  474.  
  475.  Example:
  476.     Writeln NovDiskSpaceFromDelNA 'F:'
  477.  
  478.  
  479. CommaString (String) : String
  480. CommaString takes a string that represents a number and adds commas
  481. every three characters. If you pass it a number it will convert it to a
  482. string and then add the commas.
  483.  
  484.  Example:
  485.     Writeln CommaString ('12345')     ; returns 12,345
  486.     Writeln CommaString (45 * 75)     ; returns 3,375
  487.  
  488.  
  489. LongestString (Array) : Number
  490. LongestString returns the length of the longest string in an array of
  491. strings.
  492.  
  493.  Example:
  494.    var X
  495.    ReadTextFile('MARX.BAT',X)
  496.    Writeln LongestString (X)
  497.  
  498.  
  499. AmPm : Boolean
  500. When AmPm is set true the TimeString function returns AmPm time format.
  501.  
  502.  Example:
  503.     AmPm On
  504.     Writeln TimeString(Now)  ; returns 10:13:34 am
  505.  
  506.  
  507. 08-18-93
  508.  
  509. NovConLoggedIn (Array)
  510. NovConLoggedIn returns an array of connection numbers that have someone
  511. logged in.
  512.  
  513.  Example:
  514.    var Connections
  515.    NovConLoggedIn(Connections)
  516.    Loop Connection
  517.       Writeln LoopVal
  518.    EndLoop
  519.  
  520.  
  521. NovMaxConnectionsUsed : Number
  522. Returns the maximum number of connection used on the server. If you're
  523. hunting through connection numbers you can use this value as a maximum
  524. instead of NovMaxConnections to reduce the number of connections you
  525. have to deal with.
  526.  
  527.  
  528. NovShowNotLoggedIn : Boolean
  529. NovShowNotLoggedIn is used with NovUsersLoggedIn and NovConLoggedIn.
  530. Normally users who are connected but not logged in are filtered out buy
  531. MarxMenu. But if you set NovShowNotLoggedIn to True, then NOT-LOGGED-IN
  532. will be included in the list.
  533.  
  534.  
  535. 09-08-93
  536.  
  537. Forever
  538. Forever is part of a loop Repeat -- Forever. Forever is an unconditional
  539. jump to Repeat.
  540.  
  541.  Example:
  542.    Repeat
  543.       [statement]
  544.       [statement]
  545.    Forever
  546.  
  547.  
  548. ComWriteRecChar (On/Off)
  549. If ComWriteRecChar is set to On then any characters comming in the
  550. serial port will be written to the screen. In a terminal program you
  551. would typically turn ComWriteRecChar and ComSendKbdChar both on.
  552.  
  553.  
  554. ComSendKbdChar (On/Off)
  555. If ComSendKbdChar is set to On then any characters typed at the keyboard
  556. will be sent out the serial port. In a terminal program you would
  557. typically turn ComWriteRecChar and ComSendKbdChar both on.
  558.  
  559.  
  560. ComLocalInput (On/Off)
  561. If ComLocalInput is set to On then keys typed at the keyboard will be
  562. treated as if they came in over the serial port. This allows a host
  563. program like a BBS to be run from the local console as if the user were
  564. typing in characters.
  565.  
  566.  
  567. ComCheckActivity
  568. ComCheckActivity will check the serial ports and keyboard and route
  569. characters if anything needs to be routed. It is typically used in the
  570. main process loop of communication programs to make it run fast.
  571.  
  572.  
  573. ComZRecover (On/Off)
  574. If ComZRecover is set to On then if you retry an aborted ZModem download
  575. it will resume at the point where it was aborted.
  576.  
  577.  
  578. ComFullFileName : String
  579. Returns the full file name of the file that is currently being
  580. transmitted.
  581.  
  582.  
  583. 09-20-93
  584.  
  585. UpperCaseCompare (On/Off)
  586. When UpperCaseCompare is set to On, all string commands that compare
  587. strings are case insensitive.
  588.  
  589.  Example:
  590.    UpperCaseCompare On
  591.    Writeln 'ABC' = 'abc'   ; returns true
  592.  
  593. The commands this affects include all comparison operators, Pos,
  594. PosInList, and PosInSortedList.
  595.  
  596.  
  597. PosInListPartial (String,Array) : Number
  598. PosInListPartial is similar to the PosInList command. It searches a
  599. string array for a matching string and returns the line number of the
  600. first match. Unlike PosInList which compares the whole string,
  601. PosInListPartial will find the first string that contains the search
  602. string.
  603.  
  604.  Example:
  605.    var List
  606.    List[1] = 'Date=09-20-93'
  607.    List[2] = 'Time=10:18'
  608.    List[3] = 'Name=Marc'
  609.    Writeln PosInListPartial('Name=',List)  ; returns 3
  610.  
  611.  
  612. 09-22-93
  613.  
  614. ComAcceptFileProgram
  615. ComAcceptFileProgram is a variable that contains a procedure that you
  616. use when receiving a file to determine if the file name being sent is
  617. acceptable. You procedure needs to return a True to accept the name or a
  618. False to reject the name.
  619.  
  620.  Example:
  621.    ComAcceptFileProgram = Loc MyAcceptName
  622.  
  623.    ;- Always overwrite file
  624.  
  625.    Procedure MyAcceptName
  626.       if ExistFile ComFullFileName
  627.          DelFile ComFullFileName
  628.       endif
  629.       Return True
  630.    EndProc
  631.  
  632.    ;----- Ask to overwrite existing file
  633.  
  634.    Procedure MyAcceptName
  635.    var Ch
  636.       if ExistFile ComFullFileName
  637.          DoubleLineBox
  638.          BoxBorderColor LCyan Mag
  639.          BoxInsideColor Yellow Mag
  640.          InverseColor Yellow Red
  641.          DrawBox 31 7 47 3
  642.          UseArrows Off
  643.          Write ' File ' ComFileName ' exists. Replace it? (Y/n) '
  644.          Ch = UpperCase(ReadKey)
  645.          EraseTopWindow
  646.          if Ch = 'N'
  647.             Return False
  648.          else
  649.             DelFile ComFullFileName
  650.             Return True
  651.          endif
  652.       endif
  653.       Return True
  654.    EndProc
  655.  
  656.  
  657. 10-12-93
  658.  
  659. NovDirectoryRights (Dir) : Number
  660. NovDirectoryRights return your effective rights in the directory Dir.
  661.  
  662.  Example:
  663.    Writeln NovDirectoryRights 'F:\PUBLIC'
  664.  
  665.  
  666. NovAddTrustee (Dir,Rights,Object,Type)
  667. NovAddTrustee adds a directory and access rights to a user or group. To
  668. add rights to a user the Type is 1. For a group the Type is 2.
  669.  
  670.  Example:
  671.    NovAddTrustee ('F:\PUBLIC',$FF,'EVERYONE',2)
  672.  
  673.  
  674. NovDeleteTrustee (Dir,Object,Type)
  675. NovDeleteTrustee removes a directory access rights from a user or group.
  676. To delete rights from a user the Type is 1. For a group the Type is 2.
  677.  
  678.  Example:
  679.    NovDeleteTrustee ('F:\PUBLIC','EVERYONE',2)
  680.  
  681.  
  682. NovCreateUser (Name)
  683. Creates a user in the bindery along with all the minimum default
  684. properties.
  685.  
  686.  Example:
  687.    NovCreateUser 'MARC'
  688.  
  689.  
  690. NovCreateGroup (Name)
  691. Creates a group in the bindery along with all the minimum default
  692. properties.
  693.  
  694.  Example:
  695.    NovCreateGroup 'ACCOUNTING'
  696.  
  697.  
  698. NovCreatePrintQueue (Name)
  699. Creates a print queue in the bindery along with all the minimum default
  700. properties.
  701.  
  702.  Example:
  703.    NovCreatePrintQueue 'ACCOUNTING'
  704.  
  705.  
  706. 10-18-93
  707.  
  708. I've fixed the Volume command so that a disk with no volume name works
  709. correctly. I also made the Volume command setable so that you can set
  710. the Volume as well as read it.
  711.  
  712. I also made the FileAttr command setable so that you can set file
  713. attributes as well as read them.
  714.  
  715. I did some serious reworking of PickOne and PickMany so that they are
  716. smarter than they were. Both are fully reenterant now so if you are in a
  717. PickMany and you use a KeyEvent to call up another PickMany it still
  718. works.
  719.  
  720. New Commands:
  721.  
  722. PickManyFlags : Array
  723. PickManyFlags is an array that PickMany creates in real time indicating
  724. which items are picked. The array is an array of boolean values
  725. (True/False) that has the same number of elements as the array you are
  726. picking from. Every element that is picked is set to true in the same
  727. position in the PickManyFlags array.
  728.  
  729. Since updating is done in real time a KeyEvent or background task can
  730. monitor this array and read which elements of the array are being
  731. selected. You could pop up another window that listed those elements
  732. already selected.
  733.  
  734.  
  735. PickRedisplay
  736. PickRedisplay sets a flag for PickOne or PickMany to redisplay the
  737. choices in the array. If a KeyEvent were to alter the contents of an
  738. array that is currently being picked, this commant would force a
  739. redisplay the that the user sees the changes.
  740.  
  741. PickOne and PickMany automatically detect and redisply the array if the
  742. number of elements of the array changes.
  743.  
  744. ===============================================================
  745.  
  746. Version 2.46
  747.  
  748. 10-25-93
  749.  
  750. Working on breaking the 64k barrier for MRX files. MRX code is still
  751. limited to 64k but I've moved the space used by strings out of the code.
  752. This allows for 64k of code and 64k of string space. Most MRX files are
  753. about one third strings so this will allow MRX files to be significantly
  754. bigger than they were.
  755.  
  756.  
  757. 10-29-93
  758.  
  759. EatKbdChar (On/Off)
  760. EatKbdChar controls the behavior of WaitOrKbdReady. If it is On
  761. (default) and a key is pressed the character will be absorbed from the
  762. keyboard buffer. If it is off the character is left in the buffer.
  763.  
  764.  
  765. FormatNum (Real,Format) : String
  766. Form converts a real number to a string in a specific format which is
  767. controlled by a format string. The characters of the string control the
  768. decimal places, size of the string, and money signs.
  769.  
  770.  #  A digit position, blank if not available.
  771.  *  A digit position, fill with asterisk if not available.
  772.  @  A digit position, fill with zero if not available.
  773.  $  A digit position, activating a floating dollar sign.
  774.  -  A sign position, needed if * or @ digits used exclusively.
  775.  +  A sign position, shows '+' for positive numbers as well.
  776.  ,  A decimal comma or a separator comma.
  777.  .  A decimal period or a separator period.
  778.  
  779.  Example:
  780.    Writeln FormatNum(Pi,'#.#####')  ;returns 3.14159
  781.  
  782.  
  783. Beginning to add the ability to access dBase files.
  784.  
  785. DbOpen (FileName) : Handle
  786. DbOpen opens a dBase file and returns a file handle. The file handle is
  787. used to access the data file with all other dBase commands. If you don't
  788. specify a file extension the extension '.DBF' is assumed.
  789.  
  790.  Example:
  791.    Handle = DbOpen 'MAILLIST.DBF'
  792.  
  793.  
  794. DbFields (Handle,Fields)
  795. DbFields reads the list of dBase fields into a 2 dimensional array. The
  796. fields are as follows:
  797.  
  798.  1 - Name
  799.  2 - Type
  800.  3 - Length
  801.  4 - Decimal Position
  802.  
  803.  Example:
  804.    var Handle Fields
  805.    Handle = DbOpen 'MAILLIST.DBF'
  806.    DbFields(Handle,Fields)
  807.  
  808.    loop Fields
  809.       loop LoopVal
  810.          Write LoopVal ' '
  811.       endloop
  812.       Writeln
  813.    endloop
  814.  
  815.  Field Types:
  816.    C - Character
  817.    D - Date
  818.    N - Number
  819.    L - Logical (True/False)
  820.  
  821. DbCreateFile (Name,Fields)
  822. DbCreateFile creates an empty dBase file. The Fields parameter is a 2
  823. dimensional array that specifies the field structure. The field
  824. structure of the array is as follows:
  825.  
  826.  1 - Name
  827.  2 - Type
  828.  3 - Length
  829.  4 - Decimal Position
  830.  
  831.  Example:
  832.    var Fields
  833.    Fields[1] = Set['Name','C',35,0]
  834.    Fields[2] = Set['Age','N',3,0]
  835.    DbCreateFile('AGE.DBF',Fields)
  836.  
  837.  
  838. DbRecords (Handle) : Number
  839. DbRecords return the number of records in a dBase file.
  840.  
  841.  
  842. DbRecLen (Handle) : Number
  843. DbRecLen return the record size in a dBase file.
  844.  
  845.  
  846. DbGetRecord (Handle,Record,Data)
  847. DbGetRecord reads a specific physical record from a dBase file into
  848. array Data. It sets a variable DbDeleted to true if the record is
  849. deleted. Error status information is returned in the variable
  850. FileResult. If FileResult returns 5, the record is locked.
  851.  
  852.  Example:
  853.    Handle = DbOpen 'MAILLIST.DBF'
  854.    DbGetRecord(Handle,1,Data)
  855.    loop Data
  856.       Write LoopVal ' '        ;writes the first record
  857.    endloop
  858.    Writeln
  859.    DbClose(Handle)
  860.  
  861.  
  862. DbClose (Handle)
  863. DbClose closes a dBase file.
  864.  
  865.  
  866. DbDeleted : Boolean
  867. After a DbGetRecord, DbDeleted returns True if the record was deleted.
  868.  
  869.  Example:
  870.    Handle = DbOpen 'MAILLIST.DBF'
  871.    DbGetRecord(Handle,33,Data)
  872.    if DbDeleted then Writeln 'Record 1 is Deleted'
  873.  
  874.  
  875. 11-01-93
  876.  
  877. DbWriteRecord (Handle,Record,Data) DbWriteRecord writes a physical
  878. record into a dBase file from Data at location Record. Error status
  879. information is returned in the variable FileResult. If FileResult
  880. returns 5, the record is locked.
  881.  
  882. MarxMenu automatically sets file locks while writing to a record so that
  883. it prevents multiple writes to the same record when used on a network.
  884.  
  885. If you write a record that is one record past the end of the file, the
  886. record will be appended. If you write beyond the end of the file,
  887. MarxMenu will fill in the gap with empty deleted records.
  888.  
  889.  Example:
  890.    Handle = DbOpen 'MAILLIST.DBF'
  891.    DbWriteRecord(Handle,45,Data)
  892.    DbClose(Handle)
  893.  
  894.  
  895. DbDeleteRecord (Handle,Record)
  896. DbDeleteRecord sets a specified record as deleted. The data in the
  897. record remains and can be set undeleted.
  898.  
  899.  Example:
  900.    Handle = DbOpen 'MAILLIST.DBF'
  901.    DbDeleteRecord(Handle,20)
  902.    DbClose(Handle)
  903.  
  904.  
  905. DbUnDeleteRecord (Handle,Record)
  906. DbUnDeleteRecord sets a specified record as not deleted.
  907.  
  908.  Example:
  909.    Handle = DbOpen 'MAILLIST.DBF'
  910.    DbUnDeleteRecord(Handle,55)
  911.    DbClose(Handle)
  912.  
  913.  
  914. DbLockRecord (Handle,Record)
  915. Sets a file lock on a specified record. If you are accessing multiple
  916. records or multiple files that all have to be updated at once, you might
  917. want to lock them all first before doing the update,
  918.  
  919.  
  920. DbUnLockRecord (Handle,Record)
  921. Removes a file lock on a specified record. If you are accessing multiple
  922. records or multiple files that all have to be updated at once, you might
  923. want to lock them all first before doing the update,
  924.  
  925.  
  926. DbLockFile (Handle)
  927. DbLockFile puts a file lock on the entire dBase file.
  928.  
  929.  
  930. DbUnLockFile (Handle)
  931. DbUnLockFile removes a file lock from the entire dBase file.
  932.  
  933.  
  934. DBaseMode (On/Off)
  935. When MarxMenu reads a dBase record it converts numbers into real
  936. numbers, boolean fields into boolean variables, and truncates spaces
  937. from string variables. DBase programmers, however, like to have all
  938. fields returned as strings with all the spaces included. If DBaseMode is
  939. set to On, MarxMenu returns data as dBase programmers expect.
  940.  
  941.  
  942. PadLeftChar (String,Char,Length) : String
  943. PadLeftChar returns a string that is padded on the left side with the
  944. character Char to a length of Length.
  945.  
  946.  Example:
  947.    St = 'MARC'
  948.    Writeln PadLeftChar(St,'*',8)   ;returns '****MARC'
  949.  
  950.  
  951. PadRightChar (String,Char,Length) : String
  952. PadRightChar returns a string that is padded on the right side with the
  953. character Char to a length of Length.
  954.  
  955.  Example:
  956.    St = 'MARC'
  957.    Writeln PadRightChar(St,'*',8)   ;returns 'MARC****'
  958.  
  959.  
  960. TrimLead (St)
  961. TrimLead trims the leading spaces off of the left side of a string.
  962.  
  963.  Example:
  964.    St = ' MARC '
  965.    TrimLead(St)
  966.    Writeln St      ;returns 'MARC '
  967.  
  968.  
  969. TrimTrail (St)
  970. TrimTrail trims the trailing spaces off of the right side of a string.
  971.  
  972.  Example:
  973.    St = ' MARC '
  974.    TrimTrail(St)
  975.    Writeln St      ;returns ' MARC'
  976.  
  977.  
  978. CharString (Char,Length)
  979. CharString returns a string Length long made of of Char.
  980.  
  981.  Example:
  982.    Writeln CharString ('*',4)  ;returns '****'
  983.  
  984.  
  985. 11-15-93
  986.  
  987. After getting complaints that MARXCOMP is using too much memory, I've
  988. reworked the memory management so that it uses a lot less.
  989.  
  990.  
  991. 11-20-93
  992.  
  993. ComIRQ (ComPort) : Number
  994. ComIRQ returns the interrupt number for the specified com port. It can
  995. also me used to set the interrupt number to a non-standard interrupt.
  996. The interrupt must be set before using ComInitPort.
  997.  
  998.  Example:
  999.    Writeln ComIRQ (Com3)      ; displays the interrupt
  1000.    ComIRQ (Com3) = 5          ; set Com3 to use interrupt 5
  1001.    ComInitPort(38400,8,'N',1) ; Initialize the port
  1002.  
  1003.  
  1004. ComBasePort (ComPort) : Number
  1005. ComBasePort returns the base port address for the specified com port. It
  1006. can also me used to set the base port address to a non-standard base
  1007. port. The base port address must be set before using ComInitPort.
  1008.  
  1009.  Example:
  1010.    Writeln ComBasePort (Com3)      ; displays the base port
  1011.    ComBasePort (Com3) = $4F8       ; set Com3 base port
  1012.    ComInitPort(38400,8,'N',1)      ; Initialize the port
  1013.  
  1014.  
  1015. 11-26-93
  1016.  
  1017. CopyFile (Source,Dest)
  1018. CopyFile copies a file from source to destination. If the destination
  1019. file already exists it will be deleted, even if it is a read-only file.
  1020. On novell networks it takes advantage of the server copy function to
  1021. increase speed. Results are returned in the FileResult variable.
  1022.  
  1023.  Example:
  1024.    CopyFile('MARXMENU.EXE','A:')
  1025.  
  1026.  
  1027. CurrentDrive : String
  1028. Returns the letter of the current drive.
  1029.  
  1030.  Example:
  1031.    Writeln CurrentDrive  ; returns C
  1032.  
  1033.  
  1034. 12-07-93
  1035.  
  1036. ShareInstalled : Boolean
  1037. ShareInstalled returns True if the dos program SHARE is installed.
  1038.  
  1039.  
  1040. AssignInstalled : Boolean
  1041. AssignInstalled returns True if the dos program ASSIGN is installed.
  1042.  
  1043.  
  1044. AppendInstalled : Boolean
  1045. AppendInstalled returns True if the dos program APPEND is installed.
  1046.  
  1047.  
  1048. AnsiInstalled : Boolean
  1049. AnsiInstalled returns True if the ANSI device driver is installed.
  1050.  
  1051.  
  1052. PrintInstalled : Boolean
  1053. PrintInstalled returns True if the dos program PRINT is installed.
  1054.  
  1055.  
  1056. DosKeyInstalled : Boolean
  1057. DosKeyInstalled returns True if the dos program DOSKEY is installed.
  1058.  
  1059.  
  1060. 12-10-93
  1061.  
  1062. Changed NovScanTrusteePath to return the trustees on all volumes of the
  1063. current server. If you had to use a lot of strange tricks to read all
  1064. volumes in the past you can now remove those tricks.
  1065.  
  1066.  
  1067. 12-15-93
  1068.  
  1069. NovLoginType (Connection) : Num
  1070. NovLoginType returns the object type at a specific connection number.
  1071.  
  1072.  Example:
  1073.    Writeln NovLoginType(1)    ;returns the object type on connection 1
  1074.  
  1075.  
  1076. NovConnectionInfo (2D Array)
  1077. NovConnectionInfo reads all the connections and gathers a variety of
  1078. information about each connection into a two dimensional array. This
  1079. fields of this array include:
  1080.  
  1081.  1 - Connection Number
  1082.  2 - Connection Name
  1083.  3 - Connection Station Address
  1084.  4 - Connection Object Type
  1085.  5 - Connection Login Time
  1086.  6 - Connection Object Number
  1087.  
  1088.  Example:
  1089.    Var ConInfo
  1090.    NovConnectionInfo ConInfo
  1091.    Loop ConInfo
  1092.       Loop LoopVal
  1093.          Write LoopVal ' '
  1094.       EndLoop
  1095.       Writeln
  1096.    EndLoop
  1097.  
  1098.  
  1099. Unique (Array)
  1100. Unique removes duplicates from a sorted array.
  1101.  
  1102.  Example:
  1103.     Var A
  1104.     A = Set['A','B','B','C']
  1105.     Unique(A)                 ;removes the duplicate 'B'
  1106.  
  1107.  
  1108. 12-17-93
  1109.  
  1110. EchoChar (On/Off)
  1111. When used with Readln, EchoChar controls whether or not characters typed
  1112. in will echo to the screen. Turning EchoChar Off is handy when entering
  1113. a password.
  1114.  
  1115.  Example:
  1116.    var PassW
  1117.    EchoChar Off
  1118.    Write ' Password: '
  1119.    PassW = Readln
  1120.  
  1121.  
  1122. NovNumberOfPrinters
  1123. When using the VLM shells you can specify up to 9 printers. This command
  1124. returns the number of printers your shell will support. With NETX it
  1125. returns 3 printers.
  1126.  
  1127.  Example:
  1128.    if NovNumberOfPrinters = 9
  1129.       NovCaptureQueue(9) = 'DOT'
  1130.    endif
  1131.  
  1132.  
  1133. NovGetRootLevel (Drive) : Number
  1134. NovGetRootLevel returns the number of directories below the fake root
  1135. that the current directory is. Drives with no fake root return 255.
  1136.  
  1137.  Example:
  1138.    The current directory is H:\LETTERS, but H: is mapped to the
  1139.    directory: TYME/SYS:HOME\MARC.
  1140.  
  1141.    Writeln NovGetRootLevel('H')  ;returns 1
  1142.  
  1143. ===============================================================
  1144.  
  1145. Version 2.47
  1146.  
  1147. 01-10-94
  1148.  
  1149. Linked in a new updated communications library, APRO 2.0. Besides
  1150. working better, I can now do more things with it. One new advance is
  1151. that MarxMenu now supports Compuserve B+ uploads and downloads.
  1152. Compuserve B+ is fully automatic and requires no aditional commands to
  1153. make it work. You just log onto Compuserve with it and start a file
  1154. transfer and the MarxMenu end just handles it.
  1155.  
  1156.  
  1157. 02-01-94
  1158. Made the string to date conversion smarter. Now you can pass a string
  1159. '020194' and get 02-01-94.
  1160.  
  1161.  
  1162. 02-02-94
  1163.  
  1164. PosInListLeft (String,Array) : Number
  1165. PosInListLeft is similar to the PosInList command. It searches a string
  1166. array for a matching string and returns the line number of the first
  1167. match. Unlike PosInList which compares the whole string, PosInListLeft
  1168. will find the first string that starts with the search string.
  1169.  
  1170. The difference between PosInListPartial and PosInListLeft is that
  1171. PosInListPartial will match anywhere in the string, and PosInListLeft
  1172. will match only if the string start with the search string.
  1173.  
  1174.  Example:
  1175.    var List
  1176.    List[1] = 'Date=09-20-93'
  1177.    List[2] = 'Time=10:18'
  1178.    List[3] = 'Name=Marc'
  1179.    Writeln PosInListPartial('Name=',List)  ; returns 3
  1180.  
  1181. ===============================================================
  1182.  
  1183. Version 2.48
  1184.  
  1185. 02-06-94
  1186.  
  1187. I'm working on better ways to deal with memory when using MarxMenu to
  1188. log into the network. One of the things I want to accomplish is for
  1189. MarxMenu to be able to execute LOGIN.EXE. This is very nasty and I think
  1190. I have it. But, I bumped the version number up because of these changes.
  1191. If you have problems with NovLogin, let me know. If you use MarxMenu to
  1192. log in to Netware, keep a copy of an earlier version handy in case this
  1193. doesn't work.
  1194.  
  1195.  
  1196. 02-21-93
  1197.  
  1198. The dispose command will now take multiple parameters on the same line.
  1199.  
  1200.  Example
  1201.    Dispose X Y Z
  1202.  
  1203. The UpperCase command will now take arrays as parameters. All strings in
  1204. the array will become uppercase. Will work with multidimensional arrays.
  1205. Elements that aren't strings are left alone.
  1206.  
  1207.  
  1208. DisposeAll
  1209. DisposeAll does a dispose on all global variables. This can be used to
  1210. reset everything to nothing. Local variables are not affected. So, if
  1211. you want to save something you can copy it to a local variable and copy
  1212. is back when you're done.
  1213.  
  1214.  
  1215. 02-28-94
  1216.  
  1217. I made some improvements in parameter passing to procedures.
  1218.  
  1219. You can pass many parameters and have them concatinated into a single
  1220. string as the real parameter, much the way the parameters of the Writeln
  1221. command work. Numbers passed are converted to strings.
  1222.  
  1223. When you define your procedure, if you have a single parameter whose
  1224. name begins with a "$", MarxMenu will process all parameters passed as a
  1225. single string.
  1226.  
  1227.  Example:
  1228.  
  1229.    Procedure WriteALine ($Line)
  1230.       FileWriteln(OutputFile,Line)
  1231.    EndProc
  1232.  
  1233.    WriteALine DateString ' ' TimeString ' ' Temperature
  1234.  
  1235. In the above example, because WriteALine had the parameter $Line, it
  1236. tells MarxMenu to concatinate all parameters passed to it into a single
  1237. string and put it into the variable Line.
  1238.  
  1239.  
  1240. 03-03-94
  1241.  
  1242. ReadlnTimeout (Seconds)
  1243. ReadlnTimeout is set to control the number of seconds a Readln or
  1244. Readkey will wait for input before timing out.
  1245.  
  1246. If a timeout occurs, LastKey will be set to char(255).
  1247.  
  1248.  Example:
  1249.     ReadlnTimeout = 5
  1250.     Line = Readln
  1251.  
  1252.  
  1253. 03-04-94
  1254.  
  1255. I've added swaping ability to the Execute command. When Swapping is set
  1256. to On, MarxMenu will swap itself out to EMS, XMS or disk reducing it's
  1257. memory footprint to about 5k of ram. If MarxMenu uses a disk file, the
  1258. file name is the same as the temporary batch file name with the
  1259. extension SWP.
  1260.  
  1261.  
  1262. Swapping (On/Off)
  1263. If Swapping is set to On, the Execute command will cause MarxMenu to
  1264. swap itself out of memory allowing more ram for the application being
  1265. run.
  1266.  
  1267.  
  1268. 03-07-94
  1269.  
  1270. I've added some new features to the Loop - EndLoop logic.
  1271.  
  1272. You can specify a start and end of the loop:
  1273.  
  1274.  Example:
  1275.    Loop 5 10
  1276.       Writeln LoopIndex
  1277.    EndLoop
  1278.  
  1279. This will loop starting at 5 and ending at 10. If you also specify and
  1280. array variable, you can loop through a section of the array.
  1281.  
  1282.  Example:
  1283.    Loop 3 9 MyArray
  1284.       Writeln LoopVal
  1285.    EndLoop
  1286.  
  1287. In the above example, MarxMenu will write out the loop values for
  1288. elements 3 thru 9 of MyArray.
  1289.  
  1290.  
  1291. StartsWith (String) : Boolean
  1292. StartsWith compares two strings and tests to see if one string starts
  1293. with another string.
  1294.  
  1295.  Example:
  1296.     if IniString StartsWith 'DEVICE='
  1297.        Writeln IniString
  1298.     endif
  1299.  
  1300.  
  1301. ParamsToArray
  1302. The ParamsToArray command allows you to pass any number of parameters to
  1303. a procedure and receive those parameters into a single array.
  1304.  
  1305.  Example:
  1306.    Procedure WriteList (LinesToWrite)
  1307.       ParamsToArray
  1308.       Loop LinesToWrite
  1309.          Writeln LoopVal
  1310.       EndLoop
  1311.    EndProc
  1312.  
  1313.    WriteList ('Line1','Line2','Line3')
  1314.  
  1315.  
  1316. 03-16-94
  1317. ComHangupOnExit
  1318. If ComHangupOnExit is set to On, MarxMenu will hang up the modem
  1319. connection when exiting. If set to Off, MarxMenu will leave the modem
  1320. online when exiting. The default is On.
  1321.  
  1322.  
  1323. 04-07-94
  1324.  
  1325. Added a feature to load the MarxMenu overlays into XMS or EMS memory
  1326. when used to log into a novell network. This helps avoid losing access
  1327. to the MARXMENU.OVR file.
  1328.  
  1329.  
  1330. XmsOverlays
  1331. Loads the MARXMENU.OVR file into XMS memory.
  1332.  
  1333.  
  1334. EmsOverlays
  1335. Loads the MARXMENU.OVR file into EMS memory.
  1336.  
  1337.  
  1338. 04-14-94
  1339.  
  1340. Changed the XMS overlay logic. MarxMenu no longer automatically loads
  1341. overlays into XMS memory in the login directory. You have to add the
  1342. command XMSOverlays or EMSOverlays to make this happen.
  1343.  
  1344. Example:
  1345.    XMSOverlays
  1346.    if not RamOverlay then EmsOverlays
  1347.  
  1348.  
  1349. RamOverlays : Boolean
  1350. Returns true if overlays are loaded into ram by either EMSOverlays or
  1351. XMSOverlays.
  1352.  
  1353.  
  1354. EndsWith (String) : Boolean
  1355. EndsWith compares two strings and tests to see if one string ends with
  1356. another string.
  1357.  
  1358.  Example:
  1359.     if IniString EndsWith 'NO'
  1360.        Writeln IniString
  1361.     endif
  1362.  
  1363.  
  1364. 05-01-94
  1365.  
  1366. ResultsInK (On/Off)
  1367. Normally the value returned by TotalDiskSpace and other similar disk
  1368. functions are returned in bytes. When ResultsInK is set to true the
  1369. values return are in K (1024 bytes). This allows you to show the total
  1370. disk space on drives larger than 2 gigabytes.
  1371.  
  1372.  Example:
  1373.    ResultsInK
  1374.    Writeln FreeDiskSpace('.') / 977 ' Mb' ;1,000,000 / 1024 = 997
  1375.  
  1376. InitialCursorPos (Byte)
  1377. When inputting a string using Readln, MarxMenu positions the cursor at
  1378. the beginning of the string if the InputString variavle is set. You can
  1379. override this by setting InitialCursorPos to a value other than 1.
  1380. InitialCursorPos can be set to a value beyond the end of the string.
  1381. After input, InitialCursorPos is set back to 1.
  1382.  
  1383.  Example:
  1384.     InputString = '1234'
  1385.     InitialCursorPos = 3                       ;starts at 3rd character
  1386.     InitialCursorPos = Length(InputString) + 1 ;starts at end of string
  1387.     St = Readln
  1388.  
  1389.  
  1390. ClearIfNewInput (On/Off)
  1391. If ClearIfNewInput is set to True, then the string set by InputString
  1392. will only be the start of the new input if the first character typed is
  1393. an arrow key. Otherwise the InputString is cleared to blank.
  1394.  
  1395.  Example:
  1396.     InputString = '1234'
  1397.     ClearIfNewInput On
  1398.     St = Readln
  1399.  
  1400.  
  1401. WindowsLoaded : Boolean
  1402. Returns True if MarxMenu is being run under Microsoft Windows. The
  1403. virtual machine number can be read in the TaskNumber variable.
  1404.  
  1405.  
  1406. CarouselLoadedLoaded : Boolean
  1407. Returns True if the task swapper, Software Carousel is loaded. The
  1408. Carousel task number can be read in the TaskNumber variable.
  1409.  
  1410.  
  1411. 05-11-94
  1412.  
  1413. NovLongMachineName : String
  1414. NovLongMachineName returns the long machine name from the shell.
  1415.  
  1416.  
  1417. NovShortMachineName : String
  1418. NovShortMachineName returns the short machine name from the shell.
  1419.  
  1420.  
  1421. NovCaptureBanner (String)
  1422. NovCaptureBanner sets the banner name to be printed with print jobs. You
  1423. can't specify a different user name for each LPT device. If the banner
  1424. is set to an empty string then the users login name is used for the
  1425. banner.
  1426.  
  1427.  Example:
  1428.     NovCaptureBanner = 'Beavis'
  1429.  
  1430. ===============================================================
  1431.  
  1432. Version 2.49
  1433.  
  1434. 06-24-94
  1435.  
  1436. LeftOfEqual (String) : String
  1437. LeftOfEqual returns that part of the string that is left of the equal
  1438. character (includes the equal character itself) and with the leading
  1439. spaces trimmed off.
  1440.  
  1441.  Example:
  1442.    Writeln LeftOfEqual('Device=VIPX.386')  ;returns 'Device='
  1443.  
  1444.  
  1445. RightOfEqual (String) : String
  1446. RightOfEqual return that part of the string that is right of the equal
  1447. character (not including the equal character itself) and with trailing
  1448. spaces trimmed off.
  1449.  
  1450.  Example:
  1451.    Writeln RightOfEqual('Device=VIPX.386')  ;returns 'VIPX.386'
  1452.  
  1453.  
  1454. EraseWinAfterOvr (On/Off)
  1455. After an overlay executes, MarxMenu by default erases all the windows
  1456. the overlay created. If you don't want MarxMenu to erase these windows,
  1457. set EraseWinAfterOvr to Off.
  1458.  
  1459.  
  1460. 06-30-94
  1461.  
  1462. NovPasswordInterval (User) : Num
  1463. NovPasswordInterval returns the number of days between forced
  1464. password changes. if the user name is left off, the current user is
  1465. assumed. This command can also be used to set this value.
  1466.  
  1467.  Example:
  1468.    NovPasswordInterval('MARC') = 50       ;sets to 50
  1469.    Writeln NovPasswordInterval('MARC')    ;writes 50
  1470.  
  1471.  
  1472. 07-27-94
  1473. DosBusy (Num)
  1474. Increments (or decrements) the Dos Busy flag by the number passed. This
  1475. can be used to prevent TSRs from taking action by signaling that Dos is
  1476. busy.
  1477.  
  1478.  Example:
  1479.     DosBusy(1)
  1480.     ;-Critical Section
  1481.     DosBusy(-1)
  1482.  
  1483.  
  1484. 08-11-94
  1485. SemAttachTo (String)
  1486. Novell Semahpores work by finding a TSR in memory and attaching the
  1487. semaphore to it. Normally it attaches to the first TSR, but if
  1488. SemAttachTo is set it will attach to a specific TSR. If SemAttachTo is
  1489. empty it will be set to the name of the TSR that MarxMenu uses to attach
  1490. the Semaphore. That way you can read it's value.
  1491.  
  1492.  Example:
  1493.    SemAttachTo = 'LSL'
  1494.  
  1495.  
  1496. 08-19-94
  1497.  
  1498. NovMapRoot now works on local drives as well as network drives. It works
  1499. like the dos SUBST command.
  1500.  
  1501.  
  1502. 08-26-94
  1503. Well, I'm finally documenting the Hash functions I added about 2 months
  1504. ago and been using in INITYME.
  1505.  
  1506. Hash (String)
  1507. Hashing strings is a very fast way to find a string in a list of
  1508. strings. It is much faster than a binary search. In MarxMenu, I've
  1509. implemented hashing in a way that is very innovative. What I do is to
  1510. associate a hashed string with a MarxMenu variable that is dynamically
  1511. allocated. The string becomes the key to access the variable for either
  1512. reading or writing.
  1513.  
  1514.  Example:
  1515.    Hash('AGE') = 21
  1516.    Hash('HAIR') = 'Brown'
  1517.    Writeln Hash('AGE')       ;returns 21
  1518.    Writeln Hash('HAIR')      ;returns 'Brown'
  1519.  
  1520. In the above example, a variable accessed by Hash('AGE') is created and
  1521. set to the value 21. Like any other variable it can be read or
  1522. overwritten with a new value. What is happening here is that we are
  1523. giving MarxMenu variables a name, which is a string they can be accessed
  1524. by for either read or write. This allow you to build applications that
  1525. data and procedures can be accessed through their own vocabulary that
  1526. you create.
  1527.  
  1528.  
  1529. HashLevel : Number
  1530. HashLevel is a number that allows you to segment strings into separate
  1531. categories for the purpose of later disposing of a group of strings by
  1532. level number. HashLevel defaults to 1. All hashed variable names are
  1533. tagged with the current value of HashLevel.
  1534.  
  1535.  Example:
  1536.    HashLevel = 2
  1537.  
  1538.  
  1539. HashDispose (String)
  1540. HashDispose allows you to remove a name from the hash dictionary and
  1541. dispose of the value associated with that name.
  1542.  
  1543.  Example:
  1544.    HashDispose('AGE')
  1545.  
  1546.  
  1547. HashDisposeLevel (Number)
  1548. HashDisposeLevel is used to dispose of all hash variable names created
  1549. with a specific hash level. This allows you to create classes of named
  1550. variables and get rid of a specific class in one step.
  1551.  
  1552.  Example:
  1553.    HashDispose(5)   ;disposes all names created with HashLevel 5
  1554.  
  1555.  
  1556. HashDisposeAll
  1557. HashDisposeAll removes all names from the hash dictionary and disposes
  1558. all associated variables.
  1559.  
  1560.  
  1561. HashLib (Array,Level)
  1562. HashLib returns the list of all know hash names in the hash dictionary
  1563. associated with a specific hash level. If level 0 is passed, all names
  1564. are returned.
  1565.  
  1566.  Example:
  1567.    Var Lib
  1568.    HashLib(Lib,0)
  1569.    Loop Lib
  1570.       Writeln LoopVal
  1571.    EndLoop
  1572.  
  1573.  
  1574. 08-30-94
  1575.  
  1576. OldKbdBuffer : String
  1577. When MarxMenu loads it clears the keyboard buffer of any characters left
  1578. from the previous application. However, there are some applications that
  1579. chain from one part to another by stuffing the keyboard buffer and
  1580. exiting to dos. These applications are difficult to run from menu
  1581. systems.
  1582.  
  1583. So, when MarxMenu clears the buffer, it stores the buffer and it can be
  1584. read by OldKbdBuffer. This allows you to execute other programs based on
  1585. what was left in the buffer.
  1586.  
  1587.  Example:
  1588.    if OldKbdBuffer > ''
  1589.       Bat OldKbdBuffer
  1590.       ExitMenu
  1591.    endif
  1592.  
  1593.  
  1594. 09-01-94
  1595.  
  1596. Substitute (String,Old,New)
  1597. Substitute wiil scan a string to see if it contains the substring Old
  1598. and replace it with New. If UpperCaseCompare is set to True then case is
  1599. ignored in the comparison.
  1600.  
  1601.  Example:
  1602.    Var St
  1603.    St = 'ABCDEFABC'
  1604.    Substitute(St,'ABC','XX')
  1605.    Writeln St                   ;returns XXDEFXX
  1606.  
  1607.  
  1608. 09-07-94
  1609.  
  1610. InterpretCounter : Number
  1611. InterpretCounter is a number that is incremented by 1 every time you
  1612. execute NextWord. This allows you to tell which word in a string that
  1613. you are on.
  1614.  
  1615.  Example:
  1616.    if InterpretCounter = 1
  1617.       ...
  1618.    else
  1619.       ...
  1620.    endif
  1621.  
  1622.  
  1623. NilProgram
  1624.  
  1625. Normally, if you use the Run command on a Nil value, it does nothing.
  1626. However, if you set NilProgram to the Loc of a procedure then it will
  1627. run that procedure instead. This is used if you are writing an
  1628. interpreter in MarxMenu and you want to deal with a "command not found"
  1629. type error.
  1630.  
  1631.  Example:
  1632.    NilProgram = Loc BadCommandError
  1633.  
  1634.  
  1635. 09-15-94
  1636.  
  1637. Contains
  1638. Returns True if the first string contains the second string.
  1639.  
  1640.  Example:
  1641.    if 'ABCD' contains 'BC'
  1642.  
  1643.  
  1644. 10-12-94
  1645.  
  1646. NewOverlayName (FileName)
  1647. NewOverlayName closes the overlay file and reopens a new overlay file.
  1648. This is used if you are in the Novell LOGIN directory and yo want to
  1649. change servers and drive mappings and attach to the MARXMENU.OVR file on
  1650. a different server.
  1651.  
  1652. This command does nothing if EmsOverlays or XmsOverlays are used.
  1653.  
  1654.  Example:
  1655.    NewOverlayName('Z:\LOGIN\MARXMENU.OVR')
  1656.  
  1657.  
  1658. 10-14-94
  1659. DefaultExtension (FileName,Extension) : FileName
  1660. DefaultExtension returns the filename with the Extension appended to it
  1661. if the FileName doesn't already have an extension.
  1662.  
  1663.  Example:
  1664.    St = 'WIN'
  1665.    Writeln DefaultExtension(St,'INI')   ;returns WIN.INI
  1666.  
  1667.  
  1668. 10-19-94
  1669.  
  1670. Under Netware, the FixPath command will now set the Novell search drive
  1671. table.
  1672.  
  1673.  
  1674. 11-03-94
  1675.  
  1676. All Novell bindery commands now support passing SERVER/OBJECT for the
  1677. object name.
  1678.  
  1679.  
  1680. 11-17-94
  1681.  
  1682. InputRedirected : Boolean
  1683. InputRedirected returns True if you are using the dos piping commands to
  1684. pipe output into MarxMenu.
  1685.  
  1686.  
  1687. OutputRedirected : Boolean
  1688. OutputRedirected returns True if you are using the dos piping commands to
  1689. pipe output from MarxMenu into a file or another program.
  1690.  
  1691. ===============================================================
  1692.  
  1693. Version 2.50
  1694.  
  1695. 11-25-94
  1696.  
  1697. #Define (Name)
  1698. MarxMenu supports conditional compilation. This allows you to hide or
  1699. unhide sections of code from MarxComp based on defining key control
  1700. words using the #Define command. Defining a name sets it to true and
  1701. this lets you control what code the MarxMenu compiler sees when it is
  1702. compiling your menu. Multiple names can be defined on one line.
  1703.  
  1704. See #Define in the manual for details.
  1705.  
  1706.  
  1707. 02-13-95
  1708.  
  1709. NovShellLoaded : Boolean
  1710.  
  1711. Returns True if the Novell shell (NetX or VLM) is in memory.
  1712.  
  1713.  
  1714. 03-13-95
  1715.  
  1716. NovUserPassword (User,Password) : Boolean
  1717. NovUserPassword returns True if the Password is correct for the User.
  1718.  
  1719.  Example:
  1720.    if NovUserPassword('MARC','SECRET') then Writeln 'Got it!'
  1721.  
  1722.  
  1723. 04-03-95
  1724.  
  1725. NovAccountExpDate and NovPasswordExpDate are now writeable.
  1726.  
  1727. NovAccountDisabled (User) : Boolean
  1728. NovAccountDisabled returns True if the users account is disabled. It can
  1729. also be used to disable a users account. If no user is specified, the
  1730. current user is assumed.
  1731.  
  1732.  Example:
  1733.    Writeln NovAccountDisabled('MARC')
  1734.    NovAccountDisabled('MARC') = True
  1735.  
  1736.  
  1737.  
  1738. NovCaptureIgnoreTabs (Port) : Boolean
  1739. NovCaptureIgnoreTabs reads or sets the printer Tabs and control
  1740. character processing of a particular port.
  1741.  
  1742.  Example:
  1743.    NovCaptureIgnoreTabs (2) On       ;Sets LPT2 Ignore Tabs to On
  1744.    Writeln NovCaptureIgnoreTabs (2)  ;displays Ignore Tabs setting on LPT2
  1745.  
  1746.  
  1747. NovCaptureNotify (Port) : Boolean
  1748. NovCaptureNotify reads or sets the Notify function of a particular port.
  1749.  
  1750.  Example:
  1751.    NovCaptureNotify (2) On       ;Sets LPT2 Notify to On
  1752.    Writeln NovCaptureNotify (2)  ;displays Notify setting on LPT2
  1753.  
  1754.  
  1755. 04-11-95
  1756.  
  1757. FreeXMS : Number
  1758. FreeXMS returns the number of bytes of free XMS memory.
  1759.  
  1760.  
  1761. 05-09-95
  1762. NovConOpenFiles (Array,Connection)
  1763.  
  1764. Returns a list of files that the Connection number has open in Novell
  1765. filename format.
  1766.  
  1767.  Example:
  1768.    var Files
  1769.    NovConOpenFiles(Files,1)  ;connection 1
  1770.    Loop Files
  1771.       Writeln LoopVal
  1772.    EndLoop
  1773.  
  1774.  
  1775. ===============================================================
  1776.  
  1777. Version 2.51
  1778.  
  1779. 08-02-95
  1780.  
  1781. NovConOpenFilesEx (2dArray,Connection)
  1782.  
  1783. NovConOpenFilesEx returns extended information about all the files a
  1784. connection has open. It returns a 2 dimensional array listing the files
  1785. open by a connection and access information about those files. The
  1786. information about the files is as follows:
  1787.  
  1788.  [1] - File Name
  1789.  [2] - Access Control
  1790.  [3] - Lock Type
  1791.  [4] - Task Number
  1792.  
  1793. Access Control bits are as follows:
  1794.  
  1795.  0 - Open for Read
  1796.  1 - Open for Write
  1797.  2 - Deny Read
  1798.  3 - Deny Write
  1799.  4 - File Detached
  1800.  5 - TTS Holding Detach
  1801.  6 - TTS Holdomg Open
  1802.  
  1803. Lock Type Bit Flags
  1804.  
  1805.  0 - Locked
  1806.  1 - Open Sharable
  1807.  2 - Logged
  1808.  3 - Open Normal
  1809.  6 - TTS Holding Lock
  1810.  7 - Transaction Flag
  1811.  
  1812.  Example:
  1813.    var Files
  1814.    NovConOpenFiles(Files,1)  ;connection 1
  1815.    Loop Files
  1816.       Writeln 'Name='   LoopVal[1]
  1817.       Writeln 'Access=' LoopVal[2]
  1818.       Writeln 'Lock='   LoopVal[3]
  1819.       Writeln 'Task='   LoopVal[4]
  1820.       Writeln
  1821.    EndLoop
  1822.  
  1823.