$! ------------------ CUT HERE ----------------------- $ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))' $! $! This archive created: $! Name : OMI-V2_3 $! By : oscar $! Date : 2-JUL-2004 12:46:01.34 $! Using: VMS_SHARE 8.5-1, (C) 1993 Andy Harper, Kings College London UK $! $! Credit is due to these people for their original ideas: $! James Gray, Michael Bednarek $! $! To unpack this archive: $! Minimum of VMS 4.4 (VAX) / OpenVMS 1.0 (Alpha) is required. $! Remove the headers of the first part, up to `cut here' line. $! Execute file as a command procedure. $! $! The following file(s) will be created after unpacking: $! 1. [.OMI-V2_3]EDIT_ELEMENT.OMI;1 $! 2. [.OMI-V2_3]FREEWARE_README.TXT;1 $! 3. [.OMI-V2_3]HISTORY.TXT;1 $! 4. [.OMI-V2_3]LIST_FILES.OMI;1 $! 5. [.OMI-V2_3]MGT$CHECK_FACIL.OMI;1 $! 6. [.OMI-V2_3]MGT$CHECK_IDENT.OMI;1 $! 7. [.OMI-V2_3]MGT$LIST_FACIL.OMI;1 $! 8. [.OMI-V2_3]MGT$MESSAGE.OMI;1 $! 9. [.OMI-V2_3]MGT$NEW_MENU_FILE.OMI;1 $! 10. [.OMI-V2_3]MGT$WRITE_MENU_FILE.OMI;1 $! 11. [.OMI-V2_3]OMI$BACKGROUND_MODULE.MNU;1 $! 12. [.OMI-V2_3]OMI$BACKGROUND_MODULE.OMI;1 $! 13. [.OMI-V2_3]OMI$CALCULATOR.COM;1 $! 14. [.OMI-V2_3]OMI$CALLING_MODULES.HLP;1 $! 15. [.OMI-V2_3]OMI$COMMANDS.HLP;1 $! 16. [.OMI-V2_3]OMI$CONFIG.COM;1 $! 17. [.OMI-V2_3]OMI$CONFIG_FILE.HLP;1 $! 18. [.OMI-V2_3]OMI$EDIT_CMD.COM;1 $! 19. [.OMI-V2_3]OMI$EXAMPLE.MNU;1 $! 20. [.OMI-V2_3]OMI$EXAMPLE.OMI;1 $! 21. [.OMI-V2_3]OMI$INSTALL.COM;1 $! 22. [.OMI-V2_3]OMI$LIBRARY.OML;1 $! 23. [.OMI-V2_3]OMI$LOGICALS.HLP;1 $! 24. [.OMI-V2_3]OMI$MANAGE.MNU;1 $! 25. [.OMI-V2_3]OMI$MANAGE.OMH;1 $! 26. [.OMI-V2_3]OMI$MANAGE.OMI;1 $! 27. [.OMI-V2_3]OMI$MENU.CFG;1 $! 28. [.OMI-V2_3]OMI$MENU.COM;1 $! 29. [.OMI-V2_3]OMI$MENU.HLP;1 $! 30. [.OMI-V2_3]OMI$MENU_FILE.HLP;1 $! 31. [.OMI-V2_3]OMI$MESSAGES.DAT;1 $! 32. [.OMI-V2_3]OMI$SCREEN.COM;1 $! 33. [.OMI-V2_3]OMI$TOOLBOX.COM;1 $! 34. [.OMI-V2_3]OMI$TOOLBOX.INI;1 $! 35. [.OMI-V2_3]OMI$USER_INSTALL.COM;1 $! 36. [.OMI-V2_3]OMIMGT$MESSAGES.DAT;1 $! 37. [.OMI-V2_3]OMI_MODULE.TEMPLATE;1 $! 38. [.OMI-V2_3]README.TXT;1 $! 39. [.OMI-V2_3]SCREEN132.OMI;1 $! 40. [.OMI-V2_3]SCREEN80.OMI;1 $! 41. [.OMI-V2_3]TYPE_FILE.OMI;1 $! $ set="set" $ set symbol/scope=(nolocal,noglobal) $ f="SYS$SCRATCH:."+f$getjpi("","PID")+";" $ if f$trnlnm("SHARE_UNPACK") .nes. "" then $ - f=f$parse("SHARE_UNPACK_TEMP",f) $ e="write sys$error ""%UNPACK"", " $ w="write sys$output ""%UNPACK"", " $ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!" $ if f$getsyi("CPU") .gt. 127 then $ goto start $ ve=f$getsyi("version") $ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start $ e "-E-OLDVER, Must run at least VMS 4.4" $ v=f$verify(v) $ exit 44 $unpack:subroutine!P1=file,P2=chksum,P3=attrib,P4=size,P5=fileno,P6=filetotal $ if f$parse(P1) .nes. "" then $ goto dirok $ dn=f$parse(P1,,,"DIRECTORY") $ w "-I-CREDIR, Creating directory ''dn'" $ create/dir 'dn' $ if $status then $ goto dirok $ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped" $ delete 'f'* $ exit $dirok: $ x=f$search(P1) $ if x .eqs. "" then $ goto file_absent $ e "-W-EXISTS, File ''P1' exists. Skipped" $ delete 'f'* $ exit $file_absent: $ w "-I-UNPACK, Unpacking ", P5, " of ", P6, " - ", P1, " - ", P4, " Blocks" $ n=P1 $ if P3 .nes. "" then $ n=f $ if .not. f$verify() then $ define/user sys$output nl: $ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT/NOJOURNAL 'f'/OUT='n' PROCEDURE GetHex(s,p)LOCAL x1,x2;x1:=INDEX(t,SUBSTR(s,p,1))-1;x2:=INDEX(t, SUBSTR(s,p+1,1))-1;RETURN 16*x1+x2;ENDPROCEDURE;PROCEDURE SkipPartsep LOCAL m; LOOP m:=MARK(NONE);EXITIF m=END_OF(CURRENT_BUFFER);DELETE(m);EXITIF INDEX( ERASE_LINE,"-+-+-+-+-+-+-+-+")=1;ENDLOOP;ENDPROCEDURE; PROCEDURE ProcessLine LOCAL c,s,l,b,n,p;s := ERASE_LINE;c := SUBSTR(s,1,1);s := s-c;IF c = "X" THEN SPLIT_LINE; ENDIF;MOVE_HORIZONTAL(-1);l := LENGTH(s);p := 1;LOOP EXITIF p > l;c := SUBSTR(s,p,1);p := p+1;CASE c FROM ' ' TO '`' ['\'] : b:=GetHex(s,p); n:=GetHex(s,p+2); p:=p+4; COPY_TEXT( SUBSTR(CURRENT_LINE, CURRENT_OFFSET-b+1,n));['&']: b:=GetHex(s,p); n:=GetHex(s,p+2); p:=p+4; COPY_TEXT(ASCII(n)*b);['`']: COPY_TEXT(ASCII(GetHex(s,p))); p:=p+2;[' ']: p:= p+1;[INRANGE,OUTRANGE]: COPY_TEXT(c);ENDCASE;ENDLOOP;ENDPROCEDURE; PROCEDURE Decode(b)LOCAL m;POSITION(BEGINNING_OF(b));LOOP m:=MARK(NONE); EXITIF m=END_OF(b);DELETE(m);IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")= 1 THEN SkipPartSep;ELSE ProcessLine;MOVE_HORIZONTAL(1);ENDIF;ENDLOOP; ENDPROCEDURE;SET(FACILITY_NAME,"UNPACK");SET(SUCCESS,OFF);SET(INFORMATIONAL, OFF);t:="0123456789ABCDEF";f:=GET_INFO(COMMAND_LINE,"file_name");o:= CREATE_BUFFER(f,f);Decode(o);WRITE_FILE(o,GET_INFO(COMMAND_LINE,"output_file")) ;QUIT; $ if p3 .eqs. "" then $ goto dl $ open/write fdl &f $ write fdl "RECORD" $ write fdl P3 $ close fdl $ w "-I-CONVRFM, Converting record format to ", P3 $ convert/fdl='f' 'f'-1 'f' $ fa=f$getdvi(f$parse(f),"ALLDEVNAM") $ Pa=f$getdvi(f$parse(P1),"ALLDEVNAM") $ if fa .eqs. Pa then $ rename &f 'f$parse(P1)' $ if fa .nes. Pa then $ copy &f 'f$parse(P1)' $dl: delete 'f'* $ checksum 'P1' $ if checksum$checksum .nes. P2 then $ - e "-E-CHKSMFAIL, Checksum of ''P1' failed." $ exit $ endsubroutine $start: $! $ create 'f' X$`09goto`20start$ X$! X$!********\0808\1010\2020\400E X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220MODULE`20NAME:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220Edit_Element.Omi\1606\1C06\0C0C\1818\4606* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220CALLED`20BY:&0420&0420\0808\1010\201E* X$!*`20`20&0220==========&0420&0420\0808\1010\201E* X$!*`20`20&0220&0220Omi$Edit_Cmd.Com\1606\1C06\0C0C\1818\4606* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220DESCRIPTION:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220This`20is`20the`20On_Exit`20module`20for`20the`20on-the-fly V`20menu`20called`20by`20\4306&0320* X$!*`20`20&0220&0220the`20EDIT`20ELEMENT`20command.`20It`20calls`20Omi$Config.C Vom`20to`20write`20an\4306&0320* X$!*`20`20&0220&0220update`20to`20the`20menu`20file`20\1E06\0707\0E0E\1C13* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!********\0808\1010\2020\400E X$! X$`20start$: X$! X$`09if`20f$type(edit_elem_inptype)`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20f$edit(f$extract(0,`203,`20edit_elem_inptype),`20"upcase")`20.eqs. V`20"SEL"`20then`20- X`09`09`20`20`20$`20edit_element_p2`20=`20"`7BSEL`7C''\1A09_lstname'`7D\150Cvar Vname'" X$`09`09if`20f$edit(f$extract(0,`203,`20edit_elem_inptype),`20"upcase")`20.eqs. V`20"TAG"`20then`20- X`09`09`20`20`20$`20edit_element_p2`20=`20"`7BTAG`7C''\1A09_lstname'`7D\150Cvar Vname'" X$`09`09if`20f$edit(f$extract(0,`203,`20edit_elem_inptype),`20"upcase")`20.eqs. V`20"STR"`20then`20- X`09`09`20`20`20$`20edit_element_p2`20=`20"''\1509_varname'" X$`09endif X$! X$`09_new_value`20=`20"''edit_element_p1'#\13102'#" X$`09if`20f$type(edit_element_p3)`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20edit_element_p3`20.nes.`20""`20then`20$`20_new_value`20=\0D0C+`20- V X`09`09`20`20`20"''edit_element_p3'" X$`09endif X$`09if`20f$type(edit_element_p4)`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20edit_element_p4`20.nes.`20""`20then`20$`20_new_value`20=\0D0C+`20- V X`09`09`20`20`20"#''edit_element_p4'" X$`09endif X$! X$`09omi$current_menu`20=`20omi$saved_\190D`20!`20Use`20the`20saved`20name,`20s Vince X$!`20`20&0220&0420\0808\1010\2011!`20Omi$Config`20uses`20this`20symbol X$!`20`20&0220&0420\0808\1010\2011!`20The`20actual`20current`20menu X$!`20`20&0220&0420\0808\1010\2011!`20is`20an`20on-the-fly`20menu X$! X$`09omi$config`20'omi$menu_file'`20update`20"menu_''omi$current_menu'"`20- X`09`20`20`20"''edit$_element_name'"`20"''_new_value'" X$`09exit`20$status X$! X$!********\0808\1010\2020\400E $ call unpack [.OMI-V2_3]EDIT_ELEMENT.OMI;1 - 326375736 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 6 1 41 $! $ create 'f' XOMI,`20Tools,`20A`20feature`20rich`20and`20well`20documented`20menu`20developm Vent`20tool X XOMI`20v2.3`20-`20`A91997-2004,`20Oscar`20van`20Eijk,`20support@oveas.com X========\0808\1010\2018 X XOscar's`20Menu`20Interface`20is`20a`20DCL`20procedure`20that`20reads`20menu`20 Vfiles`20and`20`20 Xrepresents`20the`20menu`20structure`20on`20a`20ChUI`20based`20window.`20`20 V&0220&0420\0808 X XOMI`20does`20not`20perform`20any`20actions`20on`20its`20own.`20Additional`20pr Vocedures`20`20`20 Xare`20required`20to`20handle`20upon`20the`20users`20input.`20OMI`20is`20strict Vly`20created`20 Xto`20create`20a`20standard`20user`20interface`20for`20all`20kinds`20of`20actio Vns,`20with`20a`20 Xclear`20structure,`20support`20for`20different`20security`20levels`20and`20pas Vsword`20`20 Xprotection.`20`20&0220&0420\0808\1010\201A X XThe`20additional`20procedures`20that`20are`20required`20for`20any`20actions`20 Vare`20`20&0220&0220 Xreferred`20to`20'callable`20jobs'.`20A`20section`20in`20the`20help`20file`20de Vscribes`20`20&0220 Xhow`20several`20commands,`20defined`20in`20OMI,`20can`20be`20used`20to`20creat Ve`20such`20`20&0220`20 Xprocedures.`20`20&0220&0420\0808\1010\201A X XDocumentation`20and`20support X--------\0808\1009 XFull`20documentation`20for`20OMI`20can`20be`20found`20at`20the`20OMI`20site: Xhttp://freeware.oveas.com/omi. XAn`20online`20HELP`20is`20also`20provided,`20but`20since`20v2.0`20the`20printa Vble`20documentation Xis`20completely`20reviewed.`20This`20has`20not`20(yet?)`20been`20done`20with V`20the`20online XHELP,`20except`20for`20the`20interactive`20OMI`20command`20section. X XThis`20site`20also`20offers`20a`20forum`20(http://freeware.oveas.com/omi/forum V.html) Xwhere`20you`20can`20get`20support. XPlease`20note`20OMI`20comes`20without`20any`20warranty,`20but`20I'll`20try`20t Vo`20give`20as`20much Xsupport`20as`20possible`20via`20this`20forum. X XInstallation`20instructions X--------\0808\1009 XTo`20install`20OMI,`20download`20one`20of`20the`20distributions:`20either Xthe`20ZIP`20file`20(download`20in`20BINary`20format)`20or`20the`20COM`20file X(download`20in`20ASCII`20format). XAlso,`20download`20OMI$INSTALL.COM`20in`20ASCII`20format. X XNext,`20set`20default`20to`20the`20directory`20where`20the`20installation Xscript`20is`20located,`20and`20issue`20the`20command: X$`20@OMI$INSTALL X XFollow`20the`20instruction`20to`20install`20OMI. XThe`20procedure`20extracts`20the`20distribution`20and`20moves`20all Xfiles`20to`20the`20desired`20location`20(that`20you`20will`20be`20prompted`20f Vor). XSite`20specific`20files`20will`20not`20be`20overwritten. XIf`20the`20file`20OMI$TOOLBOX.INI`20exists,`20it`20will`20be`20patched. X XThe`20installation`20procedure`20also`20creates`20the`20HELP`20library, Xand`20repairs`20message`20datafiles,`20which`20have`20been`20corrupted Xby`20the`20distribution. X XIf`20this`20is`20a`20new`20installtion,`20let`20all`20the`20users`20who`20will V`20be Xusing`20OMI`20execute`20the`20procedure`20OMI$USER_INSTALL`20once. XThis`20is`20not`20required`20for`20upgrades`20of`20existing`20OMI`20installati Vons. X XInstallation`20is`20now`20complete.`20All`20users`20can`20optionally`20change V Xthe`20behaviour`20of`20OMI`20by`20modifying`20the`20file`20OMI$MENU.CFG,`20loc Vated Xin`20their`20SYS$LOGIN:. X XTo`20test`20OMI,`20you`20can`20use`20the`20example`20menu`20file`20OMI$EXAMPLE V.MNU Xwhich`20comes`20with`20this`20distribution.`20Start\1906menu\2808e`20command XOMI`20OMI$EXAMPLE. X XThis`20menu`20performs`20no`20other`20action`20than`20displaying`20information V. XThe`20'Protected`20menu'`20is`20p\1309with`20the`20password`20"test123456789". V X(Note:`20passwords`20are`20case`20sensitive!) X XMore`20information`20can`20be`20obtained`20from`20the`20online`20HELP`20and`20 Vthe`20documentation. $ call unpack [.OMI-V2_3]FREEWARE_README.TXT;1 - 3863640076 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 7 2 41 $! $ create 'f' X2.3`20`20`20Released:`2025-06-2004 X X*`20Added`20keywords`20DCLERRORS`20and`20DCLFATALS`20to`20the`20/IGNORE`20qual Vifier X*`20The`20keyword`20BLANKS`20in`20STRING`20formatting`20type`20is`20now`20depr Vecated, X`20`20it's`20replaced`20by`20COLLAPSE X*`20Added`20the`20keyword`20ALFANUM`20in`20the`20STRING`20formatting`20type X*`20Made`20the`20answers`20'Yes'`20and`20'No'`20configurable`20using`20the`20v Values X`20`20'answer_yes'`20and\1109no'`20in`20the`20`5Bquestions`5D`20section`20of V`20the X`20`20configuration`20file. X`20`20*NOTES:`20-`20The`20default`20answer`20when`20using`20OMI$CONFIRM`20shou Vld`20be`20changed X`20`20&0220&0420&0420in`20your`20applications`20from`20"Y"`20to`20"'questions$ Vanswer_yes'" X`20`20&0220&0420&0420and`20from`20"N"`20to`20"'questions$answer_no'"`20is`20yo Vu`20want`20to`20change X`20`20&0220&0420&0420the`20values`20in`20the`20configuration`20file`20as`20wel Vl. X`20`20&0220&0420&0220-`20The`20message`20%OMI-W-IVANS`20now`20requires`202`20p Varameters.`20If`20you`20use X`20`20&0220&0420&0420this`20message`20in`20your`20software,`20you`20will`20nee Vd`20to`20change`20it`20to: X`20`20&0220&0420\0806OMI$SIGNAL`20OMI`20IVANS,QUESTIONS$ANSWER_YES\1512NO X`20`20&0220&0420&0220Refer`20to`20the`20documentation`20for`20more`20informati Von. X*`20Bugfix`20the`20last`20page`20when`20scrolling`20select`20lists X*`20Bugfix`20in`20the`20INFO`20command X*`20Added`20the`20commands`20CLS`20and`20OMI$CLEAR_SCREEN X*`20Added`20the`20option`20NOWAIT`20to`20the`20OMI$POPUP`20command X*`20Bugfix`20in`20reading`20TAG-`20and`20SELect`20lists`20from`20a`20file;`20f Viles`20where`20not`20found X`20`20when`20they`20located`20in`20the`20OMI$MENU_DIRECTORY`20searchpath,`20bu Vt`20not`20\2E06 X`20`20first`20index. X`20`20This`20is`20because`20the`20VMS`20lexical`20F$PARSE()`20expands`20to`20t Vhe`20first`20index`20only. X*`20Allow`20submenus`20in`20on-the-fly`20menus X*`20Added`20the`20error`20messages`20OUTOFRA`20and`20PROOUTRA`20that`20signals V`20when`20an X`20`20intermediate`20value`20in`20the`20calculator`20is`20or`20might`20be`20ou Vt`20of`20range. X`20`20This`20prevents`20random`20results`20when`20a`20temporary`20value`20exce Veds`20the`20DCL`20limit X`20`20(2,147,483,647) X X2.2`20`20`20Released:`2029-08-2002 X X*`20Bugfix`20in`20INTEGER`20input`20type`20(new`20bug`20in`202.1) X*`20Bugfix`20in`20REQUIRED_ORDER X*`20Bugfix`20in`20OMI$DISPLAY_INFO;`20couldn't`20handle`20double`20quotes X*`20Several`20minor`20bugs`20and`20one`20maj\1306`20(possible`20loop`20in`20RE VQUIRED_ORDER) X`20`20where`20fixed`20by`20Edward`20Vlak,`20EDS.`20Thanks! X*`20Fixed`20a`20bug`20in`20scrolling`20long`20TAG`20and`20SELECT`20lists X*`20Added`20the`20command`20RESET`20VARIABLES X*`20Added`20the`20option`20to`20call`20OMI`20commands`20i.s.o.`20modules`20in V`20ON_INIT`20and`20ON_EXIT X*`20OMI$MENU_DIRECTORY`20is`20now`20the`20default`20location`20for`20all`20mod Vules X*`20Added`20basic`20menu-`20specific`20help`20support`20using`20.OMH`20files V`20and`20the`20new X`20`20command`20INFO X*`20Documented`20the`20OMI$Manage`20menu X*`20Bugfixes`20in`20the`20OMI$Manage`20menu`20and`20standard`20OMI`20modules V`20LIST_FILES.OMI X`20`20and`20TYPE_FILE.OMI X*`20Added`20the`20/`5BNO`5DIGNORE`20qualifier`20with`20keyword`20DUPLICATES`20 Vto`20suppress X`20`20%OMI-W-DUPL`20messages. X X2.1`20`20`20Released:`2025-08-2001 X X*`20Ignore`20OMI$WAIT`20in`20Batch-`20mode X*`20Bugfix`20in`20updating`20menu-`20files;`20when`20OMI$MENU_DIRECTORY`20is V`20a`20search`20path, X`20`20update`20commands`20always`20wrote`20the`20\2107menu`20file`20back`20in V`20the`20first X`20`20directory`20of`20the`20path. X*`20Bugfix`20in`20the`20user`20installation`20procedure. X*`20Restore`20the`20original`20VMS`20message`20state`20in`20spawned`20processe Vs. X*`20Added`20more`20checks`20when`20running`20with`20/VALIDATE. X*`20Added`20support`20for`20leading`20values`20using`20the`20#LEADING`20attrib Vute`20in`20item X`20`20names`20to`20make`20sure`20the`20leading`20value`20is`20used`20when`20an V`20item`20is`20duplicate X`20`20within`20a`20menu`20file`20and/or`20included`20library. X*`20Removed`20the`20SQL`20toolbox`20that`20was`20never`20-`20and`20\0C06will V`20be`20-`20finished. X*`20Changed`20the`20default`20file`20type`20for`20libraries`20to`20.OML. X*`20Rewrote`20the`20installation`20procedure. X*`20This`20was`20on`20my`20wish`20list`20for`20quite`20some`20time`20already: V`20converted`20the`20manual X`20`20from`20MSWord`20to`20LaTeX,`20and`20completely`20reviewed`20the`20manual V. X X2.0`20`20`20Released:`2022-06-1999 X X*`20Extended`20the`20calculator`20to`20work`20with`20longer`20formulas`20and V`20parentheses. X*`20Added`20the`20#INCLUDE`20directive`20to`20include`20standard`20libraries V`20in`20menu`20files. X*`20Added`20the`20/BACKGROUND=(BATCH`7CDETACH)`20qualifier`20to`20run`20an`20O VMI`20module X`20`20unattended`20as`20a`20batch-`20or`20detached`20process`20from`20the`20DC VL`20prompt. X*`20Implemented`20support`20for`20background`20jobs`20(batch`20only)`20using V`20the`20SUBMIT X`20`20command`20at`20the`20OMI`20prompt`20or`20OMI$SUBMIT`20within`20modules. V X*`20Added`20some`20accompanying`20elements`20in`20the`20configuration`20file V`20for X`20`20background`20job`20support X*`20Fixed`20a`20bug`20that`20caused`20the`20cursor`20to`20disappear`20when`20t Vhe`20OMI$WAIT`20command X`20`20was`20used`20and`20OMI`20was`20called`20with`20the`20/BATCH`20qualifier. V X*`20Fixed`20a`20bug`20in`20the`20/JUMPS`20causing`20a`20%DCL-W-UNDSYM`20warnin Vg. X*`20Some`20minor`20bugfixes`20in`20the`20message`20handling X X X2.0b1`20`20`20Released:`2010-11-1998 X X*`20Message`20files`20do`20not`20have`20to`20be`20located`20in`20the`20OMI$`20 Vdirectory`20anymore,`20but X`20`20they`20can`20be`20stored`20in`20the`20search`20list`20OMI$MENU_DIRECTORY V,`20where`20your X`20`20applications`20are`20stored`20as`20well. X`20`20Messages`20files`20created`20with`20the`20OMI$MANAGE`20menu`20are`20stil Vl\2B09in`20OMI$:, X`20`20but`20they`20can`20be`20moved`20manually. X*`20Implemented`20a`20simple`20calculator`20which`20can`20be`20called`20with V`20the`20CALC`20command`20from X`20`20the`20OMI`20prompt,`20and`20with\1908$CALC`20command`20from`20within`20O VMI`20modules. X*`20Implemented`20the`20FLOAT`20and`20FLOAT_POINT`20e\2406s`20for`20INTEGER`20 Vinput`20type, X`20`20and`20support`20for`20a`20default`20value`20for`20FLOAT_POINT`20in`20the V`20configuration`20file. X*`20Renamed`20the`20SEPERATE_INPUTS`20element`20from`20the`20`5BSCREEN`5D`20se Vction`20in`20the X`20`20configuration`20file`20to`20SEPARATE_INPUTS`20(forgive`20me`20my`20bad V`20English`20:-/). X*`20Fixed`20a`20bug`20from`20the`20OMI$CALL`20command`20that`20occured`20when V`20parameters`20contained X`20`20blanks. X*`20Added`20the`20/VALIDATE`5B=logfile`5D`20qualifier`20which`20signals`20the V`20most`20common`20errors X`20`20in`20menu`20files. X*`20Added`20the`20OMI$POPUP`20command`20to`20the`20default`20toolbox. X*`20Added`20the`20REQUIRED_ORDER`20menu`20element`20an\2408SET`20\2106and`20 X`20`20SHOW`20ORDER`20commands. X*`20Implemented`20the`20TIME`20format`20type. X X1.41`20`20&0220Released:`2001-05-1998 X XThis`20release`20includes`20patch`201.4a.`20Other`20changes: X*`20The`20dollar-sign`20($)`20is`20now`20supported`20as`20a`20synonym`20for`20 Vthe`20OMI`20command`20DCL X*`20Added`20the`20CONFIRM`20element`20to`20the`20configuration`20file`20(defau Vlt`20=`20TRUE) X*`20Enhanced`20the`20TEXTAREA`20input`20format,`20and`20add\2507new`20commands V`20SHOW\3709 X`20`20and`20DELETE`20TEXTAREA X*`20Added`20validation`20and`20formatting`20options`20for`20dynamic`20input`20 Vusing`20\2B06 X`20`20sections X*`20Added`20multiple`20mailbox`20support,`20by`20allowing`20the`20logical`20na Vme,`20which`20could X`20`20only`20be`20OMI$MAILBOX`20in`20previous`20versions,`20to`20be`20specifie Vd`20by`20a`20parameter. X`20`20OMI$MAILBOX`20is`20still`20the`20default`20value. X X1.4a`09Released:`2021-04-1998 X`20`20&0220&0420\0808\1010\2020\400F XThis`20version`20is`20distributed`20as`20a`20patch`20for`20v1.4,`20and`20fixes V`20a`20bug`20in`20de`20command Xelement`20type`20using`20the`20DCL`20command`20 XThe`20patch`20is`20still`20available`20as`20a`203`20kB`20ascii`20file`20at Xftp://ftp.oveas.net/pub/oveas/omi/omi$patch_1-4a.com,`20but`20can`20only`20be V`20used`20for Xv1.4.`20If`20you`20still`20use`20this`20version,`20an`20upgrade`20is`20recomme Vnded. X X1.4`20`20&0220`20Released:`2019-02-1998 X X*`20Renamed`20the`20file`20OMI$CREATE_HELPLIB.COM`20to`20OMI$INSTALL.COM`20whi Vch`20is`20a`20better X`20`20name`20for`20what`20it`20does.`20The`20old`20OMI$INSTALL.COM`20is`20now V`20called X`20`20OMI$USER_INSTALL.COM X*`20The`20logical`20OMI$MENU_DIRECTORY`20can`20bow`20be`20a`20search`20list. V`20The`20user`20specific X`20`20file`20OMI$SETUP.COM`20(created`20by`20OMI$USER_INSTALL.COM)`20now`20sca Vns`20the`20given`20menu X`20`20directory`20for`20sub\1108ies,`20and`20adds`20them`20all`20to`20the`20lo Vgical.`20By`20editing X`20`20OMI$SETUP.COM`20manually,`20more`20directories`20can`20be`20added. X*`20Added`20the`20`5BINTERACTIVE_AUTH`5D`20section`20support`20to`20prevent`20 Vusers`20from`20executing X`20`20the`20DCL`20or`20SPAWN`20commands,`20except`20when`20these`20\1C08`20are V`20called`20by`20a`20menu X`20`20item. X*`20Added`20the`20AUTO_REFRESH`20menu`20element,`20an\2306(RE)SET\2B0Ecommand V X*`20Added`20qualifier`20support`20with`20the`20following\250As: X`20`20/`5BNO`5DDEBUG X`20`20/`5BNO`5DBATCH X`20`20/SUBMENU=menu-name X`20`20/JUMPS=option-list X`20`20/`5BNO`5DPROGRESS X X1.3`20`20&0220`20Released:`2019-11-1997 X X*`20Added`20multiple`20key`20support`20for`20encryption,`20using`20a`20user`20 Vspecific`20keyring, X`20`20stored`20in`20the`20configuration`20file,`20and`20a`20global`20keyring, V`20to`20and`20from`20which X`20`20keys`20can`20be`20exported`20and`20im\0D07with`20the`20new`20commands`20 VEXPORT`20KEY`20and X`20`20IMPORT`20KEY X*`20Added`20support`20for`20on-the-fly`20menus X*`20Added`20the`20NOEXIT_MODULE`20option`20in`20the`20BACK`20command X*`20The`20BACK`20command`20and`20option`200`20don't`20exit`20the`20menu`20anym Vore`20when`20at`20the X`20`20toplevel.`20`20still`20does. X*`20Fixed`20a`20bug`20for`20ON_INIT`20and`20ON_EXIT`20elements`20using`20param Veters`20where`20the X`20`20file`20type`20was`20not`20specified X*`20Fixed`20a`20bug`20in`20the`20TEXTAREA`20input`20field`20that`20occured`20w Vhe\2B06logical X`20`20OMI$MENU_DIRECORY`20is`20not`20defined X*`20Added`20the`20FIXED`20option`20for`20TEXTAREA`20input`20types X*`20Added`20the`20ELEMENT`20and`20MENU_FILE`20options`20to\2506DIT`20command X*`20Added`20the`20option`20to`20have`20Tag-`20and`20Select`20lists`20retrieve V`20their`20values X`20`20from`20a`20file,`20and`20the`20EDIT`20VALUE_FILE`20command`20to`20enable V`20(privileged)`20users X`20`20to`20maintain`20those`20files X*`20Added`20the`20PRINTER`20element`20to`20the`20section`20MAIN`20in`20the`20c Vonfiguration`20file X*`20Added`20the`20module`20command`20OMI$DUMP_INFO X*`20Added`20the`20module`20command`20OMI$GET_VMSMESSAGE X*`20Added`20the`20SHOW`20VMS_MESSAGE`20command X*`20Added`20the`20question`20mark`20option`20for`20the`20MENU`20command,`20and V`20the`20listing`20of X`20`20all`20available`20menus`20when`20OMI`20is`20started`20without`20a`20menu V,`20or`20with`20an`20invalid X`20`20menu. X*`20Added`20the`20symbols`20OMI$OPTION`20and`20\0F0A_TYPE`20to`20the`20interna Vl\3707`20list. X X X1.2`20`20&0220`20Released:`2010-09-1997 X X*`20Added`20the`20TEXTAREA`20format`20type. X*`20The`20elements`20ON_INIT`20and`20ON_EXIT`20now`20work`20for`20all`20menu V`20levels,`20and X`20`20will`20also`20be`20executed`20when`20the`20MENU`20command`20is`20entered V. X*`20Modified`20the`20HELP`20command`20so`20it`20now`20accepts`20topics`20that V`20were`20entered`20as`20a X`20`20parameter`20on`20the`20OMI`20prompt X*`20Added`20the`20FDEVICE,`20FDIRECTORY`20and`20FTYPE`20keywords`20to\2E06ILES VPEC`20format X`20`20type,`20to`20specify`20default`20attributes`20for`20files. X*`20Added`20the`20possability`20to`20let`20lines`20in`20the`20menu-`20and`20co Vnfiguration`20files X`20`20span`20more`20lines,`20using`20the`20dash`20(-)`20to`20continue`20on`20t Vhe`20next`20line. X*`20Implemented`20a`20new`20message`20handler,`20and`20added`20the`20command V`20OMI$SIGNAL X`20`20to`20call`20this`20handler`20in`20OMI`20modules. X*`20Added`20the`20module`20command`20OMI$SUBSTITUTE X*`20Fixed`20the`20default`20values`20for`20stack`20variables,`20after`20every V`20increase, X`20`20the`20variables`20using`20counters`20will`20now`20get`20their`20default V`20value. X*`20Fixed`20the`20bug`20that`20did`20not`20allow`20the`20user`20to`20cancel`20 Vdynamic`20input`20(`7E?)`20with X`20`20Ctrl/Z. X*`20Fixed`20the`20bug`20due`20to`20which`20the`20Auto`20Mode`20did`20not`20wor Vk`20for`20Dynamic`20Menus. X*`20Added`20the`20SET`20WIDTH`20command. X*`20Added`20the`20OMI$CALL`20command,`20which`20can`20be`20used`20to`20call`20 Vstandard`20modules X`20`20from`20OMI`20modules. X*`20Added`20the`20PROMPT`20element`20to`20the`20menu`20sections,`20to`20allow V`20different`20prompts X`20`20for`20all`20menu`20levels. X*`20OMI`20now`20displays`20the`20percentage`20of`20lines`20read`20from`20the V`20menu`20file`20during X`20`20initialization.`20This`20is`20usefull`20for`20large`20menu`20files. X*`20Added`20the`20SHOW_PROGRESS`20and`20PROTECT_PROMPT`20elements`20to`20the V`20configuration X`20`20file. X*`20Removed`20the`20VERSION_ID`20from`20the`20configuration`20file.`20This`20e Vlement`20is`20now X`20`20obsolete. X X1.1`20`20&0220`20Released:`2021-06-1997 X X*`20Fixed`20a`20bug`20due`20to`20which`20the`20logical`20OMI$CONFIG`20was`20ov Verwritten, X*`20Added`20a`20proper`20error`20message`20when`20there`20are`20more`20items V`20in`20a`20menu`20than`20can X`20`20fit`20on`20the`20screen,`20in`20stead`20of`20running`20out`20of`20\270A. V X*`20Added`20a`20proper`20error`20message`20when`20a`20tag-`20list`20is`20too V`20long`20to`20fit`20on`20one X`20`20screen`20in`20stead`20of`20running`20out`20of`20the\2607. X*`20Fixed`20a`20bug`20in`20the`20tag`20lists`20which`20would`20display`20no`20 Vthan`20one`20value`20per X`20`20column`20when`20more`20than`20two\1A07s`20are`20required. X*`20Added`20the`20NEXT`20and`20PREVIOUS`20commands`20in`20the`20Select`20list V`20option,`20due`20to`20which X`20`20selections`20can`20now`20be`20made`20from`20multiple`20screens. X*`20Added`20defaults`20to`20the`20configuration`20settings,`20so`20not`20not V`20all`20fields`20in`20the X`20`20configuration`20file`20are`20required. X*`20Added`20checks`20in`20the`20configuration`20routine`20to`20encounter`20dup Vlicate`20items.`20The X`20`20user`20will`20now`20be`20prompted`20to`20ask`20if`20an`20existing`20item V`20should`20be`20overwritten. X*`20Again,`20implemented`20a`20new`20encryption`20method,`20using`20keys,`20si Vnce`20I`20expect X`20`20everybody`20who`20tried`20hard`20enough`20found`20the`20encryption`20met Vhod`20by`20now.`20The`20new X`20`20method`20can`20still`20decrypt`20strings`20encrypted`20with`20v1.0b3`20a Vnd`20up. X*`20Changed`20the`20password`20prompt`20for\140Dtected`20menus`20so`20when`20a Vn`20invalid X`20`20password`20is`20given`20the`20user`20can`20retry`20it,`20three`20times V`20in`20total. X*`20Added`20intrusion`20settings`20when`20the`20same`20user`20entered`20an`20i Vnvalid`20password`20on X`20`20the`20same`20menu`20for`20nine`20times`20during`20one`20session. X*`20Added`20the`20SET`20KEY`20command. X*`20Changed`20the`20default`20prompt`20to`20'OMI>' X X1.0`20`20&0220`20Released:`2030-05-1997 X X*`20Added`20the`20option`20to`20specify`20a`20parameter`20for`20OMI$DATE_INFO, V`20which`20enables X`20`20date`20information`20for`20other`20dates.`20Default`20is`20'today'. X*`20Fixed`20a`20bug`20in`20OMI$DATE_INFO,`20which`20miscalculates`20after`20se Vptember. X*`20Some`20minor`20documentation`20bugs`20in`20the`20HELP`20file`20fixed. X X1.0b4`20`20`20Released:`2013-05-1997 X X*`20Bugfix`20for`20the`20DCL-W-UNDSYM`20error`20on`20password`20protected`20me Vnus. X*`20Implemented`20the`20ASK`20command. X*`20Implemented`20the`20OMI$INPUT_VALIDATE`20command,`20that`20fixes`20a`20pos Vsible`20bug`20when X`20`20a`20user`20enteres`20''F$PID(GOTO)'`20as`20input. X`20`20Thanks`20to`20Henry`20Juengst`20(j\0906@saph1.iskp.uni-bonn.de)`20for`20 Vmaking`20me X`20`20aware`20of`20this. X X1.0b3`20`20`20Released:`2009-05-1997 X X*`20Fixed`20a`20security`20bug;\100Dlock`20in`20the`20main`20menu`20wasn't`20p Vroperly X`20`20handled. X*`20Added`20the`20QUIT`20command`20as`20a`20synonym`20for`20EXIT. X*`20Added`20extra`20parameters`20to`20select`20a`20submenu`20by`20name`20and V`20the`20options X`20`20immediatly`20from`20the`20DCL`20command`20line`20when`20starting`20OMI, V`20and`20the`20JUMP\2D08. X*`20Moved`20most`20extra`20options`20(like`20the`20encryption`20module`20and V`20the`20OMI$CHECK X`20`20command)`20to`20the`20newly`20created`20OMI$TOOLBOX.COM. X*`20Added`20the`20commands`20OMI$CREATE_MBX,`20OMI$ENCRYPT\0D06DECRYPT`20and V`20OMI$REVERSE. X*`20Added`20the`20FILESPEC`20format`20type. X*`20Enhanced`20the`20encryption`20method,`20which`20is`20incompatible`20with V\3210of X`20`20v1.0b2. X`20`20*NOTE*`09Due`20to`20this,`20password`20checks`20will`20now`20fail`20if V`20the`20\2508 X`09`09was`20set`20with`20an`20older`20release. X`09`09The`20password`20value`20needs`20to`20be`20removed`20manually`20from`20t Vhe`20MNU X`09`09file,`20after`20which`20it`20will`20default`20to`20'Omi$System'.`20It`20 Vcan`20then X`09`09be`20set`20again`20with`20the`20SET`20PASSWORD`20command. X*`20Added`20the`20''`20identifier`20for`20menu`20and`20config`20files. X*`20Added`20the`20ENCRYPT`20command. X X1.0b2`20`20`20Released:`2015-04-1997 X X*`20Added`20type`20definitions`20for`20the`20input`20items. X*`20Added`20tag`20lists X*`20Added`20the`20CALL`20item-`20type`20and`20several`20commands`20that`20can V`20be`20used`20by`20modules. X*`20Added`20the`20free`20option`20in`20select`20lists. X X1.0b1`20`20`20Date:`2014-03-1997&0220(not`20released) X XAdded`20dynamic`20menu's,`20counters,`20OMI`20commands`20SET,`20RESET`20and`20 VSHOW,`20implemented Xthe`20version`20number,`20the`20comment`20field`20and`20the`20password`20optio Vn. X X0.0`20`20&0220`20Date:`2011-03-1997&0220(not`20released) X XInitial`20release,`20containing`20submenus,`20commands`20with`20input`20option V,`20free\1306s Xand`20selection`20lists. $ call unpack [.OMI-V2_3]HISTORY.TXT;1 960779419 "" 28 3 41 $! $ create 'f' X$`09goto`20start$ X$! X$!********\0808\1010\2020\400E X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220MODULE`20NAME:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220List_Files.Omi\1406\1A06\0C0C\1818\3008* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220USAGE:&0420&0420\0808\1010\2020&0220* X$!*`20`20&0220======&0420&0420\0808\1010\2020&0220* X$!*`20`20&0220&0220OMI$CALL`20LIST_FILES`20file(s)-to-list`20display-what`20 V\3706\0707\0E08* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220DESCRIPTION:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220This`20standard`20module`20is`20called`20to`20create`20a`20 Vlisting`20of`20specified`20files`20* X$!*`20`20&0220&0220and`20calls`20TYPE_FILE`20to`20display`20them.\2A06\3006 V\0C0C\180A* X$!*`20`20&0220&0220The`20file`20specification(s)`20should`20be`20passed`20as V`20one`20parameter.`20If`20more`20`20* X$!*`20`20&0220&0220file`20types`20should`20be`20listed,`20or`20files`20from`20 Vmore`20directory,`20they\4506`20* X$!*`20`20&0220&0220have`20to`20be`20separated`20by`20commas.\2506\2B06\0C0C V\180F* X$!*`20`20&0220&0220The`20second`20parameter`20tells`20this`20module`20what`20t Vo`20display.`20By`20default,&0320* X$!*`20`20&0220&0220the`20full`20specification`20will`20be`20displayed.`20This V`20can`20be`20overridden`20&0520* X$!*`20`20&0220&0220by`20specifying`20one`20or`20more`20fields`20in`20P2\2C06 V\3206\0C0C\1808* X$!*`20`20&0220&0220(eg.`20OMI$CALL`20LIST_FILES`20SYS$LOGIN:*.*`20name,type) V\3706\3D06\0C09* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220HISTORY:&0420&0420\0808\1010\2020* X$!*`20`20&0220========&0420&0420\0808\1010\2020* X$!*`20`20&0220&0220v1&022015-09-97`20Oscar`20van`20Eijk\2106&0220Created\0F08 V\1708\100C* X$!*`20`20&0220&0220v2&022021-08-02`20Oscar`20van`20Eijk\2106&0220Added`20error V`20handling`20to`20ensure&0520* X$!*`20`20&0220&0420\0808\1010\2009temporary`20file`20cleanup.\400C* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$`20start$: X$! X$`09on`20warning`20then`20$`20continue X$`09on`20error`20then`20$`20goto`2098$ X$`09on`20severe_error`20then`20$`20goto`2098$ X$`09_status`20=`20omi$_ok X$`09if`20p1`20.eqs.`20""`20then`20$`20goto`2091$ X$`09if`20p2`20.eqs.`20"" X$`09`20`20`20then`20$`20_full_list`20=`201 X$`09`20`20`20else X$`09`09_full_list`20=`200 X$`09`09p2`20=`20","`20+`20f$edit(p2,"upcase") X$`09endif X$`09open`20/write`20file_list`20sys$scratch:omi$\1A09ing._tmp$ X$`09_spec_counter`20=`200 X$! X$`201$: X$! X$`09_filespec`20=`20f$element(_spec_counter,`20",",`20P1) X$`09if`20_filespec`20.eqs.`20""`20.or.`20\1811,"`20then`20$`20goto`2010$ X$`09gosub`2050$ X$`09_spec_counter`20=`20\100E+`201 X$`09goto`201$ X$! X$`2010$: X$! X$`09close`20file_list X$`09omi$call`20type_file`20sys$scratch:omi$file_listing._tmp$`20norefresh X$`09delete`20/nolog`20/noconfirm`20sys$scratch:omi$file_listing._tmp$; X$`09goto`2099$ X$! X$!********\0808\1010\2020\400E X$! X$`2050$: X$! X$`09_filename`20=`20f$search(_filespec) X$`09if`20_filename`20.eqs.`20""`20then`20$`20return X$`09_filename`20=`20f$edit(`20f$getsyi("scsnode"),`20"collapse")`20+`20"::"`20 V+`20\3E09 X$`09if`20_full_list X$`09`20`20`20then X$`09`09write`20file_list`20_filename X$`09`09goto`2050$ X$`09endif X$`09_file_name`20=`20"" X$! X$`09if`20f$locate(",NOD",`20p2)`20.lt.`20f$length(p2)`20then`20- X`09`20`20`20$`20_file_name`20=\0D0C+`20f$parse(_filename,,,"node") X$`09if`20f$locate(",DEV",`20p2)`20.lt.`20f$length(p2)`20then`20- X`09`20`20`20$`20_file_name`20=\0D0C+`20f$parse(_filename,,,"device") X$`09if`20f$locate(",DIR",`20p2)`20.lt.`20f$length(p2)`20then`20- X`09`20`20`20$`20_file_name`20=\0D0C+`20f$parse(_filename,,,"directory") X$`09if`20f$locate(",NAM",`20p2)`20.lt.`20f$length(p2)`20then`20- X`09`20`20`20$`20_file_name`20=\0D0C+`20f$parse(_filename,,,"name") X$`09if`20f$locate(",TYP",`20p2)`20.lt.`20f$length(p2)`20then`20- X`09`20`20`20$`20_file_name`20=\0D0C+`20f$parse(_filename,,,"type") X$`09if`20f$locate(",VER",`20p2)`20.lt.`20f$length(p2)`20then`20- X`09`20`20`20$`20_file_name`20=\0D0C+`20f$parse(_filename,,,"version") X$! X$`09write`20file_list`20_file_name X$`09goto`2050$ X$! X$`2091$: X$! X$`09omi$signal`20omi`20ivmodcall,list_files X$`09_status`20=`20omi$_error X$`09goto`2099$ X$! X$`2098$: X$! X$`09omi$signal`20omi`20abort,'$status' X$`09_status`20=`20$\0A06 X$`09if`20f$trnlnm("file_list")`20.nes.`20""`20then`20$`20close`20f\2208 X$`09if`20f$search("sys$scratch:omi$file_listing._tmp$")`20.nes.`20""`20then`20 V- X`09`20`20`20$`20deletee`20nolog`20/noconfirm`20sys$scratch:omi$file_listing._t Vmp$; X$! X$`2099$: X$! X$`09exit`20_status X$! X$!********\0808\1010\2020\400E $ call unpack [.OMI-V2_3]LIST_FILES.OMI;1 - 796216971 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 10 4 41 $! $ create 'f' X$`09goto`20start$ X$! X$!********\0808\1010\2020\400E X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220MODULE`20NAME:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220Mgt$Check_Facil.Omi\1906\1F06\0C0C\1818&0320* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220CALLED`20BY:&0420&0420\0808\1010\201E* X$!*`20`20&0220==========&0420&0420\0808\1010\201E* X$!*`20`20&0220&0220Omi$Manage.Mnu\1406`20-`20The`20OMI`20\1B06ment`20Men\2008 V\2707\0E0A* X$!*`20`20&0220&0220Mgt$Check_Ident.Omi&0220-`20OMI`20module`20to`20check`20a V`20message`20identifier\4506`20* X$!*`20`20&0220&0220Msg$Message.Omi\1506-`20OMI`20module`20that`20performs`20al Vl`20actions`20\4206&0420* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220DESCRIPTION:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220This`20module`20is`20called`20by`20the`20Message`20Submenu. V`20It`20checkes`20if`20the`20\4606* X$!*`20`20&0220&0220user`20entered`20a`20facility`20name,`20and`20looks`20for V`20the`20file.`20It`20returns`20&0520* X$!*`20`20&0220&0220OMI$_WARNING`20when`20the`20facility`20was`20not`20entered, V`20or`20doe\1507xist`20&0420* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220HISTORY:&0420&0420\0808\1010\2020* X$!*`20`20&0220========&0420&0420\0808\1010\2020* X$!*`20`20&0220&0220v1&022012-09-97`20Oscar`20van`20Eijk\2106&0220Created\0F08 V\1708\100C* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$`20start$: X$! X$`09omi$check`20msg_facil`20"%OMI-W-NOFACIL,`20facility`20not`20specified" X$`09if`20$status`20.ge.`20omi$_warning X$`09`20`20`20then X$`09`09if`20omi$option_type`20.eqs.`20"SUBMENU"`20- X`09`09`20`20`20then`20$`20omi$wait&0220!`20Give`20the`20user`20the`20change`20 Vto`20read`20the`20msg X$`09`09exit`20omi$_warning X$`09endif X$! X$`09if`20f$search("Omi$Menu_Directory:''msg_facil'$messages.dat")`20.eqs.`20"" V X$`09`20`20`20then X$`09`09omi$signal`20omimgt`20nomsgfile,'msg_facil X$`09`09if`20omi$option_type`20.eqs.`20"SUBMENU"`20- X`09`09`20`20`20then`20$`20omi$wait&0220!`20Give`20the`20user`20the`20change`20 Vto`20read`20the`20msg X$`09`09exit`20omi$_warning X$`09endif X$! X$`09exit`20omi$_ok X$! X$!********\0808\1010\2020\400E $ call unpack [.OMI-V2_3]MGT$CHECK_FACIL.OMI;1 - 1846700471 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 6 5 41 $! $ create 'f' X$`09goto`20start$ X$! X$!********\0808\1010\2020\400E X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220MODULE`20NAME:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220Mgt$Check_Ident.Omi\1906\1F06\0C0C\1818&0320* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220CALLED`20BY:&0420&0420\0808\1010\201E* X$!*`20`20&0220==========&0420&0420\0808\1010\201E* X$!*`20`20&0220&0220Omi$Manage.Mnu&0220-`20The`20OMI`20\1606ment`20Menu&0220 V\3106\0808\100D* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220DESCRIPTION:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220This`20module`20is`20called`20by`20the`20Message`20Submenu. V`20It`20checkes`20if`20the`20\4606* X$!*`20`20&0220&0220user`20entered`20an`20existing`20message`20identification. V\3606\3C06\0C0A* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220HISTORY:&0420&0420\0808\1010\2020* X$!*`20`20&0220========&0420&0420\0808\1010\2020* X$!*`20`20&0220&0220v1&022012-09-97`20Oscar`20van`20Eijk\2106&0220Created\0F08 V\1708\100C* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$`20start$: X$! X$`09omi$call`20mgt$check_facil X$`09if`20$status`20.ne.`20omi$_ok`20then`20$`20exit\2108 X$! X$`09omi$check`20msg_ident`20"%OMI-W-NOIDENT,`20identification`20not`20specifie Vd" X$`09if`20$status`20.ge.`20omi$_warning X$`09`20`20`20then X$`09`09if`20omi$option_type`20.eqs.`20"SUBMENU"`20- X`09`09`20`20`20then`20$`20omi$wait&0220!`20Give`20the`20user`20the`20change`20 Vto`20read`20the`20msg X$`09`09exit`20omi$_warning X$`09endif X$! X$`09open`20/read`20/write`20/share=read`20omi$msg`20/error=msg$flock`20- X`09`20`20`20Omi$Menu_Directory:'msg_facil'$messages.dat X$`09read`20/error=msg$notfound`20/key="''msg_ident'"`20omi$msg`20_message X$`09close`20omi$msg X$! X$`09exit`20omi$_ok X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Error`20handlings`20are`20below X$! X$`20msg$flock: X$! X$!`20Message`20file`20locked X$! X$`09omi$signal`20omimgt`20msgflock,msg_facil X$`09omi$wait X$`09exit`20omi$_warning X$! X$! X$`20msg$notfound: X$! X$!`20Message`20does`20not`20exist X$! X$`09close`20omi$msg X$`09omi$signal`20omimgt`20nomsg,msg_ident X$`09omi$wait X$`09exit`20omi$_warning X$! X$!********\0808\1010\2020\400E $ call unpack [.OMI-V2_3]MGT$CHECK_IDENT.OMI;1 - 625422402 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 6 6 41 $! $ create 'f' X$`09goto`20start$ X$! X$!********\0808\1010\2020\400E X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220MODULE`20NAME:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220Mgt$List_Facil.Omi\1806\1E06\0C0C\1818&0420* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220CALLED`20BY:&0420&0420\0808\1010\201E* X$!*`20`20&0220==========&0420&0420\0808\1010\201E* X$!*`20`20&0220&0220Omi$Manage.Mnu\1406`20-`20The`20OMI`20\1B06ment`20Men\2008 V\2707\0E0A* X$!*`20`20&0220&0220Mgt$Check_Ident.Omi&0220-`20OMI`20module`20to`20check`20a V`20message`20identifier\4506`20* X$!*`20`20&0220&0220Msg$Message.Omi\1506-`20OMI`20module`20that`20performs`20al Vl`20actions`20\4206&0420* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220DESCRIPTION:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220This`20module`20lists`20all`20message`20facilities,`20and V`20dumps`20them`20to`20a`20file`20&0320* X$!*`20`20&0220&0220in`20the`20users`20Login`20directory.`20This`20file`20is`20 Vused`20by`20the`20Select`20list,&0320* X$!*`20`20&0220&0220from`20which`20facilities`20can`20be`20selected.\2C06\3206 V\0C0C\1808* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220HISTORY:&0420&0420\0808\1010\2020* X$!*`20`20&0220========&0420&0420\0808\1010\2020* X$!*`20`20&0220&0220v1&022010-11-97`20Oscar`20van`20Eijk\2106&0220Created\0F08 V\1708\100C* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$`20start$: X$! X$`09if`20f$search("''constants$facil_list'",`200)`20.nes.`20""`20then`20- X`09`20`20`20$`20deletee`20/nolog`20/noconfirm`20'constants$facil_list';* X$`09if`20p1`20.eqs.`20"REM_FILE"`20then`20$`20exit`20omi$_ok X$`09_counter`20=`200 X$! X$`20facil$_loop: X$! X$`09_counter`20=`20\0B09+`201 X$`09facil_file`20=`20f$search("Omi$Menu_Directory:*$messages.dat",`201) X$`09if`20facil_file`20.eqs.`20""`20then`20$`20goto\2006$end_loop X$`09omi$record'_counter'`20=`20f$parse(facil_file,,,"name")`20-`20"$MESSAGES" V X$`09goto`20facil$_loop X$! X$`20facil$end_loop: X$! X$`09omi$record'_counter'`20=`20"`7BNew`20facility`7D" X$`09omi$dump_info`20'constants$facil_list' X$! X$`09exit`20omi$_ok X$! X$!********\0808\1010\2020\400E $ call unpack [.OMI-V2_3]MGT$LIST_FACIL.OMI;1 - 704717216 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 6 7 41 $! $ create 'f' X$`09if`20p1`20.eqs.`20"REPAIR"`20`20then`20$`20gosub`20msg$_repair X$`09if`20p1`20.eqs.`20"CREATE"`20`20then`20$`20gosub`20msg$_create X$`09if`20p1`20.eqs.`20"LIST"`20`20&0220then`20$`20gosub`20msg$_list X$`09if`20p1`20.eqs.`20"SEARCH"`20`20then`20$`20gosub`20msg$_search X$`09if`20p1`20.eqs.`20"EDIT"`20`20&0220then`20$`20gosub`20msg$_edit X$`09if`20p1`20.eqs.`20"DISPLAY"`20then`20$`20gosub`20msg$_display X$`09if`20p1`20.eqs.`20"DELETE"`20`20then`20$`20gosub`20msg$_delete X$`09if`20p1`20.eqs.`20"ADD"`20`20&0220`20then`20$`20gosub`20msg$_add X$`09if`20p1`20.eqs.`20"CHECK"`20`20`20then`20$`20gosub`20msg$_checkwritten X$`09exit`20$status X$! X$!********\0808\1010\2020\400E X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220MODULE`20NAME:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220Mgt$Message.Omi\1506\1B06\0C0C\1818\3007* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220CALLED`20BY:&0420&0420\0808\1010\201E* X$!*`20`20&0220==========&0420&0420\0808\1010\201E* X$!*`20`20&0220&0220Omi$Manage.Mnu&0220-`20The`20OMI`20\1606ment`20Menu&0220 V\3106\0808\100D* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220DESCRIPTION:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220This`20module`20is`20called`20by`20the`20Message`20Submenu. V`20It`20is`20used`20for\4206&0420* X$!*`20`20&0220&0220the`20following`20purposes:\1D06\2306\0C0C\1817* X$!*`20`20&0220&0420-`20Create`20a`20new`20message`20file,\2408\2C08\1010\4408* V X$!*`20`20&0220&0420-`20Repair`20the`20indexed`20file`20organisation`20of`20the V`20message`20file`20\4308`20* X$!*`20`20&0220&0420&0220if`20it`20got`20corrupted,\1E0A\280A\1414\4606* X$!*`20`20&0220&0420-`20Add`20a`20message`20to\0D0Bfile.\2A08\3208\1010&0220* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220HISTORY:&0420&0420\0808\1010\2020* X$!*`20`20&0220========&0420&0420\0808\1010\2020* X$!*`20`20&0220&0220v1&022007-07-97`20Oscar`20van`20Eijk\2106&0220Created\0F08 V\1708\100C* X$!*`20`20&0220&0220v2&022012-09-97`20Oscar`20van`20Eijk\2106&0220Added`20the V`20Search,`20Edit,`20Delete`20&0420* X$!*`20`20&0220&0420\0808\1010\2009and`20List`20commands.\3B11* X$!*`20`20&0220&0420\0808\1010\2009Moved`20some`20checks`20to`20ON_INIT\4507* X$!*`20`20&0220&0420\0808\1010\2009modules`20(MGT$CHECK_FACIL`20and\4507* X$!*`20`20&0220&0420\0808\1010\2009MGT$CHECK_IDENT).\3A12* X$!*`20`20&0220&0220v3&022012-08-02`20Oscar`20van`20Eijk\2106&0220Added`20the V`20CheckWritten`20function`20&0320* X$!*`20`20&0220&0220v4&022021-08-02`20Oscar`20van`20Eijk\2106&0220Bugfix;`20mes Vsage`20repair`20wrote`20in`20&0320* X$!*`20`20&0220&0420\0808\1010\2009the`20wrong`20(current)`20directory.&0520* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Add`20a`20new`20message`20to`20a`20\0D08datafile. X$! X$`20msg$_add: X$! X$`09gosub`20msg$check_input X$`09if`20$status`20.ne.`20omi$_ok`20then`20$`20return`20$\2306 X$! X$`09msg_sever`20=`20f$extract(0,`201,`20\1C09) X$`09msg_ident`20=`20f$fao("!15",`20\1F09) X$! X$`09open`20/read`20/write`20/share=read`20omi$msg`20/error=msg$flock`20- X`09`20`20`20Omi$Menu_Directory:'msg_facil'$messages.dat X$`09write`20/error=msg$error_key`20omi$msg`20"''msg_ident'''msg_sever'`20\1906 Vtext'" X$`09close`20omi$msg X$`09omi$signal`20omimgt`20addmsg X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Edit`20an`20existing`20message. X$! X$`20msg$_edit: X$! X$`09msg_sever`20=`20f$extract(0,`201,`20\1C09) X$`09msg_ident`20=`20f$fao("!15",`20\1F09) X$! X$`09open`20/read`20/write`20/share=read`20omi$msg`20/error=msg$flock`20- X`09`20`20`20Omi$Menu_Directory:'msg_facil'$messages.dat X$`09read`20/key="''msg_ident'"`20omi$msg`20msg$_message X$`09write`20/update`20omi$msg`20"''msg_ident'''msg_sever'`20\1906text'" X$`09close`20omi$msg X$`09omi$signal`20omimgt`20edtmsg X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Delete`20a`20message X$! X$`20msg$_delete: X$! X$`09omi$call`20mgt$check_facil X$`09if`20$status`20.ne.`20omi$_ok`20then`20$`20return`20$\2306 X$! X$`09gosub`20msg$read_show X$`09omi$confirm`20"Delete`20this`20message`20?`20"`20'questions$answer_yes X$`09omi$refresh X$`09if`20.not.`20omi$confirmed X$`09`20`20`20then X$`09`09omi$signal`20omimgt`20delcan X$`09`09return X$`09endif X$! X$`09open`20/read`20/write`20/share=read`20omi$msg`20/error=msg$flock`20- X`09`20`20`20Omi$Menu_Directory:'msg_facil'$messages.dat X$`09read`20/delete`20/key="''msg_ident'"`20omi$msg`20msg$_message X$`09close`20omi$msg X$`09omi$signal`20omimgt`20deleted X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Display`20a`20message X$! X$`20msg$_display: X$! X$`09omi$call`20mgt$check_facil X$`09if`20$status`20.ne.`20omi$_ok`20then`20$`20return`20$\2306 X$! X$`09gosub`20msg$read_show X$`09omi$wait X$`09omi$refresh X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Search`20for`20messages X$! X$`20msg$_search: X$! X$`09omi$call`20mgt$check_facil X$`09if`20$status`20.ne.`20omi$_ok`20then`20$`20return`20$\2306 X$! X$`09if`20p2`20.eqs.`20"" X$`09`20`20`20then`20$`20copy`20Omi$Menu_Directory:'msg_facil'$messages.dat`20- V X`09`09sys$scratch:omi_messages._tmp$ X$`09`20`20`20else X$`09`09search`20Omi$Menu_Directory:'msg_facil'$messages.dat`20'p2`20- X`09`09`20`20`20/output=sys$scratch:omi_messages._tmp$ X$`09`09if`20$status`20.eq.`20omi$_nomatch X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20nomatch,'p2 X$`09`09`09delete`20/nolog`20/noconfirm`20sys$scratch:omi_messages._tmp$; X$`09`09`09return X$`09`09endif X$`09endif X$`09open`20/read`20omi_msg`20sys$scratch:omi_messages._tmp$ X$`09open`20/write`20listing`20sys$scratch:list_messages._tmp$ X$! X$`20search$_scan: X$! X$`09read`20/end_of_file=search$end_scan`20omi_msg`20_message X$`09write`20listing`20- X`09`20`20`20"%''msg_facil'-''f$extract(15,`201,`20_message)\1E07dit(\250A0,`20 V15,`20\2509,"collapse")',`20\500D7,`20-`20f$length(\5809`20-`2017,`20\680A" X$`09goto`20search$_scan X$! X$`20search$end_scan: X$! X$`09close`20omi_msg X$`09delete`20/nolog`20/noconfirm`20sys$scratch:omi_messages._tmp$; X$`09close`20listing X$`09omi$call`20type_file`20sys$scratch:list_messages._tmp$ X$`09delete`20/nolog`20/noconfirm`20sys$scratch:list_messages._tmp$; X$! X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09If`20the`20file`20organisation`20o\1906Message`20data-\2706is`20corrup Vted, X$!`09this`20routine`20can`20be`20called`20from`20the`20Omi`20Management`20menu V`20to X$!`09repair`20it. X$! X$`20msg$_repair: X$! X$`09omi$call`20mgt$check_facil X$`09if`20$status`20.ge.`20omi$_warning`20then`20$`20return\2808 X$! X$`09_msg_file_name`20=`20f$search`20("Omi$Menu_Directory:''msg_facil'$messages V.dat") X$`09msg$file_name`20=`20"''f$parse`20(_msg_\1D09,,,,"no_conceal")'"`20-`20- X`09`20`20`20"''f$parse`20(_msg_file_name,,,"version")'"`20-`20"`5D`5B" X$`09msg$_command`20=`20"convert`20''msg$file_name'\1111;0" X$`09gosub`20msg$_fdl X$`09purge`20/nolog`20/noconfirm`20/keep=1`20'msg$file_name' X$`09omi$signal`20omimgt`20msgrep,msg_facil X$`09return X$! X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09This`20routine`20creates`20a`20new`20message`20file,`20using`20the`20c Vorrect`20FDL X$!`09definition. X$! X$`20msg$_create: X$! X$`09if`20$status`20.ge.`20omi$_warning`20then`20$`20return\1B0D X$! X$`09if`20f$search("Omi$Menu_Directory:''msg_facil'$messages.dat")`20.nes.`20"" V X$`09`20`20`20then X$`09`09omi$signal`20omimgt`20exmsgfile,msg_facil X$`09`09return`20omi$_warning X$`09endif X$! X$`09msg$_command`20=`20"create`20Omi$:''msg_facil'$messages.dat" X$`09gosub`20msg$_fdl X$`09purge`20/nolog`20/noconfirm`20/keep=1`20Omi$:'msg_facil'$messages.dat X$`09omi$signal`20omimgt`20cremsgfil,msg_facil X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Called`20by`20Add`20Message`20mnu->ON_EXIT; X$!`09Check`20if`20the`20current`20message`20facility`20has`20been`20written`20 Vto`20file. X$! X$`20msg$_checkwritten: X$! X$`09omi$check`20msg_ident`20""`20`20!`20No`20error;`20just`20nothing`20to`20 V\3006for X$`09if`20$status`20.ge.`20omi$_warning`20then`20$`20return\1B06ok X$! X$`09open`20/read`20/write`20/share=read`20omi$msg`20/error=msg$flock`20- X`09`20`20`20Omi$Menu_Directory:'msg_facil'$messages.dat X$`09read`20/error=msg$notwritten`20/key="''msg_ident'"`20omi$msg`20msg$_messag Ve X$`09close`20omi$msg X$`09return`20omi$_ok X$! X$`20msg$notwritten: X$! X$`09close`20omi$msg X$`09omi$confirm`20"The`20message`20is`20not`20yet`20written.`20Exit`20anyway?" V`20- X`09`20`20`20'questions$answer_no X$`09if`20omi$confirmed`20then`20$`20return`20omi$_ok X$`09return`20omi$_warning X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$!*`20`20&0220&0420\0806Shared`20Sub`20Routines`20and`20Error`20Handling\340E V\420A* X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Check`20to`20see`20if`20all`20required`20variables`20were`20filled`20i Vn. X$! X$`20msg$check_input: X$! X$`09omi$check`20msg_sever`20"%OMI-W-NOSEVER,`20severity`20not`20specified" X$`09if`20$status`20.ge.`20omi$_warning`20then`20$`20return\1B0D X$! X$`09omi$check`20msg_ident`20"%OMI-W-NOIDENT,`20identification`20not`20specifie Vd" X$`09if`20$status`20.ge.`20omi$_warning`20then`20$`20return\1B0D X$! X$`09omi$check`20msg_text`20`20"%OMI-W-NOTEXT,`20text`20not`20specified" X$`09if`20$status`20.ge.`20omi$_warning`20then`20$`20return\1B0D X$! X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Read`20and`20display`20a`20message X$! X$`20msg$read_show: X$! X$`09open`20/read`20/write`20/share=read`20omi$msg`20/error=msg$flock`20- X`09`20`20`20Omi$Menu_Directory:'msg_facil'$messages.dat X$`09read`20/error=msg$notfound`20/key="''msg_ident'"`20omi$msg`20msg$_message V X$`09close`20omi$msg X$! X$`09omi$record1`20=`20"`1B`5B1mFacility`20:`1B`5B0m" X$`09omi$record2`20=`20f$fao("!''screen$tab'*`20")`20+`20msg_facil X$`09omi$record3`20=`20"`1B`5B1mSeverity`20:`1B`5B0m" X$`09omi$record4`20=`20f$fao("!''screen$tab'*`20")`20+`20- X`09`20`20`20f$element(`20f$locate(`20f$extract(15,`201,`20msg$_message),`20- X`09`20`20`20"ISWEF"),",",`20"Informational,Success,Warning,Error,Fatal") X$`09omi$record5`20=`20"`1B`5B1mIdentification`20:`1B`5B0m" X$`09omi$record6`20=`20f$fao("!''screen$tab'*`20")`20+`20msg_ident X$`09omi$record7`20=`20"`1B`5B1mText`20:`1B`5B0m" X$`09omi$record8`20=`20f$fao("!''screen$tab'*`20")`20+`20- X`09`20`20`20f$extract(17,`20f$length(msg$_message)`20-`2017,`20\140D X$`09omi$display_info X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09The`20FDL`20definition`20of`20message`20files`20is`20specified`20below V.`20This`20routine X$!`09is`20called`20both`20by`20'msg$_repair'`20and`20\1206create'.`20Those`20r Voutines X$!`09define`20the`20symbol`20'msg$_command',`20which`20can`20be`20 X$!`09`20`20`20$`20CONVERT`20`20 X$! X$`20msg$_fdl: X$! X$`09'msg$_command'`20/fdl=sys$input XTITLE`09"Omi$Messages" X XIDENT`09"`204-JUL-1997`2014:09:56`20`20OpenVMS`20FDL`20Editor" X XSYSTEM X`09SOURCE`09`09`09"OpenVMS" X XFILE X`09NAME`09`09`09"OMI`20Message`20File`20Definition" X`09ORGANIZATION`09`09indexed X XRECORD X`09CARRIAGE_CONTROL`09carriage_return X`09FORMAT`09`09`09variable X`09SIZE`09`09`09132 X XAREA`200 X`09ALLOCATION`09`09321 X`09BEST_TRY_CONTIGUOUS`09yes X`09BUCKET_SIZE`09`096 X`09EXTENSION`09`0984 X XAREA`201 X`09ALLOCATION`09`0918 X`09BEST_TRY_CONTIGUOUS`09yes X`09BUCKET_SIZE`09`096 X`09EXTENSION`09`096 X XKEY`200 X`09CHANGES`09`09`09no X`09DATA_AREA`09`090 X`09DATA_FILL`09`09100 X`09DATA_KEY_COMPRESSION`09yes X`09DATA_RECORD_COMPRESSION`09yes X`09DUPLICATES`09`09no X`09INDEX_AREA`09`091 X`09INDEX_COMPRESSION`09no X`09INDEX_FILL`09`09100 X`09LEVEL1_INDEX_AREA`091 X`09NAME`09`09`09"Identification" X`09PROLOG`09`09`093 X`09SEG0_LENGTH`09`0915 X`09SEG0_POSITION`09`090 X`09TYPE`09`09`09string X$! X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!`09These`20are`20the`20error`20handlings. X$!`09Existance`20of`20the`20message`20file`20was`20already`20checked`20by X$!`09MGT$CHECK_FACIL.OMI X$! X$`20msg$flock: X$! X$!`20Message`20file`20is`20locked X$! X$`09omi$signal`20omimgt`20msgflock,msg_facil X$`09return`20omi$_warning X$! X$`20msg$error_key: X$! X$!`20Message`20already`20exists X$! X$`09close`20omi$msg X$`09omi$signal`20omimgt`20duplident,'f$edit(msg_\1206"collapse") X$`09return`20omi$_warning X$! X$`20msg$notfound: X$! X$!`20Message`20does`20not`20exist X$! X$`09close`20omi$msg X$`09omi$signal`20omimgt`20nomsg,msg_ident X$`09return`20omi$_warning X$! X$!********\0808\1010\2020\400E $ call unpack [.OMI-V2_3]MGT$MESSAGE.OMI;1 - 139039738 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 27 8 41 $! $ create 'f' X$!********\0808\1010\2020\400E X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`09This`20module`20is`20called`20when`20the`20submenu`20'Create`20a`20new V`20S\1606'`20`20&0220&0420&0220* X$!*`09is`20called`20from`20the`20management`20menu.`20It`20checkes`20to`20see V`20if\2A06enu`20`20&0220&0220* X$!*`09filename`20was`20entered,`20and`20creates`20it.`20`20&0220&0420\0808 V\1010&0220* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!********\0808\1010\2020\400E X$! X$`09omi$check`20mnu_file X$`09if`20$status`20.ge.`20omi$_warning X$`09`20`20`20then X$`09`09omi$signal`20omimgt`20specfile X$`09`09omi$wait X$`09`09exit`20omi$_warning X$`09endif X$! X$`09if`20f$search(mnu_file)`20.eqs.`20""`20then`20$`20create`20'\2208' X$`09exit`20omi$_ok $ call unpack [.OMI-V2_3]MGT$NEW_MENU_FILE.OMI;1 - 2000106588 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 2 9 41 $! $ create 'f' X$!********\0808\1010\2020\400E X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`09This`20module`20is`20called`20when`20the`20submenu`20'Create`20a`20new V`20S\1606'`20`20&0220&0420&0220* X$!*`09is`20called`20from`20the`20management`20menu.`20It`20checkes`20to`20see V`20if\2A06enu`20`20&0220&0220* X$!*`09filename`20was`20entered,`20and`20creates`20it.`20`20&0220&0420\0808 V\1010&0220* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!********\0808\1010\2020\400E X$! X$`09omi$check`20msection`20- X`09`20`20`20"%OMIMGT-W-SPECSECTION,`20no`20section`20name`20specified" X$`09if`20$status`20.ge.`20omi$_warning X$`09`20`20`20then X$`09`09omi$confirm`20"Do`20you`20want`20to`20cancel`20this`20menu`20?`20"`20'q Vuestions$answer_no X$`09`09if`20omi$confirmed`20then`20$`20exit`20omi$_ok X$`09`09exit`20omi$_warning X$`09endif X$! X$`09omi$check`20mtitle`20""`20empty_allowed X$`09if`20$status`20.eq.`20omi$_error`20then`20$`20mtitle`20=`20"" X$! X$`09omi$check`20mname`20""`20empty_allowed X$`09if`20$status`20.eq.`20omi$_error`20then`20$`20mname`20=`20"" X$! X$`09omi$check`20mcounter`20""`20empty_allowed X$`09if`20$status`20.eq.`20omi$_error`20then`20$`20mcounter`20=`20"" X$! X$`09if`20mowner`20.eqs.`20"NONE"`20then`20$\1B08=`20"" X$! X$`09open`20/append`20new_menu`20'mnu_file X$`09write`20new_menu`20"`5BMENU_''msection'`5D" X$`09if`20mtitle`20`20`20.nes.`20""`20then`20$`20write`20new_menu`20"&0320title V`09=`20''\3606'" X$`09if`20mname`20`20&0220.nes.`20""`20then`20$`20write`20new_menu`20"&0320name V`09=`20''mname'" X$`09if`20mowner`20`20`20.nes.`20""`20then`20$`20write`20new_menu`20"&0320owner V`09=`20''\3606'" X$`09if`20mcounter`20.nes.`20""`20then`20$`20write`20new_menu`20"`20`20`20\2B07 V`09=`20''\3808'" X$! X$!`20Find`20out`20if`20this`20menu`20requires`20a`20password.`20If`20so,`20pro Vmpt`20for`20one, X$! X$`09if`20mpassword`20.eqs.`20"Yes" X$`09`20`20`20then X$`09`09omi$ask`20"Enter`20a`20password`20for`20this`20menu`20" X$`09`09if`20$status`20.eq.`20omi$_cancelled X$`09`09`20`20`20then`20$`20write`20new_menu`20"&0320password`09=`20"`20!`20Use V`20initial\1B06d X$`09`09`20`20`20else X$`09`09`09omi$encrypt`20"''omi$response'"`20"''p$_key'" X$`09`09`09write`20new_menu`20"`20`20`20password`09=`20''omi$encrypted'" X$`09`09`09delete_`20/symbol`20/global`20omi$response X$`09`09`09delete_`20/symbol`20/global`20omi$encrypted X$`09`09endif X$`09endif X$! X$`09omi$check`20ssection X$`09if`20$status`20.eq.`20omi$_ok X$`09`20`20`20then X$`09`09write`20new_menu`20"`20`20`20security`09=`20''ssection'" X$`09`20`20&0220&0320`09security_block`20=`20true X$`09`20`20`20else`20$`20security_block`20=`20false X$`09endif X$! X$`09if`20counter$input_\0E07`20.eq.`201`20then`20- X`09`20`20`20$`20write`20new_menu`20"&0320all_inputs`09=`20false" X$! X$`09i`20=`201 X$! X$`20add_items: X$! X$`09omi$check`20itemtext'i' X$`09if`20$status`20.eq.`20omi$_warning X$`09`20`20`20then X$`09`09i`20=`201 X$`09`09goto`20add_inputs X$`09endif X$! X$`09write`20new_menu`20"`20`20`20item''i'`09=`20",`20- X`09`20`20`20itemtext'i',"#",itemtype\100Cp3'i' X$`09i`20=`20i`20+`201 X$`09goto`20add_items X$! X$`20add_inputs: X$! X$`09omi$check`20displtext'i' X$`09if`20$status`20.ge.`20omi$_warning`20.eqs.`20""`20then`20$`20goto`20menu_s Vection_done X$! X$`09_string`20=`20"`20`20`20input''i'`09=`20",displtext'i' X$`09if`20f$element(0,"`20",inptype'i')`20.eqs.`20"Straight"`20then`20$`20gosub V`20inp_str X$`09if`20f$element(0,"`20",inptype'i')`20.eqs.`20"Select"`20`20`20then`20$`20g Vosub`20inp_sel X$`09if`20f$element(0,"`20",inptype'i')`20.eqs.`20"Tag"`20`20&0220&0220then`20$ V`20gosub`20inp_tag X$`09i`20=`20i`20+`201 X$`09write`20new_menu`20_string X$`09goto`20add_inputs X$! X$`20inp_str: X$! X$`09_string`20=`20\0A08+`20"#"`20+`20varname'i'\1306 X$`09omi$check`20defvalue'i' X$`09if`20$status`20.eq`20omi$_ok X$`09`20`20`20then X$`09`09_string`20=`20\0A08+`20defvalue'i' X$`09endif X$`09omi$check`20frm_type'i' X$`09if`20$status`20.eq`20omi$_ok X$`09`20`20`20then X$`09`09_string`20=`20\0A08+`20"#"`20+`20frm_sname'i' X$`09endif X$`09return X$! X$`20inp_sel: X$! X$`09_string`20=`20\0A08+`20"#`7BSEL`7C"`20+`20sellist_name'i'`20+`20"`7D"`20+ V`20var\1307 X$`09omi$check`20defvalue'i' X$`09if`20$status`20.eq.`20omi$_ok X$`09`20`20`20then X$`09`09_string`20=`20\0A08+`20"#VALUE''i'" X$`09endif X$`09return X$! X$`20inp_tag: X$! X$`09_string`20=`20\0A08+`20"#`7BTAG`7C"`20+`20taglist_name'i'`20+`20"`7D"`20+ V`20var\1307 X$`09return X$! X X X$`20menu_section_done: X$! X$`09close`20new_menu X$`09exit X $ call unpack [.OMI-V2_3]MGT$WRITE_MENU_FILE.OMI;1 - 1530867914 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 8 10 41 $! $ create 'f' X!********\0808\1010\2020\400E X!*`20`20&0220&0420\0808\1010\2020\400C* X!*`20`20&0220MENU`20NAME:&0420&0420\0808\1010\201E* X!*`20`20&0220==========&0420&0420\0808\1010\201E* X!*`20`20&0220&0220Omi$Background_Module\1B06\2106\0C0C\1818`20* X!*`20`20&0220&0420\0808\1010\2020\400C* X!*`20`20&0220DESCRIPTION:&0420&0420\0808\1010\201C* X!*`20`20&0220============&0420&0420\0808\1010\201C* X!*`20`20&0220&0220This`20module`20is`20called`20internally`20by`20OMI`20to`20e Vxecute`20an`20OMI`20\3507&0520* X!*`20`20&0220&0220in`20the`20background`20(BATCH`20or`20DETACHED).\2C06\3206 V\0C0C\1808* X!*`20`20&0220&0220It`20is`20invoked`20when`20OMI`20is`20called`20with`20the`20 V/BACKGROUND`20qualifier.\4606* X!*`20`20&0220&0420\0808\1010\2020\400C* X!*`20`20&0220HISTORY:&0420&0420\0808\1010\2020* X!*`20`20&0220========&0420&0420\0808\1010\2020* X!*`20`20&0220&0220v1&022010-06-99`20Oscar`20van`20Eijk\2106&0220Created\0F08 V\1708\100C* X!*`20`20&0220&0420\0808\1010\2020\400C* X!********\0808\1010\2020\400E X! X`5BMENU_MENU`5D X`20`20`20on_init`20=`20omi$background_module X`20`20`20comment`20=`20This`20menu`20is`20used`20internally`20by`20OMI X`20`20`20name&0320`20=`20main X`20`20`20item1&0320=`20## $ call unpack [.OMI-V2_3]OMI$BACKGROUND_MODULE.MNU;1 - 2086237941 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 4 11 41 $! $ create 'f' X$`09on`20error`20then`20$`20continue X$`09on`20severe_error`20then`20$`20continue X$`09goto`20start$ X$! X$!********\0808\1010\2020\400E X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220MODULE`20NAME:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220Omi$Background_Module\1B06\2106\0C0C\1818`20* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220DESCRIPTION:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220This`20module`20is`20called`20internally`20by`20OMI`20to`20 Vexecute`20an`20OMI`20\3507&0520* X$!*`20`20&0220&0220in`20the`20background`20(BATCH`20or`20DETACHED).\2C06\3206 V\0C0C\1808* X$!*`20`20&0220&0220It`20is`20invoked`20when`20OMI`20is`20called`20with`20the V`20/BACKGROUND`20qualifier.\4606* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220HISTORY:&0420&0420\0808\1010\2020* X$!*`20`20&0220========&0420&0420\0808\1010\2020* X$!*`20`20&0220&0220v1&022010-06-99`20Oscar`20van`20Eijk\2106&0220Created\0F08 V\1708\100C* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Look`20if`20the`20module`20that`20should`20be`20started`20exists. X$! X$`20start$: X$! X$`09omi$background_module`20=`20f$parse`20(\2115,,,"name") X$`09omi$saved_module_name`20=`20omi$backgroun\1D08 X$`09omi$background_module`20=`20f$search`20- X`09`20`20`20("omi$menu_directory:''omi$background_module'.omi") X$! X$`09if`20omi$background_module`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20modnotfound,'omi$saved_module_name X$`09`09exit`20$status X$`09endif X$! X$`09omi$saved_module_name`20=`20omi$backgroun\1D08 X$`09omi$background_module`20=`20f$parse`20(\2115,,,,`20- X`09`20`20`20"no_conceal")`20-`20"`5D`5B" X$! X$!`09Define`20some`20vars`20to`20make`20sure`20the`20filenames`20are`20unique V X$! X$!`09_current_pid`20=`20f$getjpi(0,"pid") X$!`09_timestamp`20`20`20=`20"''f$extract(12,2,f$time())''\1B0C5\1B1A8\361921 V\510D" X$!`09_ident`20`20&0220&0320=`20"''_current_pid'_''_timestamp'" X$`09_ident`20=`20f$cvtime()`20-`20"-"\0606`20-`20"`20"`20-`20":\0606"`20-`20". V" X$`09_ident`20=`20f$fao("!XL",`20f$integer(\2006)) X$! X$`09Omi$_proc_name`20=`20"OMI$''_ident'" X$! X$`09Omi$_logfile`20=`20"''bgrprocess$\1807'" X$`09if`20Omi$_logfile`20.eqs.`20""`20then`20- X`09`20`20`20$`20Omi$_logfile`20=`20"Sys$login:Omi$Background_''_ident'.log" X$`09Omi$_logfile`20=`20f$parse(\170C,,,,"no_conceal")`20-`20"`5D`5B" X$! X$`09Omi$_inputfile`20=`20"sys$login:omi$background_menu_''_ident'.com" X$`09Omi$_inputfile`20=`20f$parse(\190E,,,,"no_conceal")`20-`20"`5D`5B" X$! X$`09Proc$_lgicmd`20`20=`20"''bgrprocess$detach\1F07'" X$`09Proc$_lgicmd`20`20=`20f$parse(\180C,,,,"no_conceal")`20-`20"`5D`5B" X$! X$`09gosub`20background$_menu_file X$`09gosub`20background$_command_file X$! X$`09goto`20proc$omi_'omi$background_mode' X$! X$`20proc$omi_batch: X$! X$`09if`20.not.`20omi$batch_mode`20then`20- X`09`20`20`20bgrprocess$options_bat`20=\1918+`20"/noidentification" X$`09submit`20/queue='bgrprocess$batch_queue`20/noprint`20/name='Omi$_proc_name V'`20- X`09`20`20`20/log='Omi$_logfile`20\0E06input\1006bgrprocess$options_bat X$`09_status`20=`20$\0A06 X$`09if`20.not.`20_status X$`09`20`20`20then X$`09`09omi$signal`20omi`20bgerr,_status X$`09`09exit`20$status X$`09endif X$`09goto`20background$_done X$! X$`20proc$omi_detach: X$! X$`09run`20/detached`20/process_name='Omi$_proc_name`20/output\1807logfile`20- V X`09`20`20`20/input='Omi$_inputfile`20sys$system:loginout.exe`20'bgrprocess$opt Vions_det X$`09_status`20=`20$\0A06 X$`09if`20.not.`20_status X$`09`20`20`20then X$`09`09omi$signal`20omi`20bgerr,_status X$`09`09exit`20$status X$`09endif X$`09goto`20background$_done X$! X$`20background$_done: X$! X$`09omi$signal`20omi`20bgstart,'omi$saved_module_name X$`09exit`20$status X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Create`20the`20menu`20file`20that`20will`20call`20the`20requested`20mo Vdule`20as`20an X$!`09ON_INIT`20module X$! X$`20background$_menu_file: X$! X$`09open`20/write`20omi_bmenu`20omi$menu_directory:omi$background_menu_'_ident V'.mnu X$`09write`20omi_bmenu`20"!`20This`20menu`20file`20is`20created`20by`20OMI" X$`09write`20omi_bmenu`20"!`20It`20is`20currently`20running`20in`20the`20backgr Vound,`20and`20will`20be`20deleted`20when" X$`09write`20omi_bmenu`20"!`20processing`20is`20done" X$`09write`20omi_bmenu`20"!" X$`09write`20omi_bmenu`20"!`20Do`20NOT`20delete`20or`20edit`20this`20file`20!" V X$`09write`20omi_bmenu`20"`5BMENU_MENU`5D" X$`09write`20omi_bmenu`20"`20`20`20on_init`20=`20''omi$saved_module_name'" X$`09write`20omi_bmenu`20"`20`20`20name&0320`20=`20main" X$`09write`20omi_bmenu`20"`20`20`20item1&0320=`20##" X$`09close`20omi_bmenu X$! X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Create`20the`20DCL`20script`20that`20will`20be`20used`20as`20input`20f Vor`20LOGINOUT.EXE X$!`09or`20submitted X$! X$`20background$_command_file: X$! X$`09open`20/write`20omi_bfile`20'Omi$_inputfile X$`09write`20omi_bfile`20"$!`20This`20menu`20file`20is`20created`20by`20OMI" X$`09write`20omi_bfile`20"$!`20It`20is`20currently`20running`20in`20the`20backg Vround,`20and`20will`20be`20deleted`20when" X$`09write`20omi_bfile`20"$!`20processing`20is`20done" X$`09write`20omi_bfile`20"$!" X$`09write`20omi_bfile`20"$!`20Do`20NOT`20delete`20or`20edit`20this`20file`20!" V X$`09if`20omi$_debug X$`09`20`20`20then`20$`20write`20omi_bfile`20"$`20set`20verify" X$`09`20`20`20else`20$`20write`20omi_bfile`20"$`20set`20noverify" X$`09endif X$`09if`20omi$background_mode`20.eqs.`20"detach" X$`09`20`20`20then X$`09`09_lgi_dir`20=`20f$parse("sys$login:",,,,"no_conceal")-"`5D`5B"-".;" X$`09`09write`20omi_bfile`20"$`20define`20/exec`20sys$login`20''_lgi_dir'" X$`09`09write`20omi_bfile`20"$`20define`20/exec`20sys$scratch`20''_lgi_dir'" X$`09`09write`20omi_bfile`20"$`20set`20default`20''_lgi_dir'" X$`09`09write`20omi_bfile`20"$`20@''Proc$_lgicmd'" X$`09endif X$`09write`20omi_bfile`20"$`20@",f$trnlnm("OMI$SetupProcedure") X$`09write`20omi_bfile`20"$`20omi`20omi$background_menu_''_ident'`20/submenu=ma Vin`20/jump=exit`20/batch" X$`09write`20omi_bfile`20"$`20delete`20/log`20/noconfirm`20omi$menu_directory:o Vmi$background_menu_''_ident'.mnu;*" X$`09write`20omi_bfile`20"$`20delete`20/log`20/noconfirm`20'f$environment(""pro Vcedure"")" X$`09write`20omi_bfile`20"$`20exit" X$`09close`20omi_bfile X$! X$`09return X$! X$!********\0808\1010\2020\400E $ call unpack [.OMI-V2_3]OMI$BACKGROUND_MODULE.OMI;1 - 841327625 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 13 12 41 $! $ create 'f' X$`09goto`20start$ X$! X$!********\0808\1010\2020\400E X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220MODULE`20NAME:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220Omi$Calculator.Com\1806\1E06\0C0C\1818&0420* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220CALLED`20BY:&0420&0420\0808\1010\201E* X$!*`20`20&0220==========&0420&0420\0808\1010\201E* X$!*`20`20&0220&0220Omi$Menu.Com,`20Omi$Toolbox.com\2306\2906\0C0C\1811* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220DESCRIPTION:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220This`20module`20performs`20all`20calculations.\2706includes V`20the`20use`20of\4506`20* X$!*`20`20&0220&0220floating`20points,`20which`20are`20by`20default`20not`20inc Vluded`20in`20DCL.\4006\4606* X$!*`20`20&0220&0220Results`20are`20returned`20in`20the`20global`20symbol`20OMI V$CALCULATED.\3F06\4506`20* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$`20start$: X$! X$`09if`20f$trnlnm("calc$_subresults")`20.nes.`20""`20then`20$`20close`20c\290F V X$`09formula$_master`20=`20"''p1'''p2'''p3'''p4'''p5'''p6'''p7'''p8'" X$`09formula$_master`20=`20f$edit(\190F,`20"collapse") X$`09if`20f$locate`20("?",`20formula$_master)`20.lt.`20f$length(\1F10 X$`09`20`20`20then X$`09`09formula$_master`20=`20\1210-`20"?" X$`09`09calc$show_subresults`20=`201 X$`09`09open`20/write`20calc$_subresults`20sys$scratch:\1D10._tmp$ X$`09`20`20`20else`20$`20calc$show_subresults`20=`200 X$`09endif X$! X$`20calc$find_parentheses: X$! X$`09formula$_work`20=`20\1009master X$`09if`20f$locate("(",`20formula$_master)`20.eq.`20f$length(\1F10 X$`09`20`20`20then X$`09`09if`20f$locate(")",`20formula$_master)`20.lt.`20f$length(\1F10 X$`09`09`20`20`20then`20$`20goto`20calc$parenth_error X$`09`09`20`20`20else X$`09`09`09gosub`20calc$_next X$`09`09`09goto`20calc$_end X$`09`09endif X$`09endif X$! X$`20parenth$_extract: X$! X$`09formula$_work`20=`20f$extract(f$locate("(",`20f\280C)`20+`201,`20- X`09`20`20`20f$length(formula$_work)`20-`20f$locate("(",`20f\1F0D,`20- X`09`20`20`20formula$_work) X$`09if`20f$locate("(",`20formula$_work)`20.lt.\220B)\2212then`20- X`09`20`20`20$`20goto`20parenth$_extract X$`09formula$_work`20=`20f$element(0,`20")",`20\220D) X$`09formula$saved_work`20=`20"(''\1908_work')" X$`09gosub`20calc$_next X$! X$`09omi$substitute`20"''formula$saved_work'"`20"''_result\0D06\2508_master'" X$`09if`20$status`20.ne.`20omi$_ok X$`09`20`20`20then X$`09`09calc$_status`20=`20$\0A06 X$`09`09goto`20calc$_fault X$`09endif X$`09if`20calc$show_subresults`20then`20- X`09`20`20`20$`20write`20calc$_subresults`20"->`20''formula$_master'`20=`20''om Vi$substituted'" X$`09formula$_master`20=`20omi$substituted X$! X$`09goto`20calc$find_parentheses X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Calculate`20a`20part`20of`20the`20formula`20that`20was`20enclosed`20by V`20parentheses X$! X$`20calc$_next: X$! X$`20do$_divide: X$! X$`09if`20f$locate("/",`20formula$_work)`20.eq.`20f$length(\1D0F- X`09`20`20`20then`20$`20goto`20do$_product X$! X$`09_pointer`20=`20f$locate("/",`20formula$_work) X$`09gosub`20formula$extract_current X$`09gosub`20calc$_quotient X$`09gosub`20calc$update_formula X$`09goto`20do$_divide X$! X$`20do$_product: X$! X$`09if`20f$locate("*",`20formula$_work)`20.eq.`20f$length(\1D0F- X`09`20`20`20then`20$`20goto`20do$_add X$`09_pointer`20=`20f$locate("*",`20formula$_work) X$`09gosub`20formula$extract_current X$`09gosub`20calc$_product X$`09gosub`20calc$update_formula X$`09goto`20do$_product X$! X$`20do$_add: X$! X$`09if`20f$locate("+",`20formula$_work)`20.eq.`20f$length(\1D0F- X`09`20`20`20then`20$`20goto`20do$_less X$`09_pointer`20=`20f$locate("+",`20formula$_work) X$`09if`20_pointer`20.eq.`200 X$`09`20`20`20then X$`09`09_tmp`20=`20f$element(1,`20"+",`20formula$_work) X$`09`09_pointer`20=`20f$locate("+",`20_tmp)`20+`201 X$`09endif X$`09gosub`20formula$extract_current X$`09gosub`20calc$_plus X$`09gosub`20calc$update_formula X$`09goto`20do$_add X$`09 X$! X$`20do$_less: X$! X$`09if`20f$locate("-",`20formula$_work)`20.eq.`20f$length(\1D0F- X`09`20`20`20then`20$`20return X$! X$`09_pointer`20=`20f$locate("-",`20formula$_work) X$`09if`20_pointer`20.eq.`200 X$`09`20`20`20then X$`09`09_tmp`20=`20f$element(1,`20"-",`20formula$_work) X$`09`09_pointer`20=`20f$locate("-",`20_tmp) X$`09`09if`20_pointer`20.eq.`20f$length(_tmp)`20then`20$`20return X$`09endif X$`09gosub`20formula$extract_current X$`09gosub`20calc$_less X$`09gosub`20calc$update_formula X$`09goto`20do$_less X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09We've`20got`20a`20pointer`20to`20the`20operator`20that's`20currently V`20being`20processed. X$!`09Extract`20a`20function`20with`20the`20two`20digits`20to`20use X$! X$`20formula$extract_current: X$! X$`09_fc_start`20=`20_pointer X$`09_fc_end`20`20`20=`20_pointer X$! X$`20extract$find_start: X$! X$`09if`20_fc_start`20.eq.`200`20then`20$`20goto`20extract$find_end X$`09_fc_start`20=`20\0C0A-`201 X$`09_chk`20=`20f$extract(_fc_start,`201,`20formula$_work) X$`09if`20f$type(_chk)`20.eqs.`20"INTEGER"`20.or.`20_chk\1A08."`20- X`09`20`20`20.or.`20_chk`20.eqs.`20","`20then`20$`20goto`20extract$find_start X$`09if`20_fc_start`20.eq.`200 X$`09`20`20`20then X$`09`09if`20_chk`20.nes.`20"+"`20.and.`20\150C-" X$`09`09`20`20`20then`20$`20goto`20calc$calc_error X$`09`09`20`20`20else`20$`20goto`20extract$find_end X$`09`09endif X$`09endif X$! X$`09if`20(_chk`20.eqs.`20"+"`20.or.`20\140C-")`20.and.`20(`20- X`09`20`20`20f$extract(_fc_start-1,`201,`20formula$_work)`20.eqs.`20"/"`20.or. V`20- X`09`20`20`20f$extract(_fc_start-1,`201,`20formula$_work)`20.eqs.`20"*"`20.or. V`20- X`09`20`20`20f$extract(_fc_start-1,`201,`20formula$_work)`20.eqs.`20"+"`20.or. V`20- X`09`20`20`20f$extract(_fc_start-1,`201,`20formula$_work)`20.eqs.`20"-")`20then V`20- X`09`20`20`20$`20_fc_start`20=\0C0B-`201 X$`09_fc_start`20=`20\0C0A+`201 X$! X$`20extract$find_end: X$! X$`09_fc_end`20=`20\0A08+`201 X$`09if`20_fc_end`20.eq.`20f$length(formula$_work)`20then`20$`20goto`20extract$ V_done X$`09_chk`20=`20f$extract(_fc_end,`201,`20formula$_work) X$`09if`20f$type(_chk)`20.eqs.`20"INTEGER"`20.or.`20_chk\1A08."`20- X`09`20`20`20.or.`20_chk`20.eqs.`20","`20then`20$`20goto`20extract$find_end X$`09if`20(_chk`20.eqs.`20"+"`20.or.`20\140C-")`20.and.`20- X`09`20`20`20(_pointer`20+`201)`20.eq.`20_fc_end`20then`20$`20goto`20extract$fi Vnd_end X$! X$`20extract$_done: X$! X$`09_sz`20=`20_fc_end`20-`20_fc_start X$`09formula$_current`20=`20f$extract(_fc_start,`20_sz,`20\2D09work) X$`09formula$saved_current`20=`20\1808\1308 X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09A`20part`20of`20the`20formula`20has`20been`20calculated;`20replace`20i Vt`20by`20the`20result X$! X$`20calc$update_formula: X$! X$`09omi$substitute`20"''formula$saved_current'"`20"''_resul\0D07\2808_work'" X$`09if`20$status`20.ne.`20omi$_ok X$`09`20`20`20then X$`09`09calc$_status`20=`20$\0A06 X$`09`09goto`20calc$_fault X$`09endif X$`09if`20calc$show_subresults`20then`20- X`09`20`20`20$`20write`20calc$_subresults`20"->`20''formula$_work'`20=`20''omi$ Vsubstituted'" X$`09formula$_work`20=`20omi$substituted X$! X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Error`20messages`20for`20the`20calculator. X$! X$`20calc$calc_error: X$! X$`09omi$signal`20omi`20ivdigit X$`09calc$_status`20=`20$\0A06 X$`09goto`20calc$_fault X$! X$`20calc$oper_error: X$! X$`09omi$signal`20omi`20ivoprat X$`09calc$_status`20=`20$\0A06 X$`09goto`20calc$_fault X$! X$`20calc$divzero_error: X$! X$`09omi$signal`20omi`20divzero X$`09calc$_status`20=`20$\0A06 X$`09goto`20calc$_fault X$! X$`20calc$ldigit_error: X$! X$`09omi$signal`20omi`20ldigit X$`09calc$_status`20=`20$\0A06 X$`09goto`20calc$_fault X$! X$`20calc$parenth_error: X$! X$`09omi$signal`20omi`20parnotmatch X$`09calc$_status`20=`20$\0A06 X$`09goto`20calc$_fault X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09The`20actual`20calculations X$! X$`20calc$_plus: X$! X$`09_operator`20=`20"+" X$`09gosub`20calc$_analyze X$! X$`09if`20_float X$`09`20`20`20then X$`09`09if`20_a_min`20then`20$`20_a1`20=`20"-''_a1'" X$`09`09if`20_b_min`20then`20$`20_b1`20=`20"-''_b1'" X$`09`09_a`20=`20"''_a1'''_a2'" X$`09`09_b`20=`20"''_b1'''_b2'" X$`09`09_r`20=`20f$integer(_a)`20+\100Cb) X$`09`09_r1`20=`20"''f$extract(0,f$length(_r)-\0D0Aa2),_r)'" X$`09`09_r2`20=`20"''f$extract(f$length(_r)-\0D0Aa2),\0E0E_r)'" X$`09`09if`20_r1`20.eqs.`20""`20then`20$`20_r1`20=`20"0" X$`09`09if`20_r1`20.eqs.`20"-"`20then`20$`20_r1`20=`20"-0" X$`09`09_result`20=`20"''_r1'''float$_char'''_r2'" X$`09`20`20`20else X$`09`09if`20_a_min`20then`20$`20_a`20=`20"-''_a'" X$`09`09if`20_b_min`20then`20$`20_b`20=`20"-''_b'" X$`09`09_result`20=`20f$integer(_a)`20+\100Cb) X$`09endif X$`09return X$! X$!********\0808\1010\2020\400E X$! X$`20calc$_less: X$! X$`09_operator`20=`20"-" X$`09gosub`20calc$_analyze X$`09if`20_float X$`09`20`20`20then X$`09`09if`20_a_min`20then`20$`20_a1`20=`20"-''_a1'" X$`09`09if`20_b_min`20then`20$`20_b1`20=`20"-''_b1'" X$`09`09_a`20=`20"''_a1'''_a2'" X$`09`09_b`20=`20"''_b1'''_b2'" X$`09`09_r`20=`20f$integer(_a)`20-\100Cb) X$`09`09_r1`20=`20"''f$extract(0,f$length(_r)-\0D0Aa2),_r)'" X$`09`09_r2`20=`20"''f$extract(f$length(_r)-\0D0Aa2),\0E0E_r)'" X$`09`09if`20_r1`20.eqs.`20""`20then`20$`20_r1`20=`20"0" X$`09`09if`20_r1`20.eqs.`20"-"`20then`20$`20_r1`20=`20"-0" X$`09`09_result`20=`20"''_r1'''float$_char'''_r2'" X$`09`20`20`20else X$`09`09if`20_a_min`20then`20$`20_a`20=`20"-''_a'" X$`09`09if`20_b_min`20then`20$`20_b`20=`20"-''_b'" X$`09`09_result`20=`20f$integer(_a)`20-\100Cb) X$`09endif X$`09return X$! X$!********\0808\1010\2020\400E X$! X$`20calc$_product: X$! X$`09_operator`20=`20"*" X$`09gosub`20calc$_analyze X$`09if`20_float X$`09`20`20`20then X$`09`09if`20(2147483647`20/`20f$integer(_full_a))`20.lt.\1911b) X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20prooutra,"''_full_a'*\0B08b'" X$`09`09`09calc$_status`20=`20$\0A06 X$`09`09`09omi$wait X$`09`09endif X$`09`09_r`20=`20f$integer(_full_a)`20*\1511b) X$`09`09if`20_r`20.lt.`200 X$`09`09`20`20`20then X$`09`09`09_r`20=`200`20-`20_r X$`09`09`09_sign`20=`20"-" X$`09`09`20`20`20else`20$`20_sign`20=`20"" X$`09`09endif X$`09`09if`20f$length(_r)`20.le.`20_total_decs X$`09`09`20`20`20then X$`09`09`09_r1`20=`200 X$`09`09`09_addz`20=`20_total_decs`20-`20f$length(_r) X$`09`09`09if`20_addz`20.gt.`200 X$`09`09`09`20`20`20then`20$`20_r2`20=`20f$fao("!''_addz'*0!AS",`20"''_r'") X$`09`09`09`20`20`20else`20$`20_r2`20=`20_r X$`09`09`09endif X$`09`09`20`20`20else X$`09`09`09_r1`20=`20"''f$extract(0,f$length(_r)-_total_decs,_r)'" X$`09`09`09_r2`20=`20"''f$extract(f$length(_r)-_total_decs,\0C0C_r)'" X$`09`09endif X$`09`09_result`20=`20"''_sign'''_r1'''float$_char'''_r2'" X$`09`20`20`20else X$`09`09if`20(2147483647`20/`20f$integer(_a))`20.lt.\140Cb) X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20prooutra,"''_a'*''_b'" X$`09`09`09calc$_status`20=`20$\0A06 X$`09`09`09omi$wait X$`09`09endif X$`09`09_result`20=`20f$integer(_a)`20*\100Cb) X$`09endif X$`09if`20(_a_min`20.and.`20.not.`20_b_min)`20.or.`20(\1407\270C\2108then`20- X`09`20`20`20_result`20=`20"-''\0E07'" X$`09return X$! X$!********\0808\1010\2020\400E X$! X$`20calc$_quotient: X$! X$`09_operator`20=`20"/" X$`09gosub`20calc$_analyze X$`09if`20.not.`20_float X$`09`20`20`20then`20$`20float$_char`20=`20"." X$`09`20`20`20else X$`09`09_a`20=`20"''_a1'''_a2'" X$`09`09_b`20=`20"''_b1'''_b2'" X$`09endif X$`09if`20f$integer(_b)`20.eq.`200`20then`20$`20goto`20calc$divzero_error X$`09_addz`20=`209`20-`20f$length(_a) X$`09if`20_addz`20.gt.`200`20then`20$`20_a`20=`20f$fao("!AS!''_addz'*0",`20"''_ Va'") X$`09_r`20=`20f$integer(_a)`20/\100Cb) X$`09if`20_addz`20.le.`200 X$`09`20`20`20then X$`09`09_result`20=`20_r X$`09`09if`20(_a_min`20.and.`20.not.`20_b_min)`20.or.`20(\1407\270C\2108then`20 V- X`09`09`20`20`20_result`20=`20"-''\0E07'" X$`09`09return X$`09endif X$`09_addd`20=`20_addz`20-`20f$length(_r) X$`09if`20_addd`20.gt.`200`20then`20$`20_r`20=`20f$fao("!''_addd'!AS",`20"''_r' V") X$`09_r1`20=`20"''f$extract(0,f$length(_r)-_addz,_r)'" X$`09_r2`20=`20"''f$extract(f$length(_r)-_addz,\0606_r)'" X$`09if`20_r1`20.eqs.`20""`20then`20$`20_r1`20=`20"0" X$`09if`20_r1`20.eqs.`20"-"`20then`20$`20_r1`20=`20"-0" X$`09_result`20=`20"''_r1'''float$_char'''_r2'" X$`09if`20(_a_min`20.and.`20.not.`20_b_min)`20.or.`20(\1407\270C\2108then`20- X`09`20`20`20_result`20=`20"-''\0E07'" X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Calculations`20have`20been`20made.`20Now`20put`20the`20floating`20poin Vt`20back`20in`20the X$!`09proper`20position`20if`20there`20was`20one,`20and`20set`20the`20global`20 Vvalue. X$! X$`20calc$_fault: X$! X$`09if`20calc$show_subresults X$`09`20`20`20then X$`09`09close`20calc$_subresults X$`09`09omi$call`20type_file`20sys$scratch:calc$_subresults._tmp$ X$`09`09deletee`20/nolog`20/noconfirm`20sys$scratch:calc$_subresults._tmp$; X$`09endif X$`09exit`20calc$_status X$! X$`20calc$_end: X$! X$`09omi$calculated`20==`20_result X$`09if`20calc$show_subresults X$`09`20`20`20then X$`09`09close`20calc$_subresults X$`09`09omi$call`20type_file`20sys$scratch:calc$_subresults._tmp$ X$`09`09deletee`20/nolog`20/noconfirm`20sys$scratch:calc$_subresults._tmp$; X$`09endif X$`09exit`20omi$_ok X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Check`20for`20existance`20of`20a`20floating`20point,`20and`20create`20 Vnormal`20integers X$!`09if`20they`20are`20found. X$! X$`20calc$_analyze: X$! X$`09_a_min`20=`200 X$`09_b_min`20=`200 X$`09if`20f$extract(0,`201,`20formula$_current)`20.eqs.`20"-" X$`09`20`20`20then X$`09`09formula$_current`20=`20\1311-`20"-" X$`09`09_a_min`20=`201 X$`09endif X$`09if`20f$locate`20("''_operator'-",`20formula$_current)`20.lt.`20f$length( V\2011 X$`09`20`20`20then X$`09`09formula$_current`20=`20\1311-`20"-" X$`09`09_b_min`20=`201 X$`09endif X$`09_a`20=`20f$element(0,`20"''_operator'",`20formula$_current) X$`09_b`20=`20f$element(1,`20"''_operator'",`20formula$_current) X$! X$`09_float`20=`200 X$`09if`20f$locate(".",`20_a)`20.lt.`20f$length(_a)`20.or.`20f$l\290Cb\2911b) X$`09`20`20`20then X$`09`09_float`20=`201 X$`09`09float$_char`20=`20"." X$`09endif X$! X$`09if`20f$locate(",",`20_a)`20.lt.`20f$length(_a)`20.or.`20f$l\290Cb\2911b) X$`09`20`20`20then X$`09`09_float`20=`201 X$`09`09float$_char`20=`20"," X$`09endif X$! X$`09if`20.not.`20_float X$`09`20`20`20then X$`09`09if`20f$type`20(_a)`20.nes.`20"INTEGER"`20.or.`20\2106(_b\2012then`20- X`09`09`20`20`20$`20goto`20calc$calc_error X$`09`09_a`20=`20f$integer(_a) X$`09`09_b`20=`20f$integer(_b) X$`09`09return`20`20&0220&0420\0808\1010&0520 X$`09endif X$! X$`09_a1`20=`20f$element`20(0,`20"''float$_char'",`20_a) X$`09_a2`20=`20f$element`20(1,`20"''float$_char'",`20_a) X$`09_b1`20=`20f$element`20(0,`20"''float$_char'",`20_b) X$`09_b2`20=`20f$element`20(1,`20"''float$_char'",`20_b) X$`09_total_decs`20=`20f$length(_a2)`20+\100Bb2) X$`09if`20_a1`20.eqs.`20""`20then`20$`20_a1`20=`20"0" X$`09if`20_b1`20.eqs.`20""`20then`20$`20_b1`20=`20"0" X$`09if`20_a2`20.eqs.`20float$_char X$`09`20`20`20then X$`09`09_total_decs`20=`20\0E0C-`201 X$`09`09_a2`20=`20"" X$`09endif X$`09if`20_b2`20.eqs.`20float$_char X$`09`20`20`20then X$`09`09_total_decs`20=`20\0E0C-`201 X$`09`09_b2`20=`20"" X$`09endif X$`09if`20f$type`20(_a1)`20.nes.`20"INTEGER"`20.or.`20\2206(_b\2118- X`09`20`20`20(f$type`20(_a2)`20.nes.`20"INTEGER"`20.and.`20_a2\1A08")`20.or.`20 V- X`09`20`20`20(f$type`20(_b2)`20.nes.`20"INTEGER"`20.and.`20_b2\1A08")`20then`20 V- X`09`20`20`20$`20goto`20calc$calc_error X$! X$`09_full_a`20=`20"''_a1'''_a2'" X$`09_full_b`20=`20"''_b1'''_b2'" X$!`20Should`20be`20a`20string`20overlay`20here...... X$!`09if`20f$fao("!10",_full_a)`20.gts.`20"2147483647" X$!`20....`20but`20this`20is`20fine`20as`20a`20workaround..... X$`09if`20f$integer(_full_a)`20.nes.`20"''\1207'"`20.and.`20f$length\2B0Bge.10 V X$`09`20`20`20then X$`09`09omi$signal`20omi`20outofra,_full_a X$`09`09calc$_status`20=`20$\0A06 X$`09`09goto`20calc$_fault X$`09endif X$`09if`20f$integer(_full_b)`20.nes.`20"''\1207'"`20.and.`20f$length\2B0Bge.10 V X$`09`20`20`20then X$`09`09omi$signal`20omi`20outofra,_full_b X$`09`09calc$_status`20=`20$\0A06 X$`09`09goto`20calc$_fault X$`09endif X$`09_a1`20=`20f$integer(_a1) X$`09_a2`20=`20f$integer(_a2) X$`09_b1`20=`20f$integer(_b1) X$`09_b2`20=`20f$integer(_b2) X$`09if`20f$length(_a2)`20.gt.\130Bb2) X$`09`20`20`20then X$`09`09_addz`20=`20f$length(_a2)`20-\100Bb2) X$`09`09_b2`20=`20f$fao("!UL!''_addz'*0",`20_b2) X$`09endif X$`09if`20f$length(_b2)`20.gt.\130Ba2) X$`09`20`20`20then X$`09`09_addz`20=`20f$length(_b2)`20-\100Ba2) X$`09`09_a2`20=`20f$fao("!UL!''_addz'*0",`20_a2) X$`09endif X$! X$`09return X$! X$!********\0808\1010\2020\400E $ call unpack [.OMI-V2_3]OMI$CALCULATOR.COM;1 - 876331247 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 32 13 41 $! $ create 'f' X1`20Calling_Modules X XMenu`20items`20can`20be`20used`20to`20start`20OMI`20modules,`20using`20the`20' VCALL'`20item-type, Xas`20in: X X`20`20item1`20=`20Text`20on`20Display#CALL#FILENAME`5B.OMI`5D X XThis`20item`20executes`20the`20module`20FILENAME.OMI`20when`20selected.`20Para Vmeters Xcan`20optionally`20be`20specified`20in`20the`20menu`20item,`20eventually`20usi Vng`20the`20dynamic Xinput`20identifier`20('`7E?'). X XA`20set`20of`20commands`20and`20symbols`20from`20the`20OMI`20toolbox`20is`20av Vailable`20for`20use Xin`20OMI`20modules. X XFor`20a`20description`20of`20the`20default`20tools,`20refer`20to`20the Xtopic`20'OMI_Commands'`20below. X XYou`20can`20write`20your`20own`20toolboxes,`20by`20creating`20DCL`20procedures V`20and`20modi- Xfying`20the`20file`20OMI$TOOLBOX.INI,`20located`20in`20the`20OMI$:`20directory V. X XA`20description`20of`20how`20to`20add`20tools`20is`20included`20in`20this`20.I VNI`20file. X X2`20OMI_commands X XThe`20following`20commands`20are`20available`20in`20the`20OMI`20default`20tool Vbox. XAll`20values`20of`20the`20OMI`20commands`20are`20returned`20as`20global`20symb Vols.`20When XOMI`20exits,`20all`20symbols`20will`20be`20removed. X XThe`20return`20values`20of`20all`20functions`20can`20be`201`20(normal`20succes Vsful Xcompletion),`20OMI$_WARNING`20or\1006ERROR,`20where\120B`20is Xgreater`20than`20OMI$_WARNING. X XIf`20the`20return`20value`20of`20any`20command`20is`20equal`20to`20or`20greate Vr`20than XOMI$_WARNING,`20the`20global`20symbol`20which`20should`20be`20defined`20by`20t Vhe Xcommand,`20might`20not`20have`20been`20set,`20resulting`20in`20more`20errors V`20or Xunpredictable`20behaviour`20due`20to`20the`20use`20of`20the`20value`20of`20a V`20former Xcall`20is`20the`20return`20status`20is`20not`20checked. X X3`20OMI$ASK X`20Format:`20OMI$ASK`20question X XPrompt`20the`20user`20for`20input.`20The`20p\1F06is`20specified`20as`20a`20par Vameter. XIf`20no`20parameter`20is`20specified,`20the`20value`20'default_input'`20from V`20the Xsection`20'`5Bquestions`5D'`20from`20the`20configuration`20file`20is`20used. X XThe`20user`20response`20is`20returned`20in`20the`20global`20symbol`20OMI$RESPO VNSE. XIf`20the`20user`20enters`20,`20OMI$RESPONSE`20will`20be`20empty,`20and V`20the Xstatus`20code`20will`20be`20OMI$_CANCELLED. X X X3`20OMI$CALC X`20Format:`20OMI$CALC`20calculation X XInvoke`20the`20OMI`20calculator.`20The`20result`20of`20the`20\1E08ion`20is`20r Veturned Xin`20the`20global`20symbol`20OMI$CALCULATED. XFor`20a`20description`20of`20the`20calculator,`20refer`20to`20the`20\2C0E Xthe`20OMI`20command`20CALC. X X X3`20OMI$CALL X`20Format:`20OMI$CALL`20omi-module`20`5Bparameters`5D X XThis`20command`20executes`20an`20OMI`20module.`20With`20this,`20it`20is`20poss Vible Xto`20create`20several`20standard`20OMI`20modules`20that`20will`20perform`20gen Veric Xactions,`20which`20will`20be`20executed`20from`20the`20\2906-specific`20module Vs. X X4`20Parameters X XThe`20first`20parameter`20is`20required.`20It`20is`20the`20name`20of`20the`20O VMI`20module Xthat`20will`20be`20executed. XBy`20default,`20the`20file`20has`20type`20.OMI`20and`20is`20located`20in`20OMI V$:.`20If`20not Xfound,`20OMI`20will`20look`20in`20OMI$MENU_DIRECTORY:,`20unless`20a`20full`20p Vath Xwas`20specified. X XAll`20other`20parameters`20will`20be`20passed`20to`20the`20module. X X4`20Return_value X XThe`20status`20code`20returned`20by`20this`20command`20is`20the`20final`20exit V\3707 Xof`20the`20called`20module. X X3`20OMI$CHECK X`20Format:`20OMI$CHECK`20variable`20`5Bmessage`5D`20`5BNO`5DEMPTY_ALLOWED X XThis`20command`20can`20be`20used`20to`20perform`20checks`20on`20the`20existanc Ve`20of`20required Xvariables.`20This`20is`20userful`20if`20an`20OMI`20module`20needs`20input,`20t Vhat`20has`20to`20be Xspecified`20in`20a`20menu`20where`20no`20default`20values`20are`20used. X X4`20Parameters X XThe`20first`20parameter`20is`20required.`20It`20specifies`20the`20variable`20n Vame`20that Xneeds`20to`20be`20checked. X XIf`20a`20message`20needs`20to`20be`20displayed`20when`20the`20required`20varia Vble`20has`20not Xbeen`20specified,`20this`20can`20be`20passed`20in`20the`20second`20parameter. V`20This`20is Xoptional. X XThe`20third`20parameter`20indicated`20wheter`20or`20not`20the`20variable`20is V`20allowed Xto`20be`20empty.`20By`20default,\1306`20values`20are`20not`20allowed.`20You`20 Vcan`20override Xthis`20by`20specifying`20EMPTY_ALLOWED`20as`20the`20third`20parameter. X X4`20Return_values X XWhen`20the`20variable`20is`20valid,`20value`20'1'`20is`20returned. X XWhen`20the`20varianble`20exists`20but`20is`20empty,\2307lue`20OMI$_WARNING Xis`20returned. X XWhen`20the`20variable`20doesn't`20exist`20at`20all,\2307lue`20OMI$_ERROR Xis`20returned.`20This`20is`20an`20integer,`20larger`20than`20OMI$_WARNING. X X4`20Examples X X`20`201.`20$`20OMI$CHECK`20USERNM`20"*`20ERROR`20*`20You`20didn't`20specify`20 Va`20username" X`20`20&0220`20$`20IF`20$STATUS`20.GE.`20OMI$_WARNING`20THEN`20$`20EXIT X X`20`20&0220`20In`20this`20example,`20the`20OMI`20module`20requires`20a`20usern Vame`20as`20input. X`20`20&0220`20When`20this`20variable`20has`20not`20been`20filled`20with`20a`20 Vvalue`20or`20specified X`20`20&0220`20at`20all,`20the`20error`20message`20is`20displayed.`20The`20retu Vrn`20value`20can X`20`20&0220`20be`20OMI$_WARNING`20or`20greater,`20indicating`20not`20all`20req Vuired`20infor- X`20`20&0220`20mation`20was`20specified,`20due`20to`20which`20conreol`20is`20re Vturned`20to`20the X`20`20&0220`20menu. X X`20`202.`20$`20OMI$CHECK`20FNAME`20"*`20ERROR`20*`20No`20file`20name`20specifi Ved"`20EMPTY_ALLOWED X`20`20&0220`20$`20STATUS`20=`20$\0A06 X`20`20&0220`20$`20IF`20STATUS`20.EQ.`20OMI$_ERROR`20THEN`20$`20EXIT X`20`20&0220`20$`20IF`20STATUS`20.EQ.`20OMI$_WARNING X`20`20&0220`20$&0220THEN X`20`20&0220`20$&0420OMI$DISPLAY_MESSAGE`20"*`20INFO`20*`20Using`20all`20files" V X`20`20&0220`20$&0420FNAME`20=`20"*.*" X`20`20&0220`20$`20ENDIF X X`20`20&0220`20This`20example`20shows`20how`20OMI$CHECK`20can`20be`20used`20to V`20check`20the X`20`20&0220`20value`20of`20the`20variable`20FNAME,`20allowing`20an`20empty V\2F06. X`20`20&0220`20The`20parameter`20EMPTY_ALLOWED`20causes`20OMI`20to`20display`20 Vthe X`20`20&0220`20error`20message`20only`20when`20the`20variable`20doesn't`20exist V`20at`20all. X`20`20&0220`20The`20return`20value`20does`20indicate`20an`20empty\1D06,`20but V`20the X`20`20&0220`20message`20won't`20be`20displayed,`20and`20the`20OMI`20module`20t Vakes`20action X`20`20&0220`20upon`20that. X X3`20OMI$CMDLINE_CLEAR X`20Format:`20OMI$CMDLINE_CLEAR X XThis`20command`20erases`20the`20contents`20of\1007\2306line`20of Xthe`20OMI`20menu`20window. X X3`20OMI$CONFIRM X`20Format:`20OMI$CONFIRM`20question`20`5Bdefault`5D X XThis`20command`20asks`20a`20question`20that`20can`20be`20answered`20with`20Y(e Vs)`20or`20N(o) X(refer`20to`20the`20documentation`20to`20translate`20these`20possible`20answer Vs`20to Xyour`20preferred`20language),`20and`20handles`20all`20input`20and`20output,`20 Vreturning Xthe`20value`20back`20to`20the`20calling`20procedure. X X4`20Parameters X XThe`20first`20parameter`20is`20a`20string,`20that`20will`20be`20displayed`20ex Vactly Xon`20the`20input`20line`20of`20the`20menu`20string,`20followed`20by`20the`20ch Voices Xthan`20can`20be`20made`20"(Y/N)",`20where`20'Y'`20and`20'N'`20are`20values`20t Vhat`20can Xbe`20modified`20in`20the`20`5BQUESTIONS`5D`20section`20of`20the`20configuratio Vn`20file. X XThe`20second`20parameter`20represents`20the`20default`20value.`20This`20parama Vter Xcan`20be`20"Y"`20or`20"N"`20(only`20the`20first`20character`20is`20read).`20If V`20omitted, Xno`20default`20value`20will`20be`20availble,`20and`20the`20user`20is`20require Vd`20to Xenter`20valid`20input. X X4`20Return_value X XThis`20command`20defines`20a`20global`20symbol`20OMI$CONFIRMED.`20\3406an`20be V X'1'`20(true)`20or`20'2'`20(false). XThe`20symbol`20will`20be`20cleaned`20upat`20the`20end`20of`20the`20procedure, V`20but`20also Xevery`20time`20the`20OMI$CONFIRM`20command`20is`20called,`20to`20prevent`20con Vflicts. X XNOTE:`20Make`20sure`20you`20don't`20use`20an`20local`20symbol`20with`20the`20s Vame`20name, X`20`20&0220&0220since`20that`20will`20always`20overwrite`20the`20returned`20va Vlue`20of`20this X`20`20&0220&0220command!`20 X X4`20Example X X`20`20`20$`20OMI$CONFIRM`20"Are`20you`20sure`20?"`20'QUESTIONS$ANSWER_NO X`20`20`20$`20IF`20OMI$CONFIRMED`20THEN`20$`20GOTO`20USER_IS_SURE X X`20`20`20This`20command`20will`20display`20the`20following`20question`20on`20t Vhe X`20`20`20input`20line: X`20`20&0220Are`20you`20sure`20?`20(Y/`5BN`5D)`20 X X`20`20`20The`20square`20brackets`20indicate`20the`20default`20answer. X X3`20OMI$CREATE_MBX X`20Format:`20OMI$CREATE_MBX`20logical-name X XOpen`20a`20temporary`20mailbox.`20This`20command`20creates`20a`20\2007`20for V`20read Xand`20write,`20and`20a`20logical`20which`20points`20to`20the`20I/O`20channel. V`20 X XThe`20mailbox`20will`20automatically`20be`20removed`20when`20the`20command X`20$`20CLOSE`20logical-name Xis`20issued`20and`20no`20other`20processes`20have`20an`20open`20connection`20w Vith Xthe`20mailbox.`20This`20can`20be`20done`20by`20the`20OMI`20module,`20but`20whe Vn`20OMI`20exits, Xthe`20mailboxes`20that`20are`20still`20opened,`20will`20be`20closed`20automati Vcally. X X X4`20Parameter X XThe`20optional`20parameter`20specifies`20the`20name`20of`20the`20logical Xthat`20points`20to`20the`20I/O`20channel,`20which`20is`20the`20same`20name`20t Vhat Xs`20used`20for`20the`20logical.`20An`20error`20occures`20if`20the`20parameter V Xspecifies`20a`20name`20thats`20already`20in`20use`20for`20an`20existing`20logi Vcal. XIf`20the`20parameter`20is`20omitted,`20the`20name`20will`20default`20to`20OMI$ VMAILBOX.`20 X X X4`20Return_values X X XOMI$CREATE_MBX`20returns`20a`20logical`20name`20which`20points`20to`20the`20I/ VO`20channel. XThis`20can`20be`20used`20to`20write`20text`20to`20the`20mailbox`20using`20the V`20command X`20$`20WRITE`20logical-name`20"Line`20of`20text" Xor`20to`20read`20using`20the`20command X`20$`20READ`20logical-name`20my-symbol X XA`20global`20symbol`20with`20the`20same`20name`20is`20also`20defined,`20contai Vning`20the Xdevice`20name`20of`20the`20mailbox`20(MBAxxx:).`20This`20value`20can`20be`20tr Vansfered Xto`20other`20processes,`20with`20which`20they`20can`20open`20the`20same`20mail Vbox`20for Xcommunication: X`20$`20OPEN`20/READ`20/WRITE`20my-logical`20`60symbol-name`60 X X X3`20OMI$DATE_INFO X`20Format:`20OMI$DATE_INFO`20date X XCalculates`20the`20current`20daynumber`20(day-of-year),`20week\1A07and Xmonthnumber.`20The`20values`20are`20returned`20in`20the`20following`20global V`20symbols: X X`20`20`20OMI$DAYNUMBER X`20`20`20OMI$WEEKNUMBER X`20`20`20OMI$MONTHNUMBER X X4`20Parameter X XA`20date`20can`20optionally`20be`20specified`20as`20a`20parameter.`20If`20omit Vted,`20it Xdefaults`20to`20the`20current`20date. XThe`20date`20information`20is`20returned`20for`20the`20current`20date. X X3`20OMI$DECRYPT X`20Format:`20OMI$DECRYPT`20encrypted-string`20key-name X XThis`20command`20can`20be`20used`20to`20decrypt`20a`20string,`20that`20was Xencrypted`20with`20OMI$ENCRYPT. X XThe`20result`20will`20be`20returned`20in`20the`20global`20symbol XOMI$DECRYPTED. X X4`20Parameters X XSpecify`20the`20encrypted`20string`20as`20the`20first`20parameter. X XThe`20second`20parameter`20should`20be`20the`20name`20of`20the`20key`20with`20 Vwhich Xthe`20string`20was`20encrypted.`20It`20has`20to`20exist`20at`20the`20keyring V`20of Xthe`20users`20configuration`20file.`20If`20it`20s`20not`20there,`20it`20can`20 Vbe Ximported`20with`20the`20OMI`20command`20IMPORT`20KEY. X X3`20OMI$DISPLAY_INFO X`20Format:`20OMI$DISPLAY_INFO X XWrites`20specified`20information`20to`20the`20menu`20screen.`20The`20\240B Xhas`20to`20be`20specified`20as`20separate`20records,`20named`20OMI$RECORD1, XOMI$RECORD2,`20...`20\110An. X X***`20NOTE:`20If`20this`20command`20is`20called`20more`20than`20once`20during V`20the X`20`20&0220&0420&0220same`20run`20(without`20any`20'exit'`20commands),`20make V`20sure X`20`20&0220&0420&0220the`20symbols`20OMI$RECORDn`20of`20the`20previous`20calls V`20are X`20`20&0220&0420&0220erased`20or`20overwritten. X X`20`20&0220&0220eg.`20If`20the`20first`20call`20writes`205`20records`20to`20th Ve`20screen,`20and X`20`20&0220&0420&0220the`20second`20call`20should`20write`204`20records,`20it' Vll`20also X`20`20&0220&0420&0220write`20the`20last`20record`20of`20the`20first`20call. X`20`20&0220&0420&0220The`20older`20fifth`20record`20should`20be`20removed`20us Ving X`20`20&0220&0420&0420$`20DELETE`20/SYMBOL`20/LOCAL`20OMI$RECORD5 X X`20`20&0220&0420&0220The`20OMI$RECORDn`20symbols`20should`20be`20local. X X4`20Example X X`20`20`20$`20OMI$RECORD1&0220=`20"Username&0320:`20"`20+`20USR$NAME X`20`20`20$`20OMI$RECORD2&0220=`20"Login`20dir&0220:`20"`20+`20USR$HOME X`20`20`20$`20OMI$RECORD3&0220=`20"Owner&0320&0320:`20"`20+`20USR$OWNER X`20`20`20$`20OMI$RECORD4&0220=`20"Used`20quota`20:`20"`20+`20USR$QUOTA X`20`20`20$`20OMI$DISPLAY_INFO X`20`20`20$`20OMI$WAIT X`20`20`20$`20OMI$REFRESH X`20`20`20$`20EXIT X X`20`20`20In`20this`20example,`20information,`20gathered`20by`20the`20procedure V, X`20`20`20if`20stored`20in`20the`20OMI$RECORDn`20symbols,`20and`20presented`20o Vn X`20`20`20the`20menu`20window.`20After`20being`20displayed,`20OMI$WAIT`20is`20c Valled, X`20`20`20to`20give`20the`20user`20the`20change`20to`20read`20the`20information V`20before X`20`20`20the`20menu`20window`20is`20set`20up`20again. X X3`20OMI$DISPLAY_MESSAGE X`20Format:`20OMI$DISPLAY_MESSAGE`20message X XThis`20command`20writes`20a`20message`20to`20SYS$ERROR,`20on`20the`20\1D07 Xline`20of`20the`20OMI`20menu`20window. X X4`20Parameter X XYou`20can`20enter`20any`20string`20as`20a`20parameter,`20enclosed`20by`20doubl Ve Xquotes`20("),`20using`20variable`20substitution\1C07double`20single Xquotes`20(''),`20in`20exactly`20the`20same`20way`20as`20the`20DCL`20command XWRITE. X X3`20OMI$DUMP_INFO X`20Format:`20OMI$DUMP_INFO`20filename X XThis`20command`20can`20be`20used`20to`20dump`20the`20information,`20that\2A07 V Xdisplayed`20by`20OMI$DISPLAY_INFO`20to`20a`20specified`20file.`20The`20informa Vtion Xhas`20to`20be`20specified`20as`20separate`20records,`20named`20OMI$RECORD1, XOMI$RECORD2,`20...`20\110An. X X***`20NOTE:`20If`20this`20command`20is`20called`20more`20than`20once`20during V`20the X`20`20&0220&0420&0220same`20run`20(without`20any`20'exit'`20commands),`20make V`20sure X`20`20&0220&0420&0220the`20symbols`20OMI$RECORDn`20of`20the`20previous`20calls V`20are X`20`20&0220&0420&0220erased`20or`20overwritten. X X`20`20&0220&0220eg.`20If`20the`20first`20call`20writes`205`20records`20to`20th Ve`20screen,`20and X`20`20&0220&0420&0220the`20second`20call`20should`20write`204`20records,`20it' Vll`20also X`20`20&0220&0420&0220write`20the`20last`20record`20of`20the`20first`20call. X`20`20&0220&0420&0220The`20older`20fifth`20record`20should`20be`20removed`20us Ving X`20`20&0220&0420&0420$`20DELETE`20/SYMBOL`20/LOCAL`20OMI$RECORD5 X X`20`20&0220&0420&0220The`20OMI$RECORDn`20symbols`20should`20be`20local. X X4`20Parameter X XA`20parameter`20is`20required,`20and`20should`20contain`20the`20name`20of`20th Ve`20file Xto`20write`20the`20information`20to.`20If`20the`20file`20already`20exists,`20t Vhe`20new Xinformation`20will`20be`20added`20at`20the`20end`20of`20the`20file.`20Otherwis Ve,`20the Xfile`20will`20be`20created. X X3`20OMI$ENCRYPT X`20Format:`20OMI$ENCRYPT`20string X XThis`20command`20can`20be`20used`20to`20perform`20some`20rude`20encryption`20o Vn Xthe`20input`20string,`20which`20is`20specified`20as`20a`20parameter. X XThe`20result`20will`20be`20returned`20in`20the`20global`20symbol XOMI$ENCRYPTED. X X3`20OMI$GET_VMSMESSAGE X`20Format:`20OMI$GET_VMSMESSAGE`20status-code X XThis`20command`20translates`20a`20VMS`20status`20code`20and`20returns`20it`20i Vn`20the Xglobal`20symbol`20OMI$VMS_MESSAGE. X X4`20Parameter X XA`20valid`20status`20code`20is`20required.`20This`20must`20be`20an`20integer V`20value, Xwhich`20can`20be`20specified`20as`20decimal`20or`20hexa\0F07.`20 X X4`20Return_value X XIf`20a`20message`20was`20found,`20this`20function`20returns`20OMI$_OK`20and`20 Vstores Xthe`20found`20message`20in`20the`20global`20symbol`20OMI$VMS_MESSAGE. X XIf`20no`20message`20was`20found,`20this`20function`20returns`20OMI$_WARNING. XOn`20other`20warnings`20and`20errors,`20OMI$_ERROR`20is`20returned. X X3`20OMI$INPUT_VALIDATE X`20Format:`20OMI$VARIABLE`20=`20 X`20`20&0220&0420`20OMI$INPUT_VALIDATE X XOn`20any`20input`20prompt,`20variables`20can`20be`20entered`20using`20single V`20quotes. XThis`20command`20can`20be`20used`20to`20validate`20input`20entered`20by`20the V`20user, Xto`20see`20if`20the`20string`20is`20straight,`20or`20should`20be`20interpreted V`20as`20a Xvariable`20or`20a`20fuction. X XBefore`20the`20function`20is`20called,`20the`20variable`20OMI$VARIABLE`20has V`20to Xbe`20defined,`20containing`20the`20name`20of`20the`20variable`20that`20should V`20be Xchecked. X XThis`20function`20fixes`20a`20possible`20bug`20pointed`20to`20by`20Henry`20Jue Vngst X(juengst@saph1.iskp.uni-bonn.de),`20when`20"''f$pid(goto)'"`20(without Xthe`20double`20quotes)`20is`20entered`20as`20a`20password`20anywhere;`20this Xcauses`20OMI`20to`20crash. X XThe`20same`20problem`20can`20occur`20anywhere`20\0606an`20input`20string`20is V Xcompared. X X4`20Return_Value X XOMI$INPUT_VALIDATE`20returns`20OMI$_OK`20when`20the`20input`20string`20or Xvariable`20has`20the`20correct`20syntax. X XWhen`20a`20variable`20name`20was`20entered`20between`20two`20single`20quotes X(eg.`20'INPUT')`20and`20the`20variable`20(INPUT`20in`20this`20example)`20is Xnot`20defined,`20the`20function`20returns`20OMI$_WARNING. X XWhen`20a`20variable`20name`20was`20entered`20between`20three`20single`20quotes V X(eg.`20''INPUT')`20and`20the`20variable`20(INPUT`20in`20this`20example)`20is Xnot`20defined,`20the`20function`20returns`20OMI$_ERROR. X XThis`20value`20is`20also`20returned`20when`20OMI$VARIABLE`20is`20not`20set`20( Vthis Xis`20a`20programming`20bug). X X4`20Examples X X`201.`20$`20READ`20/PROMPT="Password:`20"`20SYS$COMMAND`20PASSWD X`20`20&0220$`20OMI$CMDLINE_CLEAR X`20`20&0220$`20OMI$VARIABLE`20=`20"PASSWD" X`20`20&0220$`20OMI$INPUT_VALIDATE X`20`20&0220$`20IF`20$STATUS`20.EQ.`20OMI$_ERROR X`20`20&0220$&0220THEN X`20`20&0220$&0320OMI$DISPLAY_MESSAGE`20"Invalid`20password" X`20`20&0220$&0320RETURN X`20`20&0220$`20ENDIF X`20`20&0220$`20OMI$ENCRYPT`20"''PASSWD'" X X`20`20&0220In`20this`20example,`20OMI$INPUT_VALIDATE`20is`20called`20to`20chec Vk`20the X`20`20&0220syntax`20of`20the`20password`20that`20was`20entered. X`20`20&0220If`20the`20input`20was`20enclosed`20by`20single`20quotes`20('INPUT' V),`20these X`20`20&0220are`20compared`20literally,`20but`20if`20three`20single`20quotes`20 Vare X`20`20&0220used`20(''INPUT'),`20INPUT`20will`20be`20translated`20by`20the`20ca Vll`20of X`20`20&0220OMI$ENCRYPT. X`20`20&0220If`20INPUT`20is`20a`20function`20like`20F$PID(GOTO),`20the`20\1F08 V X`20`20&0220is`20executed`20causing`20GOTO`20to`20be`20defined`20as`20a`20new V`20symbol! X X`202.`20$`20READ`20/PROMPT="Password:`20"`20SYS$COMMAND`20PASSWD X`20`20&0220$`20OMI$CMDLINE_CLEAR X`20`20&0220$`20OMI$VARIABLE`20=`20"PASSWD" X`20`20&0220$`20OMI$INPUT_VALIDATE X`20`20&0220$`20IF`20$STATUS`20.EQ.`20OMI$_WARNING X`20`20&0220$&0220THEN X`20`20&0220$&0320OMI$DISPLAY_MESSAGE`20"Invalid`20password" X`20`20&0220$&0320RETURN X`20`20&0220$`20ENDIF X`20`20&0220$`20OMI$ENCRYPT`20PASSWD X X`20`20&0220The`20main`20difference`20in`20this`20example`20is`20the`20call`20o Vf X`20`20&0220OMI$ENCRYPT,`20where`20the`20password`20is`20not`20passed`20to`20th Ve X`20`20&0220function`20between`20double`20quotes`20(causing`20the`20input`20to V X`20`20&0220be`20translated`20to`20uppercase). X`20`20&0220Due`20to`20this,`20the`20return`20value`20of`20OMI$INPUT_VALIDATE X`20`20&0220is`20checked`20on`20warning`20status;`20any`20input`20will`20be`20e Vvaluated X`20`20&0220when`20enclosed`20by`20single`20quotes`20('INPUT'). X X`20`20&0220If`20you're`20not`20sure`20if`20you`20should`20check`20on`20OMI$_WA VRNING X`20`20&0220or`20OMI$_ERROR,`20it's`20always`20safe`20to`20use`20the`20folling V`20check: X`20`20&0220&0320$`20IF`20$STATUS`20.GE.`20OMI$_WARNING X X3`20OMI$MSGLINE_CLEAR X`20Format:`20OMI$MSGLINE_CLEAR X XThis`20command`20erases`20the`20contents`20of`20the`20message`20line`20of Xthe`20OMI`20menu`20window. X X3`20OMI$POPUP X`20Format:`20OMI$POPUP`20message`20`5BNOREFRESH`5D X XThis`20command`20display`20a`20popup`20message`20box`20on`20top`20of`20the`20m Venu Xscreen.`20The`20user`20then`20has`20to`20press`20return`20to`20acknowledge`20t Vhe Xmessage. X X4`20Parameters X XThe`20first`20parameter`20should`20be`20enclosed`20by`20double`20quotes.`20It V Xcontains`20the`20message`20that`20will`20be`20displayed`20in`20the`20popup`20b Vox. X XThe`20second`20parameter`20is`20optional;`20by`20default,`20the`20screen`20wil Vl Xbe`20refreshed`20after`20the`20call`20of`20this`20command,`20but`20when\2306 V\1606 Xis`20called`20by`20an`20ON_INIT`20element,`20the`20menu`20screen`20is`20yet`20 Vto`20be Xdrawn.`20To`20prevent`20the`20screen`20to`20be`20drawn`20twice,`20specify`20a V`20second Xparamer`20as`20NOREFRESH`20in`20such`20situation. X X3`20OMI$REFRESH X`20Format:`20OMI$REFRESH X XRebuilds`20the`20menu`20window`20with`20the`20current\1D06options.`20This Xoption`20is`20especially`20usefull`20after`20the`20OMI$DISPLAY_INFO`20command. V X X3`20OMI$REVERSE X`20Format:`20OMI$REVERSE`20string X XThis`20command`20does`20what`20you`20would`20expect`20the`20DCL`20lexical XF$EDIT(string,"REVERSE")`20to`20do. X XThe`20reversed`20value`20of`20the`20input`20string`20will`20be`20returned Xin`20the`20global`20symbol`20OMI$REVERSED. X X4`20Example X X`20`20`20$`20DIRECTORY`20=`20"DEVICE:`5BTOPDIR.SUBDIR`5D" X`20`20`20$`20OMI$REVERSE`20'DIRECTORY' X`20`20`20$`20REVERSED`20=`20OMI$\0F09-`20"`5D" X`20`20`20$`20FILENAME`20=`20F$ELEMENT(0,`20".",`20REVERSED) X`20`20`20$`20REVERSED`20=\0B0A-`20"''FILENAME'." X`09`09!`20Dot`20behind`20the`20filename: X`20`20&0220&0420\0808!`20it's`20reversed! X`20`20`20$`20FILENAME`20=`20"RID."`20+\140A+`20"`5D"`20+`20REVERSED X`20`20`20$`20OMI$REVERSE`20'FILENAME' X`20`20`20$`20FILENAME`20=`20OMI$REVERSED X X`20`20`20This`20example`20reads`20a`20directory`20specificaion`20as`20input, X`20`20`20reverses`20it`20and`20filters`20the`20last`20directory`20as`20a`20fil Vename. X`20`20`20The`20new`20filename`20is`20composed`20completely`20reversed`20includ Ving X`20`20`20the`20filetype`20(reversed`20of`20'.DIR'). X`20`20`20After`20this,`20the`20complete`20name`20is`20reversed`20again,`20resu Vlting X`20`20`20in`20the`20value`20DEVICE:`5BTOPDIR`5DSUBDIR.DIR X X3`20OMI$SIGNAL X`20Format:`20OMI$SIGNAL`20facility`20identifier`5B,variable\0909...`5D X XThis`20command`20signals`20a`20message`20that`20will`20be`20read`20from`20the V Xmessage`20datafile. XMessage`20datafiles`20can`20be`20created`20and`20filled`20with`20the`20OMI$MAN VAGE Xmenu. XFor`20more`20information`20about`20message`20definitions,`20refer`20to`20the XOMI`20Documentation. X X4`20Parameters X XFacility X XThe`20first`20parameter`20points`20to`20the`20facility`20of`20which`20the`20me Vssage Xshould`20be`20signaled. XThis`20requires`20the`20message`20file`20'OMI$:facility$MESSAGES.DAT' X XIdentifier X XThe`20second`20parameter`20identies`20the`20message.`20The`20\0D07`20file Xhas`20an`20indexed`20format,`20and`20the`20identifies`20is`20the`20key`20that V`20will Xbe`20used`20to`20read`20the`20message. XIf`20the`20message`20contains`20variables,`20the`20string`20in`20the`20datafil Ve`20has Xto`20contain`20the`20substring`20`7ES,`20which`20will`20be`20replaced`20by`20t Vhe`20arguments Xthat`20were`20given`20in`20the`20second`20argument,`20separated`20by`20commas. V X X*NOTE:`20If`20arguments`20are`20passed`20to`20OMI$SIGNAL`20using`20lexical X`20`20&0220&0320functions`20they`20have`20to`20be`20preceded`20by`20a`20single V`20quote, X`20`20&0220&0320e.g.: X`20`20&0220&0420$`20OMI$SIGNAL`20MYFACIL`20MYIDENT,var1,'f$edit(str2,"upcase") V X X3`20OMI$SUBMIT X`20Format:`20OMI$SUBMIT`20omi_module X XWith`20this`20command,`20an`20OMI`20module`20can`20be`20started`20in`20the`20b Vackground. XIt`20works`20the`20same`20as`20using`20the`20qualife`20/BACKGROUND=BATCH`20fro Vm`20the XDCL`20prompt. XWhen`20starting`20a`20background`20process`20from`20the`20OMI`20prompt,a`20mod Vule Xcan`20only`20be`20started`20as`20a`20batch`20job;`20not\1406detached`20process V. X XAll`20defaults`20for`20the`20Submit`20command`20(batch`20queue,`20logfile)`20a Vre Xtaken`20from`20the`20`5BBGRPROCESS`5D`20section`20in`20the`20user's`20configur Vation`20file. X X4`20Parameter X XThe`20parameter`20is`20the`20name`20of`20the`20OMI`20module`20to`20start`20(na Vme.OMI).`20It Xhas`20to`20be`20located`20in`20the`20OMI$MENU_DIRECTORY:`20searchpath. XThis`20module`20should`20be`20created`20to`20run`20unattended`20(e.g.`20using V XMailboxes`20for`20communication). X X X3`20OMI$SUBSTITUTE X`20Format:`20OMI$SUBSTITUTE`20search-str`20replace-str`20input-str X XThis`20command`20can`20be`20used`20to`20replace`20a`20substring`20by`20another V Xstring`20in`20the`20input`20\1406. X X4`20Parameters X XThe`20first`20parameter`20specifies`20the`20search`20string.`20This Xstring`20will`20be`20replaced`20by`20the`20sub\2207specified`20in Xthe`20second`20parameter X XThe`20third`20parameter`20is`20the`20input`20string`20in`20which`20the Xsubstring`20has`20to`20be`20replaced. X X4`20Return_value X XThe`20result`20of`20this`20function`20is`20returned`20in`20the`20global Xsymbol`20OMI$SUBSTITUTED. X XIf`20the`20search`20string`20o\1506first`20argument`20was`20not`20found Xin`20the`20input`20string,`20this`20command`20returns`20OMI$_WARNING. X X3`20OMI$WAIT X`20Format:`20OMI$WAIT X XCauses`20the`20procedure`20to`20wait`20until`20the`20user`20hit\2A06Return`20k Vey. XBy`20default`20the`20user`20will`20be`20prompted`20with`20the`20line X`20"Press`20`20to`20continue`20" XThis`20can`20be`20overwritten`20by`20modifying`20the`20value`20of`20'wait_prom Vpt' Xin`20the`20section`20`5Bquestions`5D`20of`20OMI$MENU.CFG. X XThis`20command`20is`20very`20useful`20when`20output`20is`20displayed,`20eg.`20 Vusing`20the XOMI$DISPLAY_INFO`20command,`20and`20the`20screen`20has`20to`20be`20refreshed V`20before Xreturning`20to`20the`20menu. X XWhen`20running`20in`20BATCH`20mode,`20this`20command`20is`20ignored. X X4`20Return_value X XBy`20default,`20this`20command`20returns`20status`20code`201`20(normal`20succe Vssful Xcompletion). XWhen`20the`20user`20presses`20Ctrl/Z`20in`20stead`20of`20return,`20this`20func Vtion Xreturns`20OMI$_CANCELLED. X X4`20Example X X`20`20`20$LOOP: X`20`20`20$`20READ`20/END_OF_FILE=DONE`20INPUT`20RECORD X`20`20`20$`20OMI$RECORD1&0220=`20"Date&0320:`20"`20+`20F$ELEMENT(0,`20"#",`20 V\2B06) X`20`20`20$`20OMI$RECORD2&0220=`20"Count&0220:`20"`20+`20F$ELEMENT(1,`20"#",`20 V\2B06) X`20`20`20$`20OMI$DISPLAY_INFO X`20`20`20$`20OMI$WAIT X`20`20`20$`20IF`20$STATUS`20.EQ.`20OMI$_CANCELLED`20THEN`20$`20GOTO`20END X`20`20`20$`20GOTO`20LOOP X`20`20`20$END: X`20`20`20$`20CLOSE`20INPUT X`20`20`20$`20OMI$REFRESH X`20`20`20$`20EXIT X X`20`20`20In`20this`20example,`20information,`20read`20from`20an`20input`20file V,`20is X`20`20`20displayed`20record`20by\0A08in`20a`20loop. X`20`20`20When`20the`20user`20has`20seen`20enough,`20he`20can`20cancel`20the`20 Vloop`20by X`20`20`20pressing`20Ctrl/Z. X X2`20OMI_symbols X XThere`20are`20two`20types`20of`20symbols;`20local\0F08,`20which`20are`20availa Vble Xby`20default,`20and`20global`20symbols,`20which`20will`20be`20set`20when`20the V`20proper Xcommand`20from`20the`20OMI`20toolbox`20is`20called. X XThe`20local`20symbols`20are`20described`20below.`20The`20subtopic`20'Global_S V\3206' Xcontains`20a`20list`20of`20symbols`20and`20the`20OMI`20comm\1006at`20sets`20th Vem. XFor`20more`20information,`20refer`20to`20the`20command`20description. X X3`20Local_Symbols X XThe`20following`20symbols`20are`20availble`20by`20default`20for`20use`20in XOMI`20modules. X X`20`20OMI$_OK&0220&0220&0220`09`09This`20is`20an`20exit`20status`20that`20indi Vcates`20a X`20`20&0220&0420\0808\1008normal`20successful`20completion.\3508 X X`20`20OMI$_WARNING`09`09This`20is`20an`20exit`20status`20that`20can`20be`20use Vd X`20`20&0220&0420\0808\1008for`20warnings.`20If`20a`20OMI`20module`20exits X`20`20&0220&0420\0808\1008with`20a`20warning,`20OMI$MENU`20takes`20no`20action V, X`20`20&0220&0420\0808\1008but`20it`20might`20be`20useful`20when`20OMI`20module Vs X`20`20&0220&0420\0808\1008call`20other`20procedures. X X`20`20OMI$_ERROR&0220`20`09`09This`20is`20an`20exit`20status`20that`20can`20be V`20used X`20`20&0220&0420\0808\1008for`20errors.`20If`20a`20OMI`20module`20exits X`20`20&0220&0420\0808\1008with`20an`20error,`20OMI$MENU`20takes`20no`20action, V X`20`20&0220&0420\0808\1008but`20it`20might`20be`20useful`20when`20OMI`20module Vs X`20`20&0220&0420\0808\1008call`20other`20procedures. X X`20`20OMI$NODENAME&0220&0220`20`09The`20nodename`20on`20which`20OMI`20is`20cur Vrently`20running. X X`20`20OMI$CURRENT_USER`09The`20name`20of`20the`20user`20currently`20running`20 Vthe`20 X`20`20&0220&0420\0808\1008menu`20is`20stored`20in`20this`20symbol. X X`20`20OMI$MENU_FILE&0220&0220&0420`20The`20filename`20of`20the`20menu`20that's V`20currently&0220 X`20`20&0220&0420\0808\1008in`20use,`20without`20the`20directory`20specificatio Vn. X X`20`20OMI$MENU_LOCATION&0220&0220`20The`20location`20of`20the`20menu`20file`20 Vthat's`20currently&0220 X`20`20&0220&0420\0808\1008in`20use. X X`20`20OMI$_MESSAGE&0220&0220&0420&0220This`20symbol`20is`20used`20to`20store V`20the`20environmental X`20`20&0220&0420\0808\1008value`20of`20'message'`20in.`20Before`20an`20OMI`20m Vodule`20is X`20`20&0220&0420\0808\1008called,`20all`20messages`20are`20switched`20off`20by V X`20`20&0220&0420\0808\1008SET`20MESSAGE`20/NOFACI`20/NOSEVE`20/NOIDEN`20/NOTEX VT X`20`20&0220&0420\0808\1008To`20switch`20it`20on,`20use`20the`20command X`09`09`09`20`20$`20SET`20MESSAGE`20'OMI$_\0E07' X`20`20&0220&0420\0808\1008This`20is`20especially`20usefull`20when`20debugging V X`20`20&0220&0420\0808\1008OMI`20modules. X X`20`20OMI$OPTION&0220&0220&0420&0420This`20symbol`20contains`20the`20last`20nu Vmeric`20that`20has`20`20 X`20`20&0220&0420\0808\1008been`20entered`20by`20the`20user. X X`20`20OMI$OPTION_TYPE&0220&0220&0320This`20symbol`20contains`20the`20option`20 Vtype`20of`20the`20latest X`20`20&0220&0420\0808\1008item`20that`20was`20selected`20by`20the`20user.`20Th Vis`20can`20be X`20`20&0220&0420\0808\1008SUBMENU,`20COMMAND`20or`20CALL. X X3`20Global_Symbols X XThe`20following`20can`20be`20available`20for`20OMI`20modules.`20Therefore,`20t Vhe Xcommand`20that's`20listed`20in`20the`20table`20should`20be`20called`20first. XFor`20further`20information,`20refer`20to`20the`20OMI_Commands`20descriptions. V X XThe`20symbols`20will`20automaticcally`20be`20removed`20when`20OMI`20exits. X X`20`20Symbol:&0220&0220&0420\0807Set`20by`20the`20command: X X X`20`20OMI$CALCULATED&0220&0220&0420\1608 X X`20`20OMI$CONFIRMED&0220&0220&0420\160C X X`20`20OMI$DAYNUMBER&0220&0220&0420\1607TE_INFO X X`20`20OMI$DECRYPTED&0220&0220&0420\160C X X`20`20OMI$ENCRYPTED&0220&0220&0420\160C X X`20`20OMI$MAILBOX&0220&0220&0420&0320OMI$CREATE_MBX X X`20`20OMI$MONTHNUMBER&0220&0220&0320OMI$DATE_INFO X X`20`20OMI$RESPONSE&0220&0220&0420\1606ASK X X`20`20OMI$REVERSED&0220&0220&0420\160D X X`20`20OMI$SUBSTITUTED`09\100E X X`20`20OMI$VMS_MESSAGE&0220&0220&0320OMI$GET_VMS\1907 X X`20`20OMI$WEEKNUMBER&0220&0220&0420OMI$DATE_INFO $ call unpack [.OMI-V2_3]OMI$CALLING_MODULES.HLP;1 - 1379175017 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 49 14 41 $! $ create 'f' X1`20ALL X`20Format:`20ALL X XIn`20a`20window`20where`20you`20can`20specify`20input`20fields,`20this`20comma Vnd`20enables Xyou`20to`20enter`20all`20values,`20without`20the`20need`20to`20select`20all`20 Voptions Xseparately. X XIn`20those`20windows,`20the`20last`20option`20will`20always`20perform`20this V`20command. XThe`20way`20you`20are`20prompted`20for`20it,`20can`20be`20modified`20in`20the V`20OMI`20confi- Xguration`20file`20by`20changing`20the`20value`20of`20'all_options'`20in`20the V`20section X`5Bquestions`5D X X1`20BACK X`20Format:`20BACK`20`5BNOEXIT_MODULE`5D X XWith`20this`20command,`20you`20can`20go`20up`20one`20level.`20When`20you`20are V`20at`20the`20top Xlevel,`20this`20will`20leave`20the`20menu. X XThis`20command`20performs`20the`20same`20function`20a\1506keystroke`20 V. X X2`20Parameter X XThe`20option`20NOEXIT_MODULE`20can`20\1906ally`20be`20specified,`20which`20cau Vses Xthe`20ON_EXIT`20module`20not`20to`20be`20executed. XBy`20default,`20if`20an`20ON_EXIT`20module`20is`20specified,`20it`20will`20alw Vays`20be`20executed Xif`20the`20current`20(sub)menu`20exits. X X1`20CALC X`20Format:`20CALC`20calculation X XThis`20command`20calls`20the`20internal`20OMI`20calculator.`20\3006\1109`20is V Xvery`20simple,`20but`20it`20can`20work`20with`20floating`20points`20and\1906 V\3606 Xfunctions,`20and`20supports`20parentheses. X X X2`20Parameter X XThe`20calculation`20is`20entered`20as`20one`20up`20to`20eigth`20parameters`20( Vintegers, Xoperators`20and`20parentheses`20can`20be`20entered`20as`20one`20parameter,`20o Vr`20with Xblanks`20between`20them). XIntegers`20can`20have`20a`20floating`20point.`20Dots`20(.)`20and`20commas`20(, V)`20are Xrecognised`20as`20floating`20points. X XOperations`20currently`20supported`20are`20add`20(e.g.`20-12.4`20+`208.53),`20 Vsubtract X(e.g.`2014`20-`2068.032),`20multiply`20\1D07.4`20*`207)`20and`20divide\1A0856 V`20/`20-2.56). X XWhen`20using`20more`20complex`20functions,`20like:`20(2+5)*((8-3)*4/2)/2,`20OM VI`20will Xjust`20display`20the`20result:`2035.`20To`20view`20all`20steps`20as`20they`20a Vre`20calculated Xby`20OMI,`20simply`20put`20a`20question`20mark`20(?)`20somewhere`20in`20the`20 Vformula X`20e.g.:`20(2+5)*((8-3)*4/2)/2? XThis`20will`20cause`20OMI`20to`20show`20all`20separate`20calculations`20as`20t Vhey`20are Xperformed`20and`20substituted. XThe`20question`20mark`20itself`20will`20be`20removed`20before`20calculation`20 Vstarts. X X*`20NOTE:`20The`20maximum`20size`20of`20the`20numbers`20(without`20the`20float Ving`20point) X`20`20&0220&0420is`209`20digits.`20This`20is`20a`20limitation`20in`20DCL`20(th Ve`20maximum`20value`20of X`20`20&0220&0420an`20integer`20is`202,147,483,647.`20To`20make`20checking`20po Vssible,`20the X`20`20&0220&0420maximum`20value`20is`20reduced`20to`20999,999,999`20in`20OMI). V X X1`20CLS X`20Format:`20CLS X XThis`20command`20removes`20all`20text`20from`20the`20window,`20leaving`20the V`20layout Xintact. X X1`20DCL X`20Format:`20DCL`20dcl_command X`20`20&0220`20or:`20$dcl_command X XEnter`20any`20DCL`20command.`20The`20output`20of`20the`20\1F0B`20will`20be`20d Visplayed Xyour`20terminal,`20and`20you'll`20have`20to`20press`20`20when`20execut Vion`20is Xcompleted. X XIf`20you`20don't`20want`20the`20output`20on`20your`20screen,`20you`20can`20use V`20the`20command XSILENT_DCL. X XIf`20the`20current`20user`20is`20not`20authorized`20for`20interactive`20DCL, V`20a`20warning Xmessage`20will`20be`20displayed. X XIn`20stead`20of`20the`20command`20DCL,`20the`20dollar-sign`20($)`20can`20also V`20be`20used. X X2`20Parameter X XEnter`20any`20valid`20DCL`20command.`20If`20you`20omit`20a`20parameter,`20you V`20will`20be Xprompted`20for`20the`20command. X XWhen`20the`20command`20DCL`20is`20used`20in`20a`20MENU`20file,`20OMI`20can`20p Vrompt`20for Xadditional`20input`20for`20the`20command,`20if`20the`20string`20'`7E?'`20is`20 Vused`20in Xthe`20parameter. X X1`20DELETE X XThis`20command`20deletes`20values`20from`20the`20current`20menu`20environment. V X X2`20TEXTAREA X`20Format:`20DELETE`20TEXTAREA`20sequence-number X XDelete`20the`20value`20of`20a`20text`20area`20from`20the`20current`20menu`20an Vd`20the`20file Xin`20which`20the`20value`20is`20stored.`20If`20the`20current`20menu`20has`20mo Vre`20than`201 Xtext`20area,`20a`20sequence`20number`20is`20required,`20indicating`20which`20t Vext Xarea`20should`20be`20displayed. XThis`20sequence`20number`20is`20not`20the`20same`20as`20the`20option\2507;`20i Vf Xinternal`20variable`20INPUT2`20is`20a`20textarea,`20and\1A061`20is`20not, XINPUT2`20has`20sequence`20number`201 X XA`20text`20area`20can`20only`20be`20deleted`20if`20the`20format`20section`20o V\1606input Xelement`20has`20the`20option`20KEEP`20set`20to`20TRUE. X XBy`20default,`20this`20command`20will`20ask`20for`20a`20confirmation.`20This V`20can`20be Xchanged`20with`20the`20CONFIRM`20element`20in`20the`20configuration`20file. X XThis`20command`20requires`20WRITE`20privilege`20to`20the`20current`20menu. X X1`20EDIT X XThis`20command`20modifies`20menu`20elements.`20All`20EDIT\2908s`20require Xwrite`20privilege`20to`20the`20menu`20in`20which`20it`20is`20invoked. X X X2`20ELEMENT X`20Format:`20EDIT`20ELEMENT`20option_nr X XUse`20this`20command`20to`20edit`20one`20of`20the`20elements`20in`20the`20curr Vent`20menu. XIt`20starts`20an`20on-the-fly`20menu,`20in`20which`20modifications`20to`20the V`20selected Xelement`20can`20be`20made.`20When`20the`20menu`20file`20is`20updated,`20change Vs`20are`20in Xeffect`20immediatle. X X X3`20Parameter X XThe`20parameter`20should`20be`20the`20option`20number`20as`20displayed`20on`20 Vthe`20screen, Xso`20it's`20the`20same`20number`20users`20should`20enter`20to`20select`20the V`20element. X X2`20EDIT`20MENU_FILE X`20Format:`20EDIT`20MENU_FILE X XThis`20command`20starts`20an`20interactive`20edit`20session`20with`20th\1606or V Xspecified`20in`20the`20users`20configuration`20file,`20in`20which`20the`20curr Vent Xmenu`20file`20can`20be`20modified. XThis`20command`20is`20only`20available`20in`20the`20top`20level`20menu. X X2`20VALUE_FILE X`20Format:`20EDIT`20VALUE_FILE`20option_nr X XIf`20one`20of`20the`20options`20in`20the`20current`20menu`20has`20an`20input V`20element`20with`20a Xtag-`20or`20select`20list`20that`20reads`20the`20values`20from`20a`20file\2206 Vfile`20can`20be Xmodified`20with`20this`20command. XWhen`20this`20command`20is`20entered,`20the`20editor,`20specified`20in`20the V`20users Xconfiguration`20file,`20is`20started`20to`20edit`20the`20file. X X3`20Parameter X XThe`20parameter`20should`20be`20the`20option`20number`20as`20displayed`20on`20 Vthe`20screen,`20so Xit's`20the`20same`20number`20users`20should`20enter`20to`20select`20the`20inpu Vt`20element. X X1`20ENCRYPT X`20Format:`20ENCRYPT`20section-name`20item\0A06key-name X XEncrypt`20the`20specified`20item`20in`20the`20menu`20file.`20The`20encrypted V`20new Xvalue`20is`20written`20to`20the`20menu`20file.`20Therefore,`20write`20privileg Ve Xto`20the`20current`20menu`20is`20required. X XThis`20command`20also`20changes`20the`20value`20of`20the`20selected`20item`20i Vn`20the Xcurrent`20OMI,`20so`20the`20value`20can`20only`20be`20used`20again`20if`20the V`20OMI Xmodule`20in`20which`20the`20value`20is`20requires,`20calls`20OMI$DECRYPT`20(re Vfer Xto`20the`20subtopic`20'Calling_Modules`20OMI_Commands`20OMI$DECRYPT'`20for Xmore`20information). X X2`20Parameters X XThis`20command`20requires`20three`20parameters.`20If`20they`20are`20omitted, V`20OMI`20will Xprompt`20for`20them. X XThe`20first`20parameter`20specifies`20the`20section`20which`20hold\1806item Xthat`20should`20be`20encrypted.`20Square`20brackets`20can`20be`20omitted. XThe`20second`20parameter`20is`20the`20item`20name. X XThe`20third`20parameter`20should`20be`20the`20name`20of`20the`20key`20with`20w Vhich`20the Xstring`20has`20to`20be`20encrypted.`20It\1808exist`20at`20the`20keyring`20of V`20the Xusers`20configuration`20file.`20If`20it`20s`20not`20there,`20it`20can`20be`20i Vmported Xwith`20the`20OMI`20command`20IMPORT`20KEY,`20or`20created`20\2C09SET`20KEY V\3008. X XPlease`20not`20that`20encrypting`20an`20item\1806was`20already\2408ed`20can Xcause`20unpredictable`20behaviour! X X1`20EXIT X`20Format:`20EXIT X XUse`20this`20command`20to`20leave`20OMI.`20This`20will`20return`20control`20to V`20your Xprevious`20interface`20(e.g.`20the`20DCL`20prompt),`20from`20any`20menu. X XIf`20you`20started`20a`20new`20many`20using`20the`20MENU`20command,`20control V`20will XNOT`20return`20to`20the`20previous`20menu. XEXIT`20and`20QUIT`20are`20synonymous. X X1`20EXPORT_KEY X`20Format:`20EXPORT`20KEY`20key-name X XCopy`20a`20key`20from`20the`20user`20specific`20keyring`20to`20the`20global V\1608. XThis`20requires`20write`20privilege`20to`20the`20OMI$`20directory. X X2`20Parameter X XSpecify`20the`20name`20of`20the`20key`20as`20a`20parameter.`20This`20has`20to V`20be`20an Xexisting`20key`20at`20the`20user`20specific`20keyring. X X1`20HELP XThis`20displays`20the`20online`20help`20file`20of`20OMI,`20Oscar's`20Menu`20In Vterpreter,`20a`20DCL Xprocedure`20that`20provides`20a`20standard`20menu`20user`20interface,\2E06can V`20be`20used Xto`20build`20menus`20with`20MNU`20files. XFor`20menu`20specific`20help,`20type`20INFO. X XFor`20support,`20please`20use`20the`20OMI`20forum`20at Xhttp://freeware.oveas.com/omi/forum.html. X XThis`20is`20version`202.3,`20Released:`20June`2025,`202004 XThe`20latest`20version`20can`20always`20be`20obtained`20from X`20`20&0220http://freeware.oveas.com/omi X XFull`20documentation`20can`20be`20downloaded`20from`20this`20site`20as`20well. V`20This`20online Xhelp`20might`20contain`20some`20documentation`20errors,`20but`20the`20printabl V\2806- Xmentation`20is`20completely`20reviewed`20since`20version`202.1. X X1`20IMPORT_KEY X`20Format:`20IMPORT`20KEY`20key-name X XCopy`20a`20key`20from`20the`20global`20keyring`20to`20the`20user`20specific V\1D08. X X2`20Parameter X XSpecify`20the`20name`20of`20the`20key`20as`20a`20parameter.`20This`20file`20mu Vst`20be Xmade`20available`20at`20the`20global`20keyring.`20Keys`20with`20the`20same`20n Vame Xat`20the`20user`20specific`20keyring`20are`20not`20allowed`20to`20exist. X X X1`20INCREASE X`20Format:`20INCREASE`20`5BREFRESH`5D X XIncrease`20the`20counter`20for`20the`20current`20menu`20with`201.`20If\1C11 Xhas`20no`20counter,`20a`20message`20will`20be`20displayed. X XThe`20counter`20is`20automaticcally`20increased,`20every`20time`20the`20menu V`20is Xaccessed. X X2`20REFRESH X XIf`20this`20option`20is`20specified,`20the`20menu`20screen`20will`20be`20refre Vshed`20after Xthe`20increase.`20This`20option`20can`20be`20used`20if`20input`20fields`20with V`20the`20previous Xcounter`20value`20have`20to`20be`20cleared. X X1`20INFO X`20Format:`20INFO X XIf`20the`20current`20menu`20has`20an`20info`20section`20in`20the`20menu`20spec Vific`20help-`20file X(OMI$MENU_DIRECTORY:.OMH),`20the`20INFO`20command`20can`20be V`20used Xto`20display`20the`20information. XThis`20way`20it`20is`20possible`20to`20add`20(sub)menu`20specific`20help. X XFor`20information`20on`20creating`20OMH`20files.`20refer`20to`20the`20printed V`20documentation. X X1`20JUMP X`20Format:`20JUMP`20menu-name X XJump`20immediatly`20to`20the`20submenu`20with`20the`20name`20that's`20specifie Vd`20as`20a Xparameter`20of`20this`20command. X XThe`20name`20of`20submenus`20can`20be`20displayed`20using`20the`20SHOW`20NAME V`20command, Xor`20automaticcally`20by`20setting`20the`20option`20'display_names'`20in`20the V`20'screen' Xsection`20of`20the`20configuration`20file`20to`20'true'. X`20 X X1`20MAIN X`20Format:`20MAIN X XThis`20command`20will`20always`20return`20to`20the`20top-`20level`20menu,`20fr Vom`20anywhere Xin`20the`20structure. X X1`20MANAGE X`20Format:`20MANAGE`20`5BBACK`5D X XThis`20command`20starts`20the`20OMI$MANAGE`20menu.`20It`20erase\1F06current Xmenu`20from`20memory. X*`20NOTE:`20All`20values`20that`20have`20been`20entered`20during`20the`20curre Vnt`20OMI X`20`20&0220&0420session`20will`20be`20lost. X X2`20BACK X XWhen`20in`20the`20OMI$MANAGE`20menu,`20the`20option`20BACK`20lets`20you`20retu Vrn`20to Xthe`20menu`20from`20where`20you`20started`20the`20management`20menu. X X1`20MENU X`20Format:`20MENU`20menu_name X XSelect`20another`20menu`20to`20work`20with.`20This`20command`20cleans`20up`20t Vhe`20current Xenvironment`20completely,`20causing`20the`20menu,`20that`20you`20are`20working V`20with, Xto`20be`20erased`20from`20memory. X*`20NOTE:`20All`20values`20that`20have`20been`20entered`20during`20the`20curre Vnt`20OMI X`20`20&0220&0420session`20will`20be`20lost. X X2`20Parameter X XEnter`20a`20valid`20MENU`20file.`20If`20the`20parameter`20is`20omitted,`20you V`20will`20be Xprompted`20to`20enter`20one.`20The`20new`20menu`20will`20be`20loaded`20in`20me Vmory, Xoverwriting`20the`20current`20menu. XTo`20retrieve`20a`20listing`20of`20all`20available`20menu`20files`20in`20OMI$ V`20and XOMI$MENU_DIRECTORY,`20enter`20a`20question`20mark`20(?). X X1`20QUIT X`20Format:`20QUIT X XUse`20this`20command`20to`20leave`20OMI.`20This`20will`20return`20control`20to V`20your Xprevious`20interface`20(e.g.`20the`20DCL`20prompt),`20from`20any`20menu. X XIf`20you`20started`20a`20new`20many`20using`20the`20MENU`20command,`20control V`20will XNOT`20return`20to`20the`20previous`20menu. XQUIT`20and`20EXIT`20are`20synonymous. X X1`20REFRESH X`20Format:`20REFRESH X XRefresh`20the`20screen. X X1`20RESET X`20Format:`20RESET`20keyword X XReset`20the`20value`20of\0D07riable,`20specified`20by`20a`20keyword. X X X2`20AUTO_REFRESH X`20Format:`20RESET`20AUTO_REFRESH X XUse`20this`20command`20to`20disable`20the`20automatic`20screen`20refresh`20is V`20\2807d. X X2`20COUNTER X XSet`20the`20counter`20of\0F06urrent`20menu`20to`200`20(zero).`20I\2112 Xhas`20no`20counter,`20a`20message`20will`20be`20displayed. X X2`20NAME X XRemove`20the`20name`20of`20the`20current`20menu.`20A\1C06can`20be`20used`20to V`20jump`20between Xmenus,`20or`20to`20startup`20in`20a`20submenu`20when`20the`20name`20is`20speci Vfied`20on`20the XDCL`20prompt. X X2`20ORDER X XIf`20the`20current`20menu`20has`20a`20required`20order`20(refer`20to`20subtopi Vc`20'Menu_File XMenu_Section`20Required_order'),`20a`20list`20is`20maintained`20in`20the`20bac Vkground, Xwhich`20remembers`20the`20input`20elements`20that`20have`20already`20been`20se Vlected.`20The Xlist`20changes`20every`20time`20one`20of`20the`20required`20inputs`20is`20sele Vcted`20for Xthe`20first`20time.`20If`20all`20required`20inputs`20have`20been`20selected, V`20the`20list Xis`20empty,`20and`20will`20remain\1706`20during`20the`20current`20OMI`20sessio Vn,`20unless Xthe`20command`20RESET`20ORDER`20is`20issued`20in`20the`20menu`20having`20the V`20list. X X2`20PASSWORD X XThis`20command`20removes`20the`20password`20for`20the`20current`20menu,`20if V`20one`20was`20set. XThis`20command`20requires`20WRITE`20privilege`20to`20the`20current`20menu. X X2`20VARIABLES X XUse`20this`20command`20to`20reset`20all`20variables`20in`20the`20current`20men Vu`20to Xtheir`20default`20values`20as`20specified`20in`20the`20menu`20file. X X1`20SET X XChange`20the`20value`20of`20an`20internet`20OMI`20variable. X X2`20AUTO_REFRESH X`20Format:`20SET`20AUTO_INCREASE`20value X XUse`20this`20command`20to`20set`20or`20change`20the`20interval`20in`20seconds V`20with`20which Xthe`20menu`20screen`20is`20automatically`20refreshed.`20The`20value`20should V`20be Xbetween`200`20and`20255.`20When`20set`20to`200,`20the`20automatic`20refresh`20 Vis`20disabled. X X X2`20COUNTER X`20Format:`20SET`20COUNTER`20value X XUse`20this`20command`20to`20set`20the`20counter`20for`20the`20current`20menu V`20to`20another`20value. XIf`20the`20current`20menu`20has`20no`20counter,`20a`20message`20will`20be`20di Vsplayed. X X2`20WIDTH X`20Format:`20SET`20WIDTH`20value X XUse`20this`20command`20to`20modify`20the`20screen`20width.`20The`20value`20can V`20be`2080`20or`20132. X X2`20KEY X`20Format:`20SET`20KEY`20value X XThis`20command`20defines`20a`20personal`20key.`20This`20key`20will`20be`20used V`20for`20the XENCRYPT`20command`20in`20OMI,`20and`20for`20the`20OMI$\2808and`20OMI$DE\3806 Xcommand`20in`20OMI`20modules. X XWhen`20menu`20items`20are`20encrypted`20using`20any`20of`20these`20commands, V`20they Xcan`20only`20be`20decrypted`20by`20the`20same`20user,`20or`20by`20users`20who V`20have`20the Xsame`20key`20defined. X XKeys`20cannot`20be`20shared`20between`20users.`20Every`20user`20can`20define V`20only Xone`20key. X X3`20Parameter X XThe`20parameter`20must`20be`20an`20integer`20value`20between`201`20and`201,000 V,000 X X2`20NAME X`20Format:`20SET`20NAME`20menu-name X XModify`20the`20name`20of`20the`20current`20menu,`20or`20define`20one`20if\2311 V Xhas`20no`20name.`20A`20name`20can`20be`20used`20to`20jump`20between`20menus, V`20or`20to`20startup Xin`20a`20submenu`20when`20the`20name`20is`20specified`20o\1906DCL`20prompt. X X***`20NOTE:`20If`20you`20want`20a`20menu`20to`20have`20the`20name`20RESET,`20y Vou`20need`20to`20set X`20`20&0220&0420&0220this`20name`20using`20the`20editor,\1C06won't`20work`20wi Vth`20the`20SET X`20`20&0220&0420&0220command,`20since`20this`20name`20conflicts`20with`20OMI V`20internal X`20`20&0220&0420&0220names. X X3`20Parameter X XThe`20new`20menu`20name`20can`20optionally`20be`20specified`20as`20a`20paramet Ver.`20If`20omitted, XOMI`20will`20prompt`20for`20a`20new`20menu`20name. X XThe`20menu`20name`20cannot`20be`20'RESET'. X X2`20PASSWORD X`20Format:`20SET`20PASSWORD X XChange`20the`20password`20for`20the`20current`20menu.`20If\1511`20has`20no Xpassword,`20it`20will`20be`20defined`20using`20this`20command. X XFor`20this`20command,`20you`20need`20to`20have`20write`20access`20to`20the`20c Vurrent`20menu. XThe`20password`20must`20be`20at`20least`20five`20character`20long. X X***`20NOTE:`20The`20password`20can`20not`20have`20the`20value`20'RESET' X X1`20SHOW X`20Format:`20SHOW`20keyword X XDisplay`20the`20value`20of`20an`20internal`20OMI`20variable. X X2`20COUNTER X XShow`20the`20current`20value`20of\1506ounter`20for`20this`20menu. X X2`20NAME X XDisplay`20the`20name`20of`20the`20current`20menu,`20if`20one`20has`20been`20se Vt.`20These`20names Xcan`20be`20used`20to`20jump`20to`20the`20menu`20immediatle`20from`20anywhere V`20in`20\2508 Xstructure,`20or`20by`20specifying`20the`20menu`20name`20as`20the`20second`20pa Vrameter`20on`20the XDCL`20command`20line`20when`20OMI`20is`20started. X X2`20ORDER X XIf`20the`20current`20menu`20has`20a`20required`20order,`20this`20command`20can V`20be`20used`20to Xdisplay`20the`20list`20which`20is`20maintained`20in`20the`20background,`20to V`20see`20which Xinput`20elements`20still`20have`20to`20be`20selected,`20and`20in`20which`20ord Ver. X X2`20TEXTAREA X`20Format:`20SHOW`20TEXTAREA`20sequence-number X XDisplay`20the`20value`20of`20a`20text`20area`20from`20the`20current`20menu.`20 VIf`20\150B Xmenu`20has`20more`20than`201`20text`20area,`20a`20sequence`20number`20is`20req Vuired,`20indicating Xwhich`20text`20area`20should`20be`20displayed.`20This`20sequence`20number`20is V`20not`20the`20same Xas`20the`20option`20number;`20if`20internal`20variable`20INPUT2`20is`20a`20tex Vtarea,`20and\1A061 Xis`20not,`20INPUT2`20has`20sequence`20number`201 X XIf`20the`20option`20LARGE`20in`20the`20format`20section`20o\2A06variable`20is V`20set`20to`20TRUE, Xit`20is`20possible`20that`20this`20command`20does`20not`20display`20anything V`20without`20warning. X X2`20VERSION X XShow`20the`20current`20version`20of`20OMI. X X2`20VMS_MESSAGE X`20Format:`20SHOW`20VMS_MESSAGE`20status-code X XThis`20command`20translates`20a`20VMS`20status`20code`20to`20a`20message`20and V`20displays Xit`20on`20the`20OMI`20message`20line. X X3`20Parameter X XA`20valid`20status`20code`20(integer`20value)`20is`20required.`20If`20omitted, V`20OMI Xwill`20prompt`20for`20a`20status`20code. X X1`20SILENT_DCL X`20Format:`20DCL`20dcl_command X XEnter`20any`20DCL`20command.`20The`20output`20of`20the`20\1B07`20will`20not`20 Vbe Xdisplayed`20on`20the`20screen,`20leaving`20your`20layout`20intact. XThe`20destination`20of`20the`20output,`20including`20errors,`20is`20defined`20 Vin`20the XOMI`20configuration`20file,`20item`20'silent_output'`20in`20section`20`5Bmain V`5D. XBy`20default,`20this`20will`20be`20NLA0: X XIf`20the`20current`20user`20is`20not`20authorized`20for`20interactive`20DCL, V`20a`20warning Xmessage`20will`20be`20displayed. X X1`20SPAWN X`20Format:`20SPAWN`20dcl_command X XSpawn`20an`20interactive`20subprocess`20without`20leaving`20OMI.`20Any`20VMS Xcommand`20can`20optionally`20`20be`20given`20as`20a`20parameter.`20If`20the`20 V\3807 Xis`20entered,`20control`20is`20returned`20to`20the`20calling`20process`20when V`20the Xexecution`20of`20the`20command`20is`20completed. X XIf`20the`20current`20user`20is`20not`20authorized`20for`20interactive`20DCL, V`20a`20warning Xmessage`20will`20be`20displayed. X X1`20SUBMIT X`20Format:`20SUBMIT`20omi_module X XWith`20this`20command,`20an`20OMI`20module`20can`20be`20started`20in`20the`20b Vackground. XIt`20works`20the`20same`20as`20using`20the`20qualifier`20/BACKGROUND=BATCH`20f Vrom`20the XDCL`20prompt. XWhen`20starting`20a`20background`20process`20from`20the`20OMI`20prompt,a`20mod Vule Xcan`20only`20be`20started`20as`20a`20batch`20job;`20not\1406detached`20process V. X XAll`20defaults`20for`20the`20Submit`20command`20(batch`20queue,`20logfile)`20a Vre Xtaken`20from`20the`20`5BBGRPROCESS`5D`20section`20in`20the`20user's`20configur Vation`20file. X X2`20Parameter X XThe`20parameter`20is`20the`20name`20of`20the`20OMI`20module`20to`20start`20(na Vme.OMI).`20It Xhas`20to`20be`20located`20in`20the`20OMI$MENU_DIRECTORY:`20searchpath. XThis`20module`20should`20be`20created`20to`20run`20unattended`20(e.g.`20using V XMailboxes`20for`20communication). $ call unpack [.OMI-V2_3]OMI$COMMANDS.HLP;1 - 1063971915 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 34 15 41 $! $ create 'f' X$`09goto`20start$ X$! X$!********\0808\1010\2020\400E X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220MODULE`20NAME:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220Omi$Config.Com\1406\1A06\0C0C\1818\3008* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220CALLED`20BY:&0420&0420\0808\1010\201E* X$!*`20`20&0220==========&0420&0420\0808\1010\201E* X$!*`20`20&0220&0220Omi$Menu.Com\1206\1806\0C0C\1818\300A* X$!*`20`20&0220&0220Omi$Edit_Cmd.Com\1606\1C06\0C0C\1818\4606* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220DESCRIPTION:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220This`20module`20reads`20and`20interprets`20the`20configurat Vion-`20and`20menu`20files,&0320* X$!*`20`20&0220&0220and`20takes`20care`20of`20all`20updates`20via`20the`20SET V`20and`20EDIT`20commands.\4206&0420* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Open`20and`20read`20the`20configuration`20file`20for\1B06urrent`20user V X$! X$`20start$: X$! X$`09if`20p1`20.eqs.`20"SETUP" X$`09`20`20`20then X$`09`09_config_file`20=`20f$trnlnm("Omi$Config") X$`09`09if`20_config_file`20.eqs.`20""`20then`20$\1D0E=`20"Sys$Login:Omi$Menu.C Vfg" X$`09`09if`20f$search("''_config_file'")`20.eqs.`20""`20then`20- X`09`09`20`20`20$`20_config_file`20=`20"Omi$:Omi$Menu.Cfg" X$`09`09if`20f$search("''_config_file'")`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09if`20p3`20.nes.`20"CLEANUP" X$`09`09`09`20`20`20then X$`09`09&0209write`20sys$error`20"%OMI-W-NOCFG,`20Configuration`20file`20OMI$ME VNU.CFG`20not`20found" X$`09`09&0209write`20sys$error`20"-OMI-I-DEFCFG,`20using`20default`20configurat Vion`20settings" X$`09`09`09endif X$`09`09`09gosub`20config$_defaults X$`09`09`09exit X$`09`09endif X$`09endif X$`09if`20p1`20.eqs.`20"MENU" X$`09`20`20`20then X$`09`09_config_file`20=`20p2 X$`09`09if`20_config_file`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09if`20p3`20.nes.`20"CLEANUP" X$`09`09`09`20`20`20then X$`09`09&0209if`20f$type(omi$current_menu)`20.eqs.`20""`20then`20- X`09`09&0209`20`20`20$`20omi$call`20list_files`20omi$menu_directory:*.mnu`20nam Ve X$`09`09&0209omi$signal`20omi`20nomenu X$`09`09`09endif X$`09`09`09exit`20omi$_warning X$`09`09endif X$`09`09if`20p4`20.eqs.`20"OMI$INCLUDE" X$`09`09`20`20`20then`20$`20_config_file`20=`20f$parse(\170C,".OML") X$`09`09`20`20`20else`20$`20_config_file`20=`20f$parse(\170C,".MNU") X$`09`09endif X$`09`09_config_file`20=`20f$parse(\170C,,,"name")`20+\2119type") X$`09`09if`20f$trnlnm("Omi$Menu_Directory")`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09if`20f$search("Omi$Menu_Directory:''_config_file'")`20.nes.`20"" X$`09`09`20`20&0220&0420&0320then`20$`20_config_file`20=`20"Omi$Menu_Directory: V''\250C'" X$`09`09`20`20&0220&0420&0320else`20$`20_config_file`20=`20"Omi$:''\170C'" X$`09`09`09endif X$`09`20`20&0220&0420&0320else`20$`20_config_file`20=`20"Omi$:''\170C'" X$`09`09endif X$`09`09omi$menu_location`20==`20f$element(0,":",_config_file)`20+`20":" X$`09endif X$! X$`09if`20f$search("''_config_file'")`20.eqs.`20"" X$`09`20`20`20then X$`09`09if`20p3`20.nes.`20"CLEANUP" X$`09`09`20`20`20then X$`09`09`09if`20f$type(omi$current_menu)`20.eqs.`20""`20then`20- X`09`09`09`20`20`20$`20omi$call`20list_files`20omi$:*.mnu,omi$menu_directory V\1906`20name X$`09`09`09omi$signal`20omi`20mnunotfound,'_config_file' X$`09`09endif X$`09`09exit`20omi$_warning X$`09endif X$! X$`09if`20p3`20.eqs.`20"VALIDATE"`20.and.`20p4`20.nes.`20"OMI$INCLUDE" X$`09`20`20`20then X$`09`09if`20validate$log_file`20.eqs.`20"" X$`09`09`20`20`20then`20$`20wval`20:=`20write`20sys$error X$`09`09`20`20`20else X$`09`09`09open`20/write`20/error=validate$fopenerr`20val_log`20'\1B09log_file V X$`09`09`09wval`20:=`20write`20val_log X$`09`09endif X$`09`09val$_warnings`20=`200 X$`09`09val$_errors`20=`200 X$`09`09lead$_values`20=`200 X$`09`20`20`20else`20$`20if`20omi$validate_mode`20then`20$`20lead$_values`20= V`200 X$`09endif X$! X$`09if`20f$type(omi$progress)`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20.not.`20omi$progress X$`09`09`20`20`20then`20$`20main$show_progress`20==`200 X$`09`09`20`20`20else`20$`20main$show_progress`20==`201 X$`09`09endif X$`09endif X$`09if`20f$type(main$show_progress)`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20p1`20.nes.`20"MENU"`20.or.`20p3`20.eqs.`20"CLEANUP\1807- X`09`09`20`20`20p3`20.eqs.`20"SETCMD"`20.or.`20\170AUPDATE\1707- X`09`09`20`20`20p3`20.eqs.`20"VALIDATE"`20then`20$`20main$show_progress`20==`20 V0 X$`09`09if`20main$show_progress`20then`20$`20gosub`20setupmnu$_get_size X$`09endif X$! X$`09if`20p3`20.eqs.`20"SETCMD"`20.or.`20\170AUPDATE" X$`09`20`20`20then X$`09`09open`20/write`20omi_config`20sys$scratch:omi$mnufile_update._tmp$ X$`09`09omi$signal`20omi`20writing,'_config_file X$`09endif X$`09if`20p4`20.eqs.`20"OMI$INCLUDE" X$`09`20`20`20then`20$`20cfg$including`20=`201 X$`09`20`20`20else`20$`20cfg$including`20=`200 X$`09endif X$`09if`20cfg$including X$`09`20`20`20then`20$`20open`20/read`20/share=write`20omi$confinclu`20'_config V_file X$`09`20`20`20else`20$`20open`20/read`20/share=write`20omi$configure`20'_\0C06_ Vfile X$`09endif X$`09_section`20=`20"main" X$`09_update_written`20=`200 X$`09_cont_line`20=`200 X$`09if`20cfg$including X$`09`20`20`20then`20$`20main$show_progress`20=`200 X$`09`20`20`20else`20$`20lead$_values`20==`20"" X$`09endif X$! X$`20readcfg$_loop: X$! X$`09if`20cfg$including X$`09`20`20`20then`20$`20read`20/end_of_file=readcfg$end_loop`20omi$confinclu V`20_config X$`09`20`20`20else`20$`20read`20/end_of_file=readcfg$end_loop`20omi$configure V`20_\0B06 X$`09endif X$`09if`20f$type(main$show_progress)`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20main$show_progress X$`09`09`20`20`20then X$`09`09`09_number_of_lines_read`20=`20\1816+`20100 X$`09`09`09_percent`20=`20_number_of_lines_read`20/`20mnu$lines X$!`09`09`09omi$signal`20omi`20readmnu,_percent X$`09`09`09omi$display_message`20- X`09`09`09`20"%OMI-I-READMNU,`20reading`20menu`20file`20-`20''_percent'%`20done V" X$`09`09endif X$`09endif X$! X$!-->`09Include`20library X$! X$`09if`20f$edit(f$element(0,`20"`20",`20\1907_config,`20"trim,compress")),`20- V X`09`20`20`20"upcase")`20.eqs.`20"#INCLUDE" X$`09`20`20`20then X$`09`09if`20(p3`20.nes.`20"CLEANUP"`20.and.`20\190A")\1307- X`09`09`20`20`20p2`20.nes.`20"MENU"`20then`20$`20goto`20readcfg$_loop X$`09`09if`20cfg$including X$`09`09`20`20`20then X$`09`09`09if`20p3`20.nes.`20"CLEANUP" X$`09`09`09`20`20`20then X$`09`09&0209omi$msgline_clear X$`09`09&0209omi$signal`20omi`20nestincl X$`09`09&0209omi$wait X$`09`09`09endif X$`09`09`09goto`20readcfg$_loop X$`09`09endif X$`09`09_include_file`20=`20f$parse(f$edit(f$element(1,`20"`20",`20- X`09`09`20`20`20f$edit(_config,`20"trim,compress")),"upcase"),,,"name") X$`09`09if`20f$search("omi$menu_directory:''_include_file'.oml")`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09if`20p3`20.nes.`20"CLEANUP" X$`09`09`09`20`20`20then X$`09`09&0209omi$signal`20omi`20inclfnf,"''_include_file'.OML" X$`09`09&0209if`20main$show_progress`20then`20$`20omi$wait X$`09`09`09endif X$`09`09`20`20`20else`20$`20@'f$environment("procedure")`20"''p1'"`20"''_includ Ve_file'"`20- X`09`09`09`20`20`20"''p3'"`20omi$include`20 X$`09`09endif X$`09`09goto`20readcfg$_loop X$`09endif X$! X$`09if`20p3`20.eqs.`20"SETCMD" X$`09`20`20`20then`20 X$`09`09gosub`20config$_setcmd X$`09`09goto`20readcfg$_loop X$`09endif X$! X$`09if`20p3`20.eqs.`20"UPDATE" X$`09`20`20`20then`20 X$`09`09gosub`20config$_update X$`09`09goto`20readcfg$_loop X$`09endif X$! X$`09_config`20=`20f$edit(\1107,"uncomment,compress,trim") X$`09if`20_config`20.eqs.`20""`20then`20$`20goto`20readcfg$_loop X$! X$`09if`20_cont_line X$`09`20`20`20then X$`09`09_config`20=`20_stored`20+`20_\1406 X$`09`09_cont_line`20=`200 X$`09endif X$! X$`20`09if`20f$extract(f$length(_config)`20-`201,`201,`20\1109.eqs.`20"-" X$`20`09`20`20`20then X$`20`09`09_stored`20=`20f$edit(f$extract(0,`20f$length(_config)`20-`201,`20 V\0E08,"trim") X$`20`09`09_cont_line`20=`201 X$`20`09`09goto`20readcfg$_loop X$`20`09endif X$! X$`09if`20f$edit(_config,"upcase")`20.eqs.`20""`20then`20$`20goto`20readcf Vg$end_loop X$`09if`20f$extract(0,`201,`20_config)`20.eqs.`20"`5B" X$`09`20`20`20then X$`09`09_section`20=`20f$edit(f$extract(1,`20f$length(_config)`20-`202,`20- X`09`09`20`20`20_config),`20"upcase") X$`09`09if`20f$extract(0,`205,`20_section)`20.eqs.`20"MENU_" X$`09`09`20`20`20then X$`09`09`09_section`20=`20\0B09-`20"MENU_" X$`09`09`09block$type_menu`20=`201 X$`09`09`20`20`20else`20$`20block$type_menu`20=`200 X$`09`09endif X$`09`09goto`20readcfg$_loop X$`09endif`20`20&0220&0420\0808\1010 X$`09_item`20`20=`20f$edit(f$element(0,`20"=",`20_config),`20"trim") X$`09_value`20=`20f$edit((_config`20-`20_item`20-`20"="),`20"trim") X$`09_item`20`20=`20f$edit(_item,"trim,upcase") X$`09if`20f$element(1,`20"#",`20_item)`20.eqs.`20"LEADING" X$`09`20`20`20then X$`09`09_item`20=`20f$element(0,`20"#",`20_item) X$`09`09lead$_bool`20=`201 X$`09`20`20`20else`20$`20lead$_bool`20=`200 X$`09endif X$`09if`20p3`20.eqs.`20"CLEANUP" X$`09`20`20`20then X$`09`09if`20f$type('_section'$'_item')`20.nes.`20""`20then`20- X`09`09`20`20`20$`20deletee/symbol/global`20'_section'$'_item' X$`09`20`20`20else X$`09`09if`20f$type('_section'$'_item')`20.nes.`20""`20.and.`20p3\1207- X`09`09`20`20`20"VALIDATE"`20.and.`20f$locate`20("<''_section'$''_item'>",`20- V X`09`09`20`20`20lead$_values)`20.eq.`20f$length(\1C0D X$`09`09`20`20`20then X$`09`09`09if`20.not.`20lead$_bool X$`09`09`09`20`20`20then X$`09`09&0209if`20omi$validate_mode X$`09`09&0209`20`20`20then X$`09`09&0209`09lead$_value'\0C0Bs'`20==`20"`5B''_section'`5D:''_item'" X$`09`09&0209`09lead$_values`20=`20\0F0D+`201 X$`09`09&0209`20`20`20else X$`09`09&0209`09if`20f$locate("ignore=dupl",`20omi$steering)`20.eq.`20f$length( V\1C0D X$`09`09&0209`09`20`20`20then X$`09`09&0209&0209_message`20=`20"%OMI-W-DUPL,`20duplicate`20item`20encountered V" X$`09`09&0209&0209if`20f$type(omi$display_message)`20.nes.`20"" X$`09`09&0209&0209`20`20`20then X$`09`09&0209&0309_ovw_encountered`20=`201 X$`09`09&0209&0309_prpos`20`20`20=`20"''ESC$'`5B''screen$line_command';\1709def Vault_position'H" X$`09`09&0209&0309omi$display_message`20\0908 X$`09`09&0209&0209`20`20`20else X$`09`09&0209&0309_prpos`20`20`20=`20"" X$`09`09&0209&0309write`20sys$error`20_message X$`09`09&0209&0209endif X$`09`09&0209`09`20`20`20else X$`09`09&0209&0209_overwrite_all`20=`201 X$`09`09&0209`09endif X$`09`09&0209`09if`20f$type(_overwrite_all)`20.eqs.`20""`20then`20$`20\200E`20= V`200 X$`09`09&0209`09if`20.not.`20_overwrite_all X$`09`09&0209`09`20`20`20then X$`09`09&0209&0209read`20/end_of_file=config$_dont_overwrite`20- X`20`09`09&0209&0209`20`20`20/prompt="''_prpos'Overwrite`20`5B''_section'`5D:'' V_item'`20?`20(Y/`5BN`5D/A)`20"`20sys$command`20_o\3C08 X$`09`09&0209&0209if`20f$edit(f$extract(0,1,_overwrite),"upcase")`20.eqs.`20"A" V X$`09`09&0209&0209`20`20`20then X$`09`09&0209&0309_overwrite`20=`20"Y" X$`09`09&0209&0309_overwrite_all`20=`201 X$`09`09&0209&0209endif X$`09`09&0209&0209if`20.not.`20_overwrite`20then`20$`20goto`20config$_dont\230A V X$`09`09&0209`09endif X$`09`09&0209endif X$`09`09`09endif X$`09`09endif X$`09`09if`20p1`20.eqs.`20"MENU"`20.and.`20p3\1608VALIDATE" X$`09`09`20`20`20then`20$`20gosub`20config$validate_mnuline X$`09`09`20`20`20else X$`09`09`09if`20f$locate`20("<''_section'$''_item'>",`20- X`09`09`20`20`20`09&0320lead$_values)`20.eq.`20f$length(\1C0D X$`09`09`09`20`20`20then X$`09`09&0209if`20lead$_bool`20then`20- X`09`09&0209`20`20`20lead$_values`20==\100E+`20"<''_section'$''_item'>" X$`09`09&0209if`20f$type(_value)`20.eqs.`20"INTEGER" X$`09`09&0209`20`20`20then`20$`20'_section'$'_item'`20==`20f$integer(_value) X$`09`09&0209`20`20`20else`20$`20'_section'$'_item'`20==`20"''_value'" X$`09`09&0209endif X$`09`09`09endif X$`09`09endif X$`09endif X$! X$`20config$_dont_overwrite: X$! X$`09if`20f$type(_ovw_encountered)`20.nes.`20"" X$`09`20`20`20then X$`09`09deletee`20/symbol`20/local`20_ovw_encountered X$`09`09omi$cmdline_clear X$`09`09omi$msgline_clear X$`09endif X$`09goto`20readcfg$_loop X$! X$`20readcfg$end_loop: X$! X$`09if`20cfg$including X$`09`20`20`20then`20$`20close`20omi$confinclu X$`09`20`20`20else X$`09`09close`20omi$configure X$`09`09if`20f$type(lead$_values)`20.nes.`20""`20then`20- X`09`09`20`20`20$`20deletee`20/symbol`20/global`20lead$_values X$`09endif X$`09if`20p1`20.eqs.`20"SETUP"`20then`20$`20gosub`20config$_defaults X$`09if`20p3`20.eqs.`20"SETCMD"`20.or.`20\170AUPDATE" X$`09`20`20`20then X$`09`09close`20omi_config X$`09`09_ren_to`20=`20f$element`20(0,`20";",`20f$search`20(_config_file)) X$`09`09copy`20/nolog`20sys$scratch:omi$mnufile_update._tmp$`20'_ren_to';0 X$`09`09delete`20/nolog`20/noconfirm`20sys$scratch:omi$mnufile_update._tmp$;* X$`09`09if`20p5`20.eqs.`20"RESET"`20then`20- X`09`09`20`20`20deletee/symbol/global`20'omi$current_menu'$'p4' X$`09`09omi$msgline_clear X$`09endif X$! X$`09if`20`20p1`20.eqs.`20"MENU"`20.and.`20f$type(menu$item1)\2608\2208- X`09`20`20`20f$type(menu$input1)`20.eqs.`20""`20.and.`20p3`20.nes.`20"CLEANUP" V X$`09`20`20`20then X$`09`09omi$signal`20omi`20badmnu X$`09`09exit`20omi$_error X$`09endif X$`09if`20p3`20.eqs.`20"CLEANUP"`20.and.`20f$type(omi$menu_location)`20.nes.`20 V""`20- X`09`20`20`20then`20$`20deletee`20/symbol`20/global`20omi$menu_location X$! X$`09if`20p3`20.eqs.`20"VALIDATE" X$`09`20`20`20then X$`09`09if`20val$_errors`20.eq`200`20.and.\1806warnings`20.eq.`200 X$`09`09`20`20`20then`20$`20omi$signal`20omi`20valok X$`09`09`20`20`20else`20$`20omi$signal`20omi`20valresult,'val$_errors\0D07warni Vngs X$`09`09endif X$! X$`09`09if`20validate$log_file`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09close`20val_log X$`09`09`09if`20val$_errors`20.eq`200`20.and.\1806warnings`20.eq.`200`20then`20 V- X`09`09`09`20`20`20$`20deletee`20/nolog`20/noconfirm`20f$search('validate$log_f Vile) X$`09`09endif X$`09`09 X$`09endif X$`09exit`20omi$_ok X$! X$`20validate$fopenerr: X$! X$`09omi$signal`20omi`20vallogerr,'validate$log_file X$`09exit`20$status X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09When`20OMI`20is`20called`20with`20the`20qualifier`20/VALIDATE,`20the V`20menu-`20file`20is`20read X$!`09for`20the`20second`20time,`20checking`20each`20line`20for`20errors`20and/ Vor`20warnings. X$! X$`20config$validate_mnuline: X$! X$`09_item`20=`20f$edit(_item,`20"upcase") X$`09if`20f$type('_section'$'_item')`20.eqs.`20"" X$`09`20`20`20then X$`09`09wval`20"Error`20-`20element`20''_item'`20in`20section`20''_\0B07'`20has V`20not`20been`20defined",`20F$Fao("!/"), X`09`09`20`20`20"&0320&0320&0220Unknown`20error`20-`20might`20be`20in`20the`20p Vrevious`20line" X$`09`09val$_errors`20=`20\0E0C+`201 X$`09`09return X$`09endif X$`09if`20_value`20.eqs.`20"" X$`09`20`20`20then X$`09`09_tmpaddln`20=`20"" X$`09`09if`20block$type_menu`20then`20$`20_tmpaddln`20=`20"MENU_" X$`09`09wval`20"Warning`20-`20element`20''_item'`20in`20section`20''_tmpaddln'' V'_\1707'`20has`20no`20value" X$`09`09val$_warnings`20=`20\100E+`201 X$`09`09return X$`09endif X$! X$!-->`09Skip`20the`20following`20if`20we've`20got`20leading`20values`20here X$! X$`09if`20lead$_bool`20then`20$`20goto`20val$_leading_dupl X$! X$!-->`09Check`20for`20different`20values X$! X$`09if`20'_section'$'f$element`20(0,`20"#",`20_item)'`20.nes.`20_value X$`09`20`20`20then X$`09`09wval`20"Warning`20-`20element`20''_item'`20in`20section`20''_\0B07'`20h Vas`20been`20defined`20with`20another`20value" X$`09`09wval`20"`20`20&0220&0420&0220This`20is`20oke`20if`20the`20first`20value V`20was`20LEADING" X$`09`09val$_warnings`20=`20\100E+`201 X$`09endif X$! X$!-->`09Check`20for`20duplicate`20values X$! X$`09if`20f$type`20(lead$_value'\0C0Bs')`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20f$edit(lead$_value'\0C0Bs',"upcase")`20.eqs.`20- X`09`09`20`20`20f$edit("`5B''_section'`5D:''_item'","upcase") X$`09`09`20`20`20then`20 X$`09`09`09wval`20"Warning`20-`20element`20''_item'`20in`20section`20''_\0B07' V`20has`20been`20defined`20twice" X$`09`09`09val$_warnings`20=`20\100E+`201 X$`09`09`09deletee`20/symbol`20/global`20lead$_value'\0C0Bs' X$`09`09`09lead$_values`20=`20\0F0D+`201 X$`09`09endif X$`09endif X$! X$`20val$_leading_dupl: X$! X$`09if`20.not.`20block$type_menu`20then`20$`20return X$`09if`20f$edit(f$extract(0,4,_item),`20"upcase")`20.eqs.`20"ITEM"`20then`20- V X`09`20`20`20$`20goto`20validate$_item X$`09if`20f$edit(f$extract(0,5,_item),`20"upcase")`20.eqs.`20"INPUT"`20then`20- V X`09`20`20`20$`20goto`20validate$_input X$! X$`09return X$! X$!********\0808\1010\2020\400E X$! X$!`09Validate`20the`20Item`20element X$! X$`20validate$_item: X$! X$`09_this_element`20=`20"ITEM" X$`09gosub`20validate$_seq_order X$`09_this_item_type`20`20=`20f$edit(f$element`20(1,`20"#",`20_value),`20"upcas Ve") X$`09_this_item_value`20=`20f$edit(f$element`20(2,`20"#",`20\2306),`20"upcase") V X$`09if`20_this_item_type`20.eqs.`20"SUBMENU"`20then`20$`20goto`20validate$_sub Vmenu X$`09if`20_this_item_type`20.eqs.`20"CALL"`20`20&0220then`20$`20goto`20validate V$_call X$`09if`20_this_item_type`20.eqs.`20"COMMAND"`20then`20$`20goto`20validate$_com Vmand X$`09wval`20"Error`20-`20invalid`20item`20type`20''_this_item_type'`20for`20''_ Vitem'`20in`20section`20MENU_''_\1007'" X$`09val$_errors`20=`20\0E0C+`201 X$`09return X$! X$!********\0808\1010\2020\400E X$! X$!`09Validate`20the`20Submenu`20item`20type X$! X$`20validate$_submenu: X$! X$`09if`20_this_item_value`20.eqs.`20""`20.or.`20\1F18#" X$`09`20`20`20then X$`09`09wval`20"Error`20-`20no`20submenu`20specified`20in`20element`20''_item' V`20in`20section`20MENU_''_\1007'" X$`09`09val$_errors`20=`20\0E0C+`201 X$`09`09return X$`09endif X$! X$`09if`20f$extract(0,`201,`20_this_item_value)`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20f$type('_this_item_value'$item1)`20.eqs.`20""`20.and.`20- X`09`09`20`20`20f$type('_this_item_value'$input1)`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09wval`20"Error`20-`20element`20''_item'`20in`20section`20MENU_''_ V\1007'`20calls`20an`20non-`20existing",`20F$Fao("!/"), X`09`09`09`20`20`20"&0320&0320&0220submenu`20''_this_item_value'" X$`09`09`09val$_errors`20=`20\0E0C+`201 X$`09`09endif X$`09`09return X$`09endif X$`09_mnuc`20=`200 X$! X$`20validate$dyn_submenu: X$! X$`09if`20f$locate`20("`7D",`20_this_item_value)`20.eq.`20f$length(\2012- X`09`20`20`20then`20$`20return X$`09_this_dyn_menu`20=`20f$element(_mnuc,`20"`7D",`20\2706item_value) X$`09_this_item_value`20=`20\1311-\1307dyn_menu`20-`20"`7D" X$`09_this_dyn_menu`20=`20\110F-`20"`7B" X$`09if`20f$locate("`7C",`20_this_dyn_menu)`20.eq.`20f$length(\1E0F X$`09`20`20`20then X$`09`09wval`20"Warning`20-`20no`20text-on-display`20for`20dynamic`20submenu`20 V''_this_dyn_menu'",`20F$Fao("!/"), X`09`09`20`20`20"&0320&0320&0420in`20element`20''_item'`20in`20section`20MENU_ V''_\1007'" X$`09`09val$_warnings`20=`20\100E+`201 X$`09`20`20`20else`20$`20_this_dyn_menu`20=`20f$element(1,`20"`7C",`20\230E) X$`09endif X$! X$`09if`20f$type('_this_item_value'$item1)`20.eqs.`20""`20.and.`20- X`20`09`20`20`20f$type('_this_item_value'$input1)`20.eqs.`20"" X$`09`20`20`20then X$`09`09wval`20"Error`20-`20element`20''_item'`20in`20section`20MENU_''_\1007' V`20calls`20an`20non-`20existing",`20F$Fao("!/"),`20- X`09`09`20`20`20"&0320&0320&0220dynamic`20submenu`20''_this_item_value'" X$`09`09val$_errors`20=`20\0E0C+`201 X$`09endif X$! X$`09goto`20validate$dyn_submenu X$! X$!********\0808\1010\2020\400E X$! X$!`09Validate`20the`20Call`20item`20type X$! X$`20validate$_call: X$! X$`09if`20_this_item_value`20.eqs.`20""`20.or.`20\1F18#" X$`09`20`20`20then X$`09`09wval`20"Error`20-`20no`20module`20called`20in`20element`20''_item'`20in V`20section`20MENU_''_\1007'" X$`09`09val$_errors`20=`20\0E0C+`201 X$`09`09return X$`09endif X$! X$!`20The`20Parse`20command`20below`20might`20return`20an`20empty`20string`20is V`20the`20module`20name X$!`20contains`20variablese.`20The`20Main`20Menu`20has`20a`20workaround`20for V`20this,`20this`20is`20not X$!`20required`20here. X$`09_called_module`20=`20f$parse(f$element(0,`20"`20",`20_this_item_value),`20 V- X`09`20`20`20".OMI",,,"syntax_only") X$`09if`20f$search(_called_module)`20.eqs.`20""`20.or.`20\1E0E\1D09 X$`09`20`20`20then X$`09`09wval`20"Warning`20-`20element`20''_item'`20calls`20a`20non-`20existing V`20module`20in`20section`20MENU_''_\1007'" X$`09`09val$_warnings`20=`20\100E+`201 X$`09`09return X$`09endif X$! X$`09return X$! X$!********\0808\1010\2020\400E X$! X$!`09Validate`20the`20Command`20item`20type X$! X$`20validate$_command: X$! X$`09if`20_this_item_value`20.eqs.`20""`20.or.`20\1F18#" X$`09`20`20`20then X$`09`09wval`20"Error`20-`20no`20command`20given`20in`20element`20''_item'`20in V`20section`20MENU_''_\1007'" X$`09`09val$_errors`20=`20\0E0C+`201 X$`09`09return X$`09endif X$`09_this_command`20=`20f$element(0,`20"`20",`20\2206item_value) X$! X$`09if`20f$length(_this_command)`20.lt.`203 X$`09`20`20`20then X$`09`09wval`20"Warning`20-`20command`20''_this_\1007'`20too`20short`20in`20ele Vment`20''_item'`20in`20section`20MENU_''_\1007'" X$`09`09val$_warnings`20=`20\100E+`201 X$`09`09return X$`09endif X$! X$`09if`20f$locate("#''_this_command'",`20omi$valid\1508s)`20.eq.`20- X`09`20`20`20f$length(omi$valid_commands) X$`09`20`20`20then X$`09`09wval`20"Error`20-`20invalid`20command`20''_this_\1007'`20in`20element V`20''_item'`20in`20section`20MENU_''_\1007'" X$`09`09val$_errors`20=`20\0E0C+`201 X$`09`09return X$`09endif X$! X$`09if`20_this_command`20.eqs.`20f$extract`20(0,`20f$length(\2B0D),`20"JUMP") V X$`09`20`20`20then X$`09`09_jump_to`20=`20f$element(1,`20"`20",`20_this_item_value) X$`09`09if`20_jump_to`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09wval`20"Error`20-`20jumping`20to`20nowhere`20in`20element`20''_item' V`20in`20section`20MENU_''_\1007'" X$`09`09`09val$_errors`20=`20\0E0C+`201 X$`09`09`09return X$`09`09endif X$`09`09assign`20sys$scratch:omi$jump_submenu._tmp$`20sys$output X$`09`09show`20symbol`20/global`20*$name X$`09`09deassign`20sys$output X$`09`09if`20.not.`20omi$_debug`20then`20- X`09`09`20`20`20$`20set`20message`20/nofacility`20/nosever\0C07identification V`20/notext X$`09`09search`20sys$scratch:omi$jump_submenu._tmp$`20"""''_jump_to'"""`20- X`09`09`20`20`20/output=sys$scratch:omi$jump_submenu_found._tmp$ X$`09`09_status`20=`20$\0A06 X$`09`09deletee`20/nolog`20/noconfirm`20sys$scratch:omi$jump_submenu._tmp$; X$`09`09deletee`20/nolog`20/noconfirm`20sys$scratch:omi$jump_submenu_found._tmp V;* X$`09`09if`20_status`20.eq.`20omi$_nomatch X$`09`09`20`20`20then X$`09`09`09wval`20"Error`20-`20jumping`20to`20non-existing`20menu`20''_jump_to' V`20in`20element`20''_item'`20in`20section`20MENU_''_\1007'" X$`09`09`09val$_errors`20=`20\0E0C+`201 X$`09`09`09return X$`09`09endif X$`20`20&0220&0320endif X$`09return X$! X$!********\0808\1010\2020\400E X$! X$!`09Validate`20the`20Input`20element X$! X$`20validate$_input: X$! X$`09_this_element`20=`20"INPUT" X$`09gosub`20validate$_seq_order X X$! X$`09return X$! X$!********\0808\1010\2020\400E X$! X$!`09Check`20to`20see`20if`20items`20and/or`20inputs`20were`20specified`20in V`20the`20correct`20order X$! X$`20validate$_seq_order: X$! X$`09_seq_nr`20=`20_item`20-`20_this_element X$`09if`20_seq_nr`20.eq.`201`20then`20$`20return X$`09if`20_seq_nr`20.lt.`201`20.or.`20f$type(\1B07)`20.nes.`20"INTEGER" X$`09`20`20`20then X$`09`09wval`20"Warning`20-`20value`20''_seq_nr'`20not`20alowed`20for`20element V`20type`20''_this_\1507'`20in`20section`20MENU_''_section'" X$`09`09val$_warnings`20=`20\100E+`201 X$`09`09return X$`09endif X$`09_seq_nr`20=`20\0A08-`201 X$`09if`20f$type('_section'$'_this_element''_seq_nr')`20.eqs.`20"" X$`09`20`20`20then X$`09`09wval`20"Error`20-`20missing`20element`20''_this_\1007'''_seq_nr'`20in V`20section`20MENU_''_section'" X$`09`09val$_errors`20=`20\0E0C+`201 X$`09`09return X$`09endif X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09A`20modification`20to`20the`20menu`20file`20is`20requested`20using`20t Vhe`20SET`20command. X$!`09This`20section`20looks`20for`20the`20current`20menu`20(SET`20can`20only V`20update`20in X$!`09menu`20sections)`20and`20updates`20the`20selected`20item. X$! X$`20config$_setcmd: X$! X$`09if`20f$extract(0,`201,`20f$edit(_config,"uncomment,compress,trim"))`20.eqs V.`20"`5B" X$`09`20`20`20then X$`09`09_section`20=`20f$edit(f$extract(1,`20f$length(f$edit(_config,"uncomment V,compress,trim"))`20-`202,`20f$\3028,`20"upcase") X$`09`09write`20omi_config`20\0807 X$`09`09return X$`09endif X$! X$`09if`20f$extract(f$length(f$edit(_config,"trim"))`20-`201,`201,`20- X`09`20`20`20f$edit(_config,"trim"))`20.eqs.`20"-" X$`09`20`20`20then X$`09`09write`20omi_config`20\0807 X$`09`09return X$`09endif X$! X$`09if`20f$locate("=",`20_config)`20.eq.`20f$length(\1708 X$`09`20`20`20then X$`09`09write`20omi_config`20\0807 X$`09`09return X$`09endif X$! X$`09if`20(f$edit(_section,"upcase")`20-`20"MENU_")`20.nes.`20\2B07omi$current_ Vmenu\330A X$`09`20`20`20then X$`09`09write`20omi_config`20\0807 X$`09`09return X$`09endif X$! X$`09if`20f$edit(f$element(0,"=",_config),"upcase,collapse")`20.eqs.`20p4`20- X`20`09`20`20`20then`20$`20return X$`09if`20.not.`20_update_written`20.and.`20p5`20.nes.`20"RESET" X$`09`20`20`20then X$`09`09write`20omi_config`20"`20`20''f$edit(p4,"lowercase")'`20=`20''p5'" X$`09`09'omi$current_menu'$'p4'`20==`20"''p5'" X$`09`09_update_written`20=`201 X$`09endif X$`09write`20omi_config`20\0807 X$! X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09A`20modification`20to`20the`20menu`20file`20is`20requested`20using`20t Vhe`20ENCRYPT`20command, X$!`09or`20a`20personal`20key`20will`20be`20defined`20for`20the`20current`20use Vr. X$!`09This`20section`20looks`20for`20the`20selected\1F09and`20updates`20\210C X$!`09item. X$! X$`20config$_update: X$! X$`09if`20f$extract(0,`201,`20f$edit(_config,"uncomment,compress,trim"))`20.eqs V.`20"`5B" X$`09`20`20`20then X$`09`09_section`20=`20f$edit(f$extract(1,`20f$length(f$edit(_config,"uncomment V,compress,trim"))`20-`202,`20f$\3028,`20"upcase") X$`09`09write`20omi_config`20\0807 X$`09`09return X$`09endif X$! X$`09if`20f$extract(f$length(f$edit(_config,"trim"))`20-`201,`201,`20- X`09`20`20`20f$edit(_config,"trim"))`20.eqs.`20"-" X$`09`20`20`20then X$`09`09write`20omi_config`20\0807 X$`09`09return X$`09endif X$! X$`09if`20f$locate("=",`20_config)`20.eq.`20f$length(\1708 X$`09`20`20`20then X$`09`09write`20omi_config`20\0807 X$`09`09return X$`09endif X$! X$`09if`20f$edit(_section,"upcase")`20.nes.\2008p4\1A0A X$`09`20`20`20then X$`09`09write`20omi_config`20\0807 X$`09`09return X$`09endif X$! X$!`09if`20f$edit(f$element(0,"=",_config),"upcase,collapse")`20.eqs.`20- X`20!`09`20`20`20f$edit(p5,"upcase")`20then`20$`20return X$!`09if`20.not.`20_update_written`20!`20.and.`20p5`20.nes.`20"RESET" X$!`09`20`20`20then X$!`09`09write`20omi_config`20"`20`20''f$edit(p5,"lowercase")'`20=`20''p6'" X$!!`09`09if`20f$edit(f$extract(0,`205,`20p4),`20"upcase")`20.eqs.`20"MENU_"`20 Vthen`20- X`20!`09`09`20`20`20$`20p4`20=`20p4`20-`20f$extract(0,`205,`20p4) X$!!`09`09'p4'$'p5'`20==`20"''p6'" X$!`09`09_update_written`20=`201 X$!`09endif X$`09if`20f$edit(f$element(0,"=",_config),"upcase,collapse")`20.eqs.\3908p5 V\2308") X$!`09if`20.not.`20_update_written X$`09`20`20`20then X$`09`09write`20omi_config`20"''f$element(0,"=",\1B07)'=`20''p6'" X$`09`09if`20f$edit(f$extract(0,`205,`20p4),`20"upcase")`20.eqs.`20"MENU_"`20th Ven`20- X`20`09`09`20`20`20$`20p4`20=`20p4`20-`20f$extract(0,`205,`20p4) X$`09`09'p4'$'p5'`20==`20"''p6'" X$`09`09_update_written`20=`201 X$`09`09return X$`09endif X$`09write`20omi_config`20\0807 X$! X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$! X$!==>`09To`20display`20how`20far`20initialisation`20of`20the`20menu`20file`20i Vs,`20which`20is`20useful X$!`09for`20large`20menu`20files,`20this`20routin`20counts`20the`20number`20of V`20lines. X$! X$`20setupmnu$_get_size: X$! X$`09if`20p4`20.eqs.`20"OMI$INCLUDE" X$`09`20`20`20then X$`09`09omi$display_message`20- X`20`09`09`20"%OMI-I-INCLUDE,`20including`20menu`20file`20of`20unknown`20size V`20-`20please`20wait" X$`09`09return X$`09endif X$! X$`09open`20/read`20/share=write`20omi$configure`20'_\0C06_file X$`09mnu$lines`20=`200 X$! X$`20setupmnu$_read: X$! X$`09read`20/end_of_file=setupmnu$end_read`20omi$configure`20_dummy X$`09if`20f$edit(_dummy,"uncomment,collapse,upcase")`20.eqs.`20""`20- X`09`20`20`20then`20$`20goto`20setupmnu$end_read X$`09mnu$lines`20=`20\0C0A+`201 X$`09goto`20setupmnu$_read X$! X$`20setupmnu$end_read: X$! X$`09close`20omi$configure X$`09_number_of_lines_read`20=`200 X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$! X$!==>`09This`20routine`20was`20added`20to`20set`20in`20default`20values`20for V`20the`20OMI X$!`09configuration.`20When`20new`20items`20are`20added`20to`20\2B0D`20files`20 Vin`20a X$!`09new`20OMI`20version,`20the`20user`20was`20required`20to`20copy`20the`20ne Vw`20file. X$!`09Due`20to`20these`20defaults,`20a`20notification`20will`20do`20fine. X$! X$`20config$_defaults: X$! X$`09_cleanup`20==`20p3 X$`09call`20config$_set_defaults`20main$empty_value`09`09"....." X$`09call`20config$_set_defaults`20main$silent_output`09`09"NLA0:" X$`09call`20config$_set_defaults`20main$editor`09`09`09"edit" X$`09call`20config$_set_defaults`20main$version_id`09`09"0" X$`09call`20config$_set_defaults`20main$printer`09`09`09"SYS$PRINT" X$`09call`20config$_set_defaults`20main$protect_prompt`09`09"0" X$`09call`20config$_set_defaults`20main$show_progress`20`09`09"1" X$`09call`20config$_set_defaults`20main$time_format`20`20`20`09`09"12" X$`09call`20config$_set_defaults`20main$float_point`20`20`20`09`09"." X$! X$`09call`20config$_set_defaults`20screen$width_margin`09`09"4" X$`09call`20config$_set_defaults`20screen$height_margin`09`09"1" X$`09call`20config$_set_defaults`20screen$width`09`09`09"80" X$`09call`20config$_set_defaults`20screen$height`09`09`09"24" X$`09call`20config$_set_defaults`20screen$exit_width`09`09"80" X$`09call`20config$_set_defaults`20screen$window_topmargin`09"1" X$`09call`20config$_set_defaults`20screen$scroll_region`09`09"enabled" X$`09call`20config$_set_defaults`20screen$scrollregion_autodisable`09"y" X$`09call`20config$_set_defaults`20screen$separate_inputs`09"true" X$`09call`20config$_set_defaults`20screen$display_names`09`09"false" X$`09call`20config$_set_defaults`20screen$tab`09`09`09"15" X$! X$`09call`20config$_set_defaults`20questions$all_inputs`09`09"All`20Inputs" X$`09call`20config$_set_defaults`20questions$option`09`09"OMI>" X$`09call`20config$_set_defaults`20questions$reverse_tags`09"R\0E06`20selection V" X$`09call`20config$_set_defaults`20questions$input`09`09"Enter`20Value" X$`09call`20config$_set_defaults`20questions$dcl_command`09`09"DCL`20C\0E06" X$`09call`20config$_set_defaults`20questions$\1307_input`09"Input" X$`09call`20config$_set_defaults`20questions$wait_prompt`09`09"Press`20 V`20to`20continue" X$`09call`20config$_set_defaults`20questions$confirm`09`09"1" X$`09call`20config$_set_defaults`20questions$answer_yes`09`09"Y" X$`09call`20config$_set_defaults`20questions$answer_no`09`09"N" X$! X$`09call`20config$_set_defaults`20bgrprocess$batch_queue`09"sy\1107" X$`09call`20config$_set_defaults`20bgrprocess$detach_lgicmd`09"sys$login:login. Vcom" X$`09call`20config$_set_defaults`20bgrprocess$logfile`09`09"" X$`09call`20config$_set_defaults`20bgrprocess$options_bat`09"" X$`09call`20config$_set_defaults`20bgrprocess$options_det`09"" X$! X$`09deletee`20/symbol`20/global`20_cleanup X$`09return X$! X$`20config$_set_defaults:`20subroutine X$! X$`09if`20_cleanup`20.eqs.`20"CLEANUP" X$`09`20`20`20then`20$`20if`20f$type('p1')`20.nes.`20""\2008deletee`20/symbol V`20/global`20'p1' X$`09`20`20`20else`20$`20if`20f$type('p1')`20.eqs.`20""`20then`20$`20'p1'`20== V`20"''p2'" X$`09endif X$`09exit X$`20endsubroutine X$! X$!********\0808\1010\2020\400E $ call unpack [.OMI-V2_3]OMI$CONFIG.COM;1 1918912605 "" 55 16 41 $! $ create 'f' X1`20Config_File X XA`20great`20deal`20of`20the`20behaviour`20(lay-out`20in`20specific)`20can`20be V`20modified Xusing`20a`20configuration`20file.`20This`20is`20a`20file`20called`20OMI$MENU.C VFG,`20that Xshould`20be`20located`20in`20the`20users`20SYS$LOGIN,`20or`20any`20other`20fil Ve`20name`20in Xanother`20directory,`20pointed`20to`20by`20the`20logical`20OMI$CONFIG X XIf`20none`20of`20these`20are`20found,`20the`20default`20file`20OMI$:OMI$MENU.C VFG Xis`20used. X XThe`20topics`20below`20describe`20the`20sections`20that`20can`20be`20modified V`20in Xthe`20file.`20Some`20values`20can`20be`20empty`20(only`20when`20explicitly`20s Vaid`20so). XAll`20element`20names`20are`20case`20insensitive X X X***`20NOTE:`20Blank`20lines`20and`20comments`20(!)`20are`20allowed. X`20`20&0220&0420&0220Double`20quotes`20(")`20are`20NOT`20allowed. X X X2`20MAIN X XThis`20section`20defines`20some`20generally`20used`20values. X X3`20EMPTY_VALUE X XIn`20menus`20where`20input`20values`20are`20displayed,`20'empty_\1D06' Xrepresents`20the`20way`20an`20unspecified`20value`20will`20be`20displayed. XIf`20it`20shouldn't`20display`20anything,`20just`20remove`20any`20value X(empty_value`20=`20). X X3`20KEY X XIf`20a`20key`20was`20set`20using`20the`20SET`20KEY`20command`20before`20versio Vn`201.3, Xit`20will`20be`20stored`20here`20in`20the`20configuration`20file.`20The`20key V`20has`20a Xbinary`20code,`20and`20should`20not`20be`20set`20or`20changed`20manually. X XSince`20version`201.3,`20this`20key`20cannot`20be`20set`20anymore.`20Keys`20ar Ve`20now Xnamed`20and`20stored`20in`20the`20user`20specific`20keyring.`20Decryption`20of V`20strings Xthat`20were`20encrypted`20with`20this`20key`20before`20version`201.3`20is`20st Vill`20supported. X X X3`20SILENT_OUTPUT X XIf`20DCL`20commands`20are`20executed`20in`20silent`20mode,`20the`20output, Xif`20any,`20including`20errors,`20will`20be`20written`20to`20the`20NULL`20devi Vce X(NLA0:),`20or`20any`20file`20name`20specified`20by`20this`20element. XThe`20final`20return`20status`20of`20the`20command`20will`20always`20be`20disp Vladed. X X3`20TIME_FORMAT X XThis`20element`20can`20have`20the`20values`2012`20or`2024.`20It`20specifies`20 Vthe`20default Xtime`20format`20for`20the`20TIME\1408type.`20The`20default`20value`20is`2012. V X X3`20EDITOR`20 X XWhen`20you`20need`20to`20use`20an`20editor`20somewhere`20in`20an`20OMI`20proce Vdure, Xthis`20symbol`20will`20be`20used.`20Specify`20any`20(foreign)`20command. X X3`20FLOAT_POINT X XSpecifies`20the`20default`20character`20('.'`20or`20',')`20that`20will`20be`20 Vused`20in Xthe`20floating`20point`20INTEGER`20format`20type. X X3`20VERSION_ID X XThe`20element`20is`20obsolete. X X3`20PROTECT_PROMPT X XWhen`20an`20own`20prompt`20is`20defined,`20this`20can`20be`20overwritten`20by V Xa`20prompt`20in`20a`20chosen`20menu.`20Setting`20the`20protect_\2D07to`201 Xor`20TRUE,`20will`20tell`20OMI`20to`20use`20the`20prompt`20from`20the`20config Vuration Xfile`20in`20all`20menus. X X3`20PRINTER X XThis`20element`20can`20be`20used`20to`20define`20a`20user`20specific`20printer V`20queue. XBy`20default,`20this`20will`20be`20SYS$PRINT.`20The`20installation`20procedure V`20will Xprompt`20for`20a`20default`20printer. X X3`20SHOW_PROGRESS X XBy`20default,`20OMI`20display`20the`20percentage`20of`20the`20menu`20file`20th Vat`20was Xread`20during`20initialization.`20This`20can`20be`20switched`20off`20by`20sett Ving`20this Xelement`20to`20FALSE`20or`200. X XDisplay`20the`20percentage`20read`20is`20usefull`20is`20large`20menu`20files V`20are`20used, Xsince`20initialization`20can`20take`20pretty`20long,`20depending`20on`20the`20 Vsystem Xon`20which`20OMI`20runs. XThe`20setting`20of`20this`20element`20can`20be`20overwritten`20when`20starting V`20OMI`20from Xthe`20DCL`20prompt`20with`20the`20/`5BNO`5DPROGRESS`20qualifier. X X X2`20SCREEN X XThis`20section`20contains`20all`20elements`20that`20define`20the`20lay-out`20o Vf`20the Xmenu`20screen. X X3`20WIDTH_MARGIN X XYou`20can`20use`20the`20full`20width`20of`20the`20screen`20(without`20border V`20lines Xat`20both`20sides),`20by`20setting`20this`20margin`20to`20'0'.`20If`20you`20do V`20want Xborders,`20any`20value`20('n')`20will`20cause`20the`20leftmost`20and`20righ V\0E06'n' Xcolumns`20not`20to`20be`20used. X X3`20HEIGHT_MARGIN X XYou`20can`20use`20the`20full`20height`20of`20the`20screen`20by`20setting`20thi Vs`20margin Xto`20'0'.`20If`20you`20do`20want`20a`20smaller`20windows,`20any`20value`20('n' V)`20will Xcause`20the`20uppermost`20and`20low\0E07'n'`20lines`20not`20to`20be`20used. X X3`20WIDTH X XThe`20symbol`20'width'`20allowes`20two`20values:`2080`20and`20132.`20Values`20 Vup`20to`2080 Xwill`20be`20changed`20to`2080.`20All`20values`20greater`20than`2080`20\320F Xto`20132.`20It`20defines`20the`20screen`20width`20of`20the`20menu`20window. X X3`20HEIGHT X XDefine`20the`20number`20of`20lines`20the`20menu`20should`20use.`20It`20is`20no Vt Xrecommended`20to`20change`20the`20default`20value`20of`2024. X X3`20EXIT_WIDTH X XWhen`20leaving`20the`20menu,'exit_width'`20is`20the`20screenwidth`20that's Xset`20on`20exit X X3`20WINDOW_TOPMARGIN X XSecify`20the`20number`20of`20lines`20that`20should`20be`20left`20blank`20at`20 Vthe`20top Xof`20the`20window.`20This`20is`20inside`20the`20menu\2007,`20so`20is`20specifi Ves`20the Xnumber`20of`20blank`20lines`20between`20the`20menu`20header`20and`20the`20firs Vt`20line Xbeing`20used. X X3`20SCROLL_REGION X XYou`20can`20enable`20or`20disable`20a`20scroll_region. XOnly`20the`20first`20three`20characters`20are`20validated,`20so`20SCROLL_REGIO VN`20=`20ENA XSCROLL_REGION`20=`20DIS`20is`20enough. XWhen`20enabled,`20a`20scroll`20region`20is`20created,`20leaving`20the`20menu V`20screen Xintact,`20for`20the`20output`20of`20DCL`20commands. X X X3`20SCROLLREGION_AUTODISABLE X XUsing`20a`20scroll`20region`20might`20screw`20up`20the`20menu`20window`20when V`20a`20width Xmargin`20is`20used.`20By`20setting`20SCROLLREGION_AUTODISABLE`20to`20'1'`20or V`20YES, Xthe`20use`20of`20a`20scroll`20region`20is`20automatically`20disabled`20in`20th Vis`20case. X X3`20SEPARATE_INPUTS X XThis`20is`20a`20boolean,`20which`20can`20be`20set`20to`20TRUE`20or`20FALSE`20( Vor`20'1'`20or`20'0') Xthat`20specifies`20wether`20or`20not`20the`20menu`20screen`20should`20be`20spl Vit`20in`20two Xseparate`20parts`20when`20input`20elements`20are`20specified`20in`20the`20curr Vent`20menu, Xusing`20the`20lower`20past`20of`20the`20screen`20for`20the`20input`20values. X X3`20DISPLAY_NAMES X XThis`20element,`20which`20can`20be`20'true'`20or`20'false',`20specifies`20if V`20menu`20names`20have Xto`20be`20displayed.`20If`20set`20to`20'true',`20the`20name`20of`20the`20menu V`20will\3A0D Xin`20the`20window,`20enclosed`20by`20brackets. X X3`20TAB X XThe`20'tab'`20setting`20is`20used`20when`20more`20columns`20are`20displayed`20 Von`20the Xmenu`20screen.`20It`20specifies`20the`20number`20of`20blanks`20between`20the V`20two Xcolumns. X XA`20second`20column`20is`20used`20to`20display`20the`20values`20of`20input`20o Vptions`20on Xthe`20menu`20screen,`20and`20for`20tag`20lists`20if`20they`20don't`20fit`20in V`20one`20column. X X2`20QUESTIONS X XThis`20section`20defines`20the`20several`20strings`20as`20they`20will`20be`20d Visplayed Xwhenever`20OMI`20or`20the`20menu`20needs`20input.`20These`20strings`20can`20be V`20used Xto`20translate`20all`20questions`20in`20your`20native`20language. X X3`20ALL_INPUTS X XIn`20input`20screens,`20the`20last`20option`20will`20be`20to`20enter`20all`20v Values Xwithout`20the`20need`20to`20make`20the`20choice`20for`20all`20options`20separa Vtly.`20 XThis`20element`20specifies`20how`20this`20choice`20is`20represented`20on`20the V`20screen. X X3`20REVERSE_TAGS X XIn`20tag`20screens,`20the`20last`20option`20will`20reverse`20the`20current`20s Velection, XThis`20element`20specifies`20how`20this`20choice`20is`20represented`20on`20the V`20screen. X X3`20OPTION X XRepresents`20how`20the`20user`20will`20prompted`20to`20select`20an`20option. XThis`20can`20be`20overwritten`20by`20a`20prompt`20element`20in`20a`20menu`20fi Vle, Xunless`20the`20'protect_prompt'`20in`20section`20`5Bmain`5D`20is`20set`20to`20 VTRUE. X X3`20INPUT X XRepresents`20how`20the`20user`20will`20prompted`20to`20enter`20input. X X3`20DCL_COMMAND X XRepresents`20how`20the`20user`20will`20prompted`20to`20enter`20a`20DCL`20comma Vnd. X X3`20DEFAULT_INPUT X XWhen`20input`20is`20required`20for`20a`20command`20(specified`20by`20the`20str Ving`20'`7E?' Xin`20the`20item`20element),`20this`20option`20specifies`20the`20default`20prom Vpt`20if Xnone`20is`20specified`20in`20the`20item`20element`20(this`20can`20by`20done`20 Vby`20adding X'`7Bprompt`7D'`20to`20the`20input`20string.`20Refer\1B08help`20section`20of Xthe`20menu`20files`20for`20more`20information). X X3`20CONFIRM X XSeveral`20commands`20ask`20for`20a`20confirmation`20before`20executing`20by`20 Vdefault. XThis`20can`20be`20changed`20by`20setting`20this`20element`20to`20FALSE. X X3`20WAIT_PROMPT X XWhen`20OMI`20waits`20until`20the`20user`20hits`20return`20(or`20any`20called V`20procedure Xusing`20the`20OMI$WAIT`20command),`20this`20represents`20the`20prompt. X X X2`20`5BBGRPROCESS`5D X XThis`20section`20contains`20all`20elements`20that`20define`20how`20background V Xprocesses`20should`20be`20started. X X X3`20BATCH_QUEUE X XDefine`20which`20queue`20should`20be`20used`20when`20OMI`20modules`20are`20sta Vrted Xin`20a`20batch.`20Default`20is`20SYS$BATCH. X X X3`20DETACHED_LGICMD X XWhen`20starting`20processes`20in`20DETACHED`20mode,`20the`20user's`20LOGIN.COM V Xis`20not`20executed.`20Therefore,`20several`20logicals,`20symbols`20etc.`20mig Vht Xnot`20be`20available.`20This`20element`20specifies`20a`20command`20procedure V`20which Xsets`20up`20the`20proper`20user`20environment.`20Default`20is`20SYS$LOGIN:LOGI VN.COM. XThe`20file`20OMI$SETUP.COM`20will`20be`20executed`20automatically. X X3`20LOGFILE X XSpecifies`20the`20name`20of`20the`20logfile`20that`20will`20be`20written`20by V`20the Xbackground`20process.`20Default`20is XSYS$LOGIN:OMI$BACKGROUND_.LOG. X X X3`20OPTIONS_BAT X XUsed`20to`20add`20extra`20qualifiers`20to`20the`20SUBMIT`20command,`20eg: X`20OPTIONS_BAT`20=`20/NOTIFY XFor`20more`20information,`20refer`20to`20the`20OpenVMS`20documentation. X X X3`20OPTIONS_DET X XUsed`20to`20add`20extra`20qualifiers`20to`20the`20RUN`20/DETACH`20command,`20e Vg: X`20OPTIONS_DET`20=`20/JOB_TABLE_QUOTA=8192 XFor`20more`20information,`20refer`20to`20the`20OpenVMS`20documentation. X X X2`20KEYRING X XAll`20encryption`20keys`20that`20are`20created`20by`20the`20user`20with`20the V`20SET`20KEY Xcommand,`20or`20imported`20with`20the`20IMPORT`20KEY`20\2909are`20stored`20in V`20this Xsection.`20They`20have`20a`20binary`20value,`20and`20cannot`20be`20added`20or V`20modified Xmanually. X X X2`20Adding_Sections X XWhen`20you`20want`20to`20create`20default`20settings`20that`20can`20be`20used V`20in`20your Xown`20menus`20and`20modules,`20you`20can`20add`20your`20own`20sections`20to`20 Vthe Xconfiguration`20file. X XE.g.,`20if`20you`20want`20to`20add`20a`20printer`20queue`20that`20can`20be`20c Vhanged`20per Xuser`20for`20use`20in`20OMI,`20the`20following`20section`20and`20element`20can V`20be`20added: X`20`5BMYDEFS`5D X`20`20`20PRINT_QUEUE&0320=`20MY_PRINTER X XIf`20a`20file`20needs`20to`20be`20printed`20on`20the`20user`20specific\1D07r V`20queue, Xuse`20the`20command: X`20$`20PRINT`20/QUEUE='MYDEFS$PRINTER_QUEUE'`20filename X X*`20NOTE:`20The`20following`20section`20names`20are`20reserved: X`20`20&0220&0420`5BMAIN`5D X`20`20&0220&0420`5BSCREEN`5D X`20`20&0220&0420`5BQUESTIONS`5D X`20`20&0220&0420`5BCOUNTER`5D X`09`5BINTERACTIVE_AUTH`5D X`20`20&0220&0420`5BMENU_*`5D&0320(all`20sections`20starting`20with`20'MENU_') V X X2`20Example X XBelow`20is`20an`20example`20of`20how`20a`20configuration`20file`20can`20look V`20like. X X`20`20`5Bmain`5D X`20`20&0220empty_value&0320=`20..... X`20`20&0220version_id&0420=`201&0420&0420&0420!`20Do`20not`20change`20this`20m Vanually X`20`20&0220silent_output`20=`20NLA0: X`20`20&0220editor&0420&0420=`20edit/tpu X`20`20 X`20`20`5Bscreen`5D X`20`20&0220width_margin&0420&0420&0520=`204 X`20`20&0220height_margin&0420&0420&0420=`201 X`20`20&0220width&0420&0420\0808&0420=`2080 X`20`20&0220height&0420&0420\0808&0320=`2024 X`20`20&0220exit_width&0420&0420\0807=`2080 X`20`20&0220window_topmargin&0420&0420`20=`201 X`20`20&0220scroll_region&0420&0420&0420=`20enabled X`20`20&0220scrollregion_autodisable`20=`20y X`20`20&0220tab&0420&0420\0808\1006=`208 X`20`20 X`20`20`5Bquestions`5D X`20`20&0220all_inputs&0420=`20All`20Inputs X`20`20&0220reverse_tags&0220=`20R\1006`20selection X`20`20&0220option&0420&0420=`20OMI> X`20`20&0220input&0420&0420`20=`20Enter`20Value X`20`20&0220dcl_command&0320=`20DCL`20C\1006 X`20`20&0220default_input`20=`20Input X`20`20&0220wait_prompt&0320=`20Press`20`20to`20continue X X`20`20! X`20`20!`20Below`20are`20my`20peronal`20additions X`20`20! X`20`20`5Bmydefs`5D X`20`20&0220print_queue&0320=`20my_printer X`20`20&0220data_location`20=`20device:`5Bdata_dir`5D $ call unpack [.OMI-V2_3]OMI$CONFIG_FILE.HLP;1 - 1849199737 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 21 17 41 $! $ create 'f' X$`09goto`20start$ X$! X$!********\0808\1010\2020\400E X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220MODULE`20NAME:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220Omi$Edit_Cmd.Com\1606\1C06\0C0C\1818\4606* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220CALLED`20BY:&0420&0420\0808\1010\201E* X$!*`20`20&0220==========&0420&0420\0808\1010\201E* X$!*`20`20&0220&0220Omi$Menu.Com\1206\1806\0C0C\1818\300A* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220DESCRIPTION:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220This`20module`20takes`20care`20of`20the`20execution\1108EDI VT`20command.\4206&0420* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$`20start$: X$! X$`09if`20omi$_p1`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$ask`20"Edit`20what:`20" X$`09`09if`20$status`20.eq.`20omi$_cancelled`20then`20$`20exit\1B0F X$`09`09omi$_p1`20=`20omi$response X$`09`09deletee/symbol/global`20omi$response X$`09`09goto`20start$ X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20- X`09`20`20`20f$extract(0,`20f$length(omi$_p1),`20"VALUE_FILE")`20then`20- X`09`20`20`20$`20goto`20edit$value_file X$! X$!`20`20&0220&0220****`20Edit`20commands`20below`20are`20not`20available`20in V`20OTF`20Menus X$! X$`09if`20omi$otf_menu X$`09`20`20`20then X$`09`09omi$signal`20omi`20cmdnotav X$`09`09exit`20$status X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20- X`09`20`20`20f$extract(0,`20f$length(omi$_p1),`20"ELEMENT")`20then`20- X`09`20`20`20$`20goto`20edit$element X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20- X`09`20`20`20f$extract(0,`20f$length(omi$_p1),`20"MENU_FILE")`20then`20- X`09`20`20`20$`20goto`20edit$menu_file X$! X$`09omi$signal`20omi`20ivopt,edit X$`09exit`20$status X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Edit`20an`20element`20from`20the`20current`20menu`20level.`20Find`20ou Vt`20if`20it's`20an X$!`09item`20or`20an`20input`20element,`20and`20call`20the`20proper`20subroutin Ve`20for`20it. X$! X$`20edit$element: X$! X$`09gosub`20get$_element X$! X$`09if`20f$type('omi$current_menu'$item'omi$_p2')`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$_p2`20=`20\0A08-`20'omi$current_menu'$highest_item X$`09`09if`20f$type('omi$current_menu'$input'omi$_p2')`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20invopt X$`09`09`09exit`20$status X$`09`09endif X$`09`09edit$_type`20=`20"input" X$`09`20`20`20else`20$`20edit$_type`20=`20"item" X$`09endif X$! X$`09edit$_element_name`20`20==`20"''\1A06type'''omi$_p2'" X$`09edit$_element_value`20==`20'omi$current_menu'$'\2B0Ename X$! X$`09otf_menu$on_exit`20==`20"edit_element" X$`09otf_menu$all_inputs`20==`200 X$`09otf_menu$prompt`20==`20"EditOTF>`20" X$`09otf_menu$item1`20==`20"Exit`20without`20update#command#back`20noexit_modul Ve" X$`09otf_menu$item2`20==`20"Write`20changes`20and`20exit#command#back" X$`09otf_menu$input1`20==`20"Text`20on`20display#edit_element_p1#"`20+`20- X`09`20`20`20f$element(0,`20"#",`20edit$_\1607_value) X$! X$`09gosub`20edit$'edit$_type'_element X$`09omi$create_otf X$! X$`09goto`20end$ X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09The`20edit`20command`20was`20invoked`20to`20modify`20the`20current`20m Venu`20file. X$!`09First,`20it's`20erased`20from`20menu.`20After`20the`20edit`20session\2E06 Vstarted X$!`09again. X$! X$`20edit$menu_file: X$! X$`09if`20f$edit(omi$current_menu,`20"upcase")`20.nes.`20"MENU" X$`09`20`20`20then X$`09`09omi$signal`20omi`20toponly X$`09`09exit`20$status X$`09endif X$! X$`09_file`20=`20"''omi$menu_location''\140Afile'" X$`09omi$signal`20omi`20erasemnu X$`09omi$config`20"''omi$menu_file'"`20Cleanup X$! X$`09assign`20/user`20TT:`20sys$input X$`09'main$editor'`20'_file X$`09deassign`20sys$input X$! X$`09omi$signal`20omi`20init X$`09omi$config`20'omi$menu_file X$`09omi$refresh X$! X$`09goto`20end$ X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09The`20edit`20command`20was`20invoked`20to`20modify`20a`20select-`20or V`20tag`20list`20that X$!`09retrieves`20values`20from`20a`20file.`20Call`20the`20editor`20that's`20de Vfined`20in`20the X$!`09users`20configuration`20file`20to`20modify`20the`20file. X$! X$`20edit$value_file: X$! X$`09gosub`20get$_element X$! X$`09_input`20=`20omi$_p2`20-`20'omi$current_menu'$highest_item`20 X$`09_block`20=`20f$edit(f$element(1,`20"`7B",`20\120A0,`20"`7D",`20- X`09`20`20`20'omi$current_menu'$input'_\0706)),`20"upcase")`20-`20"SEL`7C"`20- V`20"TAG`7C" X$`09if`20f$type('_block'$filename)`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20ivvalfil X$`09`09exit`20$status X$`09endif X$`09_file`20=`20f$parse('_block'$filename,"Omi$Menu_Directory:",".dat") X$! X$`09assign`20/user`20TT:`20sys$input X$`09'main$editor'`20'_file X$`09deassign`20sys$input X$`09omi$refresh X$! X$`09goto`20end$ X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$`20end$: X$! X$`09exit`20omi$_ok X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Find`20out`20if`20the`20element`20nr.`20was`20specified.`20If`20not, V`20prompt`20for`20it. X$! X$`20get$_element: X$! X$`09if`20omi$_p2`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$ask`20"Element`20#:`20" X$`09`09if`20$status`20.eq.`20omi$_cancelled`20then`20$`20exit\1B0F X$`09`09omi$_p2`20=`20omi$response X$`09`09deletee/symbol/global`20omi$response X$`09`09goto`20get$_element X$`09endif X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Prompt`20the`20user`20for`20new`20values`20for`20the`20selected`20inpu Vt`20element`20that X$!`09should`20be`20modified`20by`20creating`20an`20OTF`20menu. X$! X$`20edit$input_element: X$! X$`09_i_type`20`20&0220=`20f$edit(f$element(1,`20"#",`20edit$_\1607_value),"upc Vase") X$`09_i_default`20=`20f$edit(f$element(2,`20"#",`20edit$_\1607_value),"upcase") V X$`09_i_format`20`20=`20f$edit(f$element(3,`20"#",`20edit$_\1607_value),"upcase V") X$! X$`09if`20_i_default`20.eqs.`20"#"`20then`20$\1C0C=`20"" X$`09if`20_i_format`20`20.eqs.`20"#"`20then`20$\1C0C=`20"" X$! X$`09_def_value`20=`20"value1" X$`09_var_name`20`20=`20_i_type X$`09_list_name`20=`20"" X$! X$`09if`20f$locate("SEL`7C",`20f$edit(_i_type,"upcase"))`20.lt.`20f$length\2108 V) X$`09`20`20`20then X$`09`09_def_value`20=`20"value2" X$`09`09_var_name`20`20=`20f$element(1,`20"`7D",`20_i_type) X$`09`09_list_name`20=`20f$element(1,`20"`7C",`20\120A0,`20"`7D",`20_i_type)) X$`09`09_list_type`20=`20"Select" X$`09endif X$! X$`09if`20f$locate("TAG`7C",`20f$edit(_i_type,"upcase"))`20.lt.`20f$length\2108 V) X$`09`20`20`20then X$`09`09_def_value`20=`20"value3" X$`09`09_var_name`20`20=`20f$element(1,`20"`7D",`20_i_type) X$`09`09_list_name`20=`20f$element(1,`20"`7C",`20\120A0,`20"`7D",`20_i_type)) X$`09`09_list_type`20=`20"Tag" X$`09endif X$! X$`09otf_menu$input2`20==`20"Input`20type#`7Bsel`7C\2408_sellst`7Dedit_elem_inp Vtype#''_def_value'" X$`09otf_menu$input3`20==`20"Variable`20Name#edit_elem_varname#''_var_name'# V\4108_intname" X$`09if`20_list_name`20.nes.`20"" X$`09`20`20`20then`20$`20otf_menu$input4`20==`20- X`09`09`20`20`20"''_list_type'`20name#edit_elem_lstname#\2508name'#otf_menu_int Vname" X$`09`20`20`20else`20$`20otf_menu$input4`20==`20- X`09`09`20`20`20"Format`20section#edit_element_p4#''_i_format'#otf_menu_intname V" X$`09endif X$`09otf_menu$input5`20==`20- X`09`20`20`20"Default`20value#edit_element_p3#''_i_d\2306'" X$! X$`09otf_menu_sellst$value1`20=`20"Straight`20input" X$`09otf_menu_sellst$value2`20=`20"Select`20list" X$`09otf_menu_sellst$value3`20=`20"Tag`20list" X$! X$`09otf_menu_intname$type`20`20&0220&0420=`20"string" X$`09otf_menu_intnames$ivchars`20`20&0220=`20"@#$%`5E`26*()'?/`7C`5C+`60`7E`7B V`7D`5B`5D<>" X$`09otf_menu_intnames$collapse`20`20`20=`20"true"`20 X$`09otf_menu_intnames$minlength`20`20=`202 X$! X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Prompt`20the`20user`20for`20new`20values`20for`20the`20selected`20item V`20element`20that X$!`09should`20be`20modified`20by`20creating`20an`20OTF`20menu. X$! X$`20edit$item_element: X$! X$`09_i_type`20=`20f$edit(f$element(1,`20"#",`20edit$_\1607_value),"upcase") X$`09if`20_i_type`20.eqs.`20"CALL" X$`09`20`20`20then X$`09`09_def_value`20=`20"value1" X$`09`09_prompt`20`20&0220=`20"Module" X$`09endif X$! X$`09if`20_i_type`20.eqs.`20"COMMAND" X$`09`20`20`20then X$`09`09_def_value`20=`20"value2" X$`09`09_prompt`20`20&0220=`20"OMI`20Command" X$`09endif X$! X$`09if`20_i_type`20.eqs.`20"SUBMENU" X$`09`20`20`20then X$`09`09_def_value`20=`20"value3" X$`09`09_prompt`20`20&0220=`20"Submenu" X$`09endif X$! X$`09otf_menu$input2`20==`20"Item`20type#`7Bsel`7C\2308_sellst`7Dedit_element_p V2#''_def_value'" X$`09otf_menu$input3`20==`20"''_prompt'#edit_element_p3#"`20+`20- X`09`20`20`20f$element(2,`20"#",`20edit$_\1607_value) X$! X$`09otf_menu_sellst$value1`20=`20"Call" X$`09otf_menu_sellst$value2`20=`20"Command" X$`09otf_menu_sellst$value3`20=`20"Submenu" X$! X$`09return X$! X$!********\0808\1010\2020\400E X Xedit$_element_name Xedit$_element_value X X $ call unpack [.OMI-V2_3]OMI$EDIT_CMD.COM;1 - 672012585 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 19 18 41 $! $ create 'f' X`5BMENU_MENU`5D X`20`20owner`20=`20arnold X`20`20title`20=`20OMI`20Example`20Menu X`20`20name&0220=`20Main&0220&0220&0420\0808\1010&0220!`20Menu\3506for`20shortc Vut X`20`20item1`20=`20Print`20the`20menu`20file#command#silent_dcl`20print`20- X`09`20`20/queue=`7E?`7BPrinter`20queue:`7D`20/notify`20omi$:omi$example.mnu X`20`20&0220&0420\0808\1010\2010!`20Print`20this`20menu`20file`20to`20read X`20`20&0220&0420\0808\1010\2010!`20on`20paper`20what's`20happening. X`20`20item2`20=`20Exit#command#exit&0220&0220&0420\0808&0520!`20C\2306`20item, V`20EXIT`20the`20menu X`20`20item3`20=`20Protected`20Menu#submenu#pwdtest`09!`20S\1206`20item,`20call Vs`20PWDTEST X`20`20item4`20=`20Get`20some`20inputs#submenu#inptest`09!`20S\1206`20item,`20c Valls`20INPTEST X`20`20item5`20=`20Counter`20menu#submenu#cnttest`09`09!`20S\1306`20item,`20cal Vls`20CNTTEST X X`5BMENU_PWDTEST`5D X`20`20`20password`20=`20`90`CB`8F`BC`8E`CA`8D`CB`8C`88`8B`89`8A`8A`D5 X!`20`20password_level`20=`202&0220&0220&0420\0808\100B!`20If`20not`20outcommen Vted,`20nobody X`20`20&0220&0420\0808\1010\2010!`20can`20change`20the`20password. X`20`20name&0220=`20Protected&0220&0220&0420\0808\100D!`20Menu\3506for`20shortc Vut X`20`20comment`20=`20This`20menu`20is`20password`20protected`20&0220&0220!`20Pu Vt`20a\3609line`20on`20screen X`20`20security`20=`20grant_me_write&0220&0220&0420\0808&0520!`20Define`20autho Vrisation X`20`20title`20=`20Dummy`20Menu&0220&0220&0420\0808\100C!`20Give`20this`20one V`20another\4606 X`20`20item1`20=`20Main`20Menu#command#back`09`09!`20C\1006`20item,`20one`20lev Vel`20BACK X X X`5BMENU_INPTEST`5D X`20`20name&0220=`20Input&0220&0220&0420\0808\1010`20!`20Menu\3506for`20shortcu Vt X`20`20item1`20=`20Main`20Menu#command#back`09`09!`20C\1006`20item,`20one`20lev Vel`20BACK X`20`20item2`20=`20Formatted`20inputs#submenu#frmtest`09!`20S\1206`20item,`20ca Vlls`20FRMTEST X`20`20item3`20=`20Display`20the`20inputs#call#omi$:omi$example X`09`09&0209&0209!`20Call`20a`20test`20procedure`20to X`20`20&0220&0420\0808\1010\2010!`20display`20the`20inputs. X`20`20input1`20=`20Select`20a`20weekday#`7BSEL`7C\0D07s`7Dinp_\1A08value1 X`09`09&0209&0209!`20Select`20from`20a`20predefined X`20`20&0220&0420\0808\1010\2010!`20list.`20Default`20is`20"Monday" X`20`20input2`20=`20Select`20some`20months#`7BTAG`7C\0C06`7Dinp_\1706 X`20`20&0220&0420\0808\1010\2010!`20Select`20one`20ore`20more`20months. X X`5BMENU_FRMTEST`5D X`20`20name&0220=`20Format&0220&0220&0420\0808\1010!`20Menu\3506for`20shortcut V X`20`20item1`20=`20Main`20Menu#command#main`09`09!`20C\1006`20item,`20back`20to V`20MAIN X`20`20item2`20=`20Previous`20Menu#command#back`09`09!`20C\1006`20item,`20one V`20level`20BACK X`20`20input1`20=`20Enter`20a`20date#inp_date#today#date_frm`20!`20Input`20item V,`20should`20be\3707 X`09`09&0209&0209!`20Default`20is`20"TODAY" X`20`20input2`20=`20Enter`20a`20valid`20filename#inp_file##fname_frm X`09`09&0209`09`20`20&0220&0220!`20Input`20item,`20should`20be`20a`20filename X`20`20input3`20=`20Enter`20an`20int`20between`200`20and`20100#inp_int##int_frm V X`09`09&0209`09`20`20&0220&0220!`20Input`20item,`20should`20be`20an`20integer X X`5BMENU_CNTTEST`5D X`20`20counter`20=`20just_a_\1108&0220`09`09&0320&0320!`20Define`20a\2E09for`20 Vthis`20menu X`20`20comment`20=`20The`20counter`20is`20now`20`7B\1007$just_a_\1F07`7D X`20`20name&0220=`20Counter1&0220&0220&0420\0808\100C!`20Menu\3306for`20shortcu Vt X`20`20item1`20=`20Main`20Menu#command#back`09&0220&0220&0220!`20C\1506`20item, V`20one`20level`20BACK X`20`20item2`20=`20More`20counters#submenu#cnttest2`20&0220&0320!`20S\1806`20it Vem,`20calls`20CNTTEST2 X X`5BMENU_CNTTEST2`5D X`20`20counter`20=`20another_\1207`09&0220&0220&0220\0707!`20Define`20a\3209for V`20this`20menu X`20`20comment`20=`20The`20counter`20is`20now`20`7B\1007$another_\2007`7D X`20`20name&0220=`20Counter2&0220&0220&0420\0808\100C!`20Menu\3306for`20shortcu Vt X`20`20item1`20=`20Main`20Menu#command#main`09&0220&0220&0220!`20C\1506`20item, V`20back`20to`20MAIN X`20`20item2`20=`20Previous`20Menu#command#back`09&0220&0220&0220!`20C\1506`20i Vtem,`20one`20level`20BACK X`20`20item3`20=`20Reset`20the`20counter#command#reset`20\1607 X`20`20&0220&0420\0808\1010\200E!`20Command`20item,`20RESET`20counter X`20`20item4`20=`20Increase`20the`20counter#command#i\1D08refresh X`20`20&0220&0420\0808\1010\200E!`20Command`20item,`20INCREASE`20counter X`20`20&0220&0420\0808\1010\200E!`20followed`20by`20a`20screen`20refresh X`20`20&0220&0420\0808\1010\200E!`20to`20update`20the`20comment`20line X`20`20item5`20=`20Display`20the`20arrays#command#dcl`20show`20symbol`20inp_arr Vay* X`20`20&0220&0420\0808\1010\200E!`20Command`20item,`20call`20to`20DCL X`20`20&0220&0420\0808\1010\200E!`20to`20display`20the`20inputs X`20`20input1`20=`20Enter`20anything#inp_arraya'counter$another_\1007 X`20`20input2`20=`20Select`20a`20day#`7BSEL`7Cweekdays`7Dinp_arrayb'counter$ano Vther_\1007 X X X`5BDATE_FRM`5D X`20`20type`20=`20date`20&0220&0320\0606\0C0C\1809!`20Input`20should`20be`20a V`20valid`20date X`20`20format`20=`20absolute&0220&0220&0420\0808\100B!`20Will`20be`20convert. V`20to\3909 X X`5BFNAME_FRM`5D X`20`20type`20=`20filespec&0220&0220&0420\0808\100D!`20Input`20should`20be`20of V`20FILESPEC`20type X`20`20wildcards`20=`20true&0220&0220&0420\0808\100C!`20W\2E09are`20allowed X`20`20required`20=`20false&0220&0220&0420\0808\100C!`20The`20file`20does`20not V`20have`20to`20exist X X!`20The`20arguments`20below`20are`20from`20version`201.0b2,`20the`20FILESPEC V`20type`20was`20implemented X!`20later,`20but`20with`20the`20arguments`20below,`20used`20in`20the`20STRING V`20type,`20almost X!`20the`20same`20result`20can`20be`20reached. X!`20The`20arguments`20are`20outcommented`20in`20stead`20of`20remove,`20so`20th Vey`20can`20remain`20here X!`20as`20an`20extra`20example. X!`20 X!`20`20upcase&0220`20=`20true&0320&0320\0606\0C0C&0420!`20String`20will`20be V`20conver.`20to\4707 X!`20`20collapse`20=`20false`20&0220&0320\0606\0C0C&0320!`20All`20blanks`20will V`20be`20removed X!`20`20ivchars&0220`20=`20@#$%`5E`26*()'?/`7C`5C+`60`7E`7B`7D`5B`5D<>&0320 V&0320&0220!`20These`20characters`20are`20not`20allowed X X X`5BINT_FRM`5D X`20`20type`20=`20integer`09`09`09&0220&0220&0220!`20Input`20should`20be`20an V\2508 X`20`20min`20=`200&0220`09`09&0209&0220&0220&0220!`20Input`20value`20should`20b Ve`20between X`20`20max`20=`20100&0220&0220&0420\0808\1010&0320!&0220'0'`20and`20'100' X X X`5BWEEKDAYS`5D X! X!`20Define`20the`20days`20of`20the`20week`20from`20which`20a`20selection`20can V`20be`20made X!`20using`20the`20SEL`20input`20in`20the`20INPTEST`20menu`20(input1). X! X`20`20value1`20=`20Monday X`20`20value2`20=`20Tuesday X`20`20value3`20=`20Wednesday X`20`20value4`20=`20Thursday X`20`20value5`20=`20Friday X`20`20value6`20=`20Saturday X`20`20value7`20=`20Sunday X X`5BMONTHS`5D X! X!`20Define`20the`20months`20that`20can`20be`20tagged`20using`20the`20TAG`20inp Vut`20in`20the`20 X!`20INPTEST`20menu`20(input2). X! X`20`20delimiter`20=`20/ X`20`20value1&0220=`20January X`20`20value2&0220=`20February X`20`20value3&0220=`20March X`20`20value4&0220=`20April X`20`20value5&0220=`20May X`20`20value6&0220=`20June X`20`20value7&0220=`20July X`20`20value8&0220=`20August X`20`20value9&0220=`20September X`20`20value10`20=`20October X`20`20value11`20=`20November X`20`20value12`20=`20December X X X`5BCOUNTER`5D X`20`20just_a_counter&0220=`200 X`20`20another_counter`20=`200 X X`5BGRANT_ME_WRITE`5D X! X!`20This`20security`20section`20was`20added,`20granting`20write`20privilege`20 Vto`20my`20userid, X!`20to`20enable`20me`20to`20set`20a`20password`20on`20the`20PWDTEST`20menu,`20 Vwithout`20the`20need X!`20to`20log`20in`20as`20SYSTEM`20(the`20owner`20of`20the`20menu) X! X`20`20ARNOLD&0220&0220=`20WRITE X`20`20all_users`20=`20read,`20exec X X X XThe`20''`20above`20will`20be`20interpreted`20as`20an`20end-of-file.`20Thi Vs`20means`20the XOMI`20will`20never`20read`20these`20lines.`20This`20is`20done`20to`20improve V`20performance`20while Xinitializing;`20long`20comments`20can`20now`20be`20written`20past`20the`20end- Vof-file. $ call unpack [.OMI-V2_3]OMI$EXAMPLE.MNU;1 - 223234326 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 13 19 41 $! $ create 'f' X`20$!`09set`20message`20'omi$_\0E07'`09!`20Uncomment`20this`20for`20debugging V X$`09omi$record1`20=`20"The`20weekday`20you`20have`20selected`20was: X$`09omi$record2`20=`20"`20`20''inp_weekday'" X$`09omi$record3`20=`20"The`20month(s)`20you`20have`20tagged`20were: X$`09_counter`20=`200 X$`09omi$check`20inp_months`20""`20empty_allowed X$`09if`20$status`20.ge.`20omi$_warning X$`09`20`20`20then`20`09!`20Month`20input`20was`20not`20yet`20selected X$`09`09omi$record4`20=`20"`20`20" X$`09`09goto`20month$end_loop X$`09endif X$! X$`20month$_loop: X$! X$`09_month`20=`20f$element(_counter,`20months$delimiter,`20inp\3206s) X$`09if`20_month`20.eqs.`20""`20.or.`20\150Dmonths$delimiter`20then`20- X`09`20`20`20$`20goto`20month$end_loop X$`09_record`20=`20'_counter`20+`204 X$`09omi$record'_\0806`20=`20"`20`20''_month'" X$`09_counter`20=`20\0B09+`201 X$`09goto`20month$_loop X$! X$`20month$end_loop: X$! X$`09omi$display_info X$`09omi$confirm`20"More`20?`20"`20'questions$answer_yes X$`09if`20.not.`20omi$confirmed`20then`20$`20goto`20end X$`09omi$record1`20=`20"`20The`20date`20you`20entered`20was`20`20&0220`20:`20'' Vinp_date'" X$`09omi$record2`20=`20"`20The`20filename`20you`20entered`20was`20:`20''inp_fil Ve'" X$`09omi$reverse`20"''inp_file'"\0E08date'" X$`09omi$record3`20=`20"`20Reversing`20this`20results`20in`20`20&0220:`20'' V\3106versed'" X$`09omi$record4`20=`20"`20The`20integer`20you`20entered`20was`20`20:`20''inp_i Vnt'" X$`09omi$record5`20=`20"`20You`20called`20the`20Counter`20menu`20''counter$anot Vher_\1007'`20times" X$! X$!`20Make`20sure`20the`20list`20with`20months`20won't`20be`20redisplayed,`20st Varting\2B06rec.`205 X$`09if`20f$type(omi$record6)`20.nes.`20""`20then`20- X`09`20`20`20deletee/symbol/local`20omi$record5 X$! X$`09omi$display_info X$`09omi$wait X$`09omi$refresh X$! X$`20end: X$! X$`09exit $ call unpack [.OMI-V2_3]OMI$EXAMPLE.OMI;1 - 1342423797 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 3 20 41 $! $ create 'f' X$!***** X$!`20Find`20the`20distribution`20set X$! X$`09i_am_here`20=`20f$environment("default") X$! X$`20find_set: X$! X$`09omi_set`20=`20f$search`20("''i_am_here'omi-v*_*.*") X$`09if`20omi_set`20.eqs.`20"" X$`09`20`20`20then X$`09`09write`20sys$error`20"%OMI-W-NOSET,`20distribution`20set`20not`20found" V X$`09`09read`20/end=bye`20/prompt="_Location`20`5B''i_am_here'`5D:`20"`20- X`09`09`20`20`20sys$command`20_here X$`09`09if`20_here`20.nes.`20""`20then`20$`20i_am\1A06=\2206 X$`09`09goto`20find_set X$`09endif X$`09set_type`20=`20f$parse(omi_set,,,"type") X$`09if`20set_type`20.eqs.`20".ZIP" X$`09then X$`09`09on`20warning`20then`20$`20goto`20nozip X$`09`09assign`20nla0:`20sys$output X$`09`09assign`20nla0:`20sys$error X$`09`09unzip X$`09`09deassign`20sys$output X$`09`09deassign`20sys$error X$`09`09on`20warning`20then`20$`20continue X$`09`09write`20sys$error`20- X`09`09`20`20`20"%OMI-I-INS_ZIP,`20installing`20the`20ZIP`20distribution" X$`09`09omi_unpack`20=`20"unzip`20""-X""`20" X$`09`20`20`20else X$`09`09if`20set_type`20.eqs.`20".COM" X$`09`09`20`20`20then X$`09`09`09write`20sys$error`20- X`09`09`09`20`20`20"%OMI-I-INS_SHARE,`20installing`20the`20SHARE`20distribution V" X$`09`09`09omi_unpack`20=`20"@" X$`20`09`09`20`20`20else X$`09`09`09write`20sys$error`20- X`09`09`09`20`20`20"%OMI-E-UNKNOWN_SET,`20distribution`20type`20unknown" X$`09`09`09write`20sys$error`20- X`09`09`09`20`20`20"&0220/''f$parse(omi_set,,,"name")'''set_type'/" X$`09`09`09goto`20bye X$`20`09`09endif X$`09endif X$! X$!***** X$!`20Get`20the`20install`20destination X$! X$`20get_dest: X$! X$`09def_dest`20=`20"''f$environment("default")'" X$`09if`20f$trnlnm("omi$")`20.nes.`20""`20then`20- X`09`20`20`20$`20def_dest`20=`20f$trnlnm("omi$")`20-`20"`5D`5B" X$`09read`20/end=bye`20/prompt="_Install`20in`20`5B''def_dest'`5D:`20"`20sys$co Vmmand`20omi_dest X$`09if`20omi_dest`20.eqs.`20""`20then`20$\190A=`20def_dest X$`09if`20f$parse(omi_dest,,,,"syntax_only")`20.eqs.`20"" X$`09`20`20`20then X$`09`09write`20sys$error`20"%OMI-E-INVDIR,`20invalid`20directory`20specificati Von" X$`09`09goto`20get_dest X$`09endif X$`09if`20f$parse(omi_dest)`20.eqs.`20"" X$`09`20`20`20then X$`09`09read`20/end=bye`20- X`09`09`20`20`20/prompt="_Do`20you`20want`20to`20create`20this`20directory`20? V`20(Y/`5BN`5D):`20"`20- X`09`09`20`20`20sys$command`20create_dest X$`09`09if`20f$edit(f$extract(0,1,create_dest),"upcase")`20.nes.`20"Y"`20then V`20- X`09`09`20`20`20$`20goto`20get_dest X$`09`09assign`20nla0:`20sys$error X$`09`09set`20noon X$`09`09create`20/dir`20'omi_dest'`20/protection=(s:rwe,o:rwed,g:rwe,w:re) X$`09`09_status`20=`20$\0A06 X$`09`09set`20on X$`09`09deassign`20sys$error X$`09`09if`20.not.`20_status X$`09`09`20`20`20then X$`09`09`09write`20sys$error`20- X$`09`09`09write`20sys$error`20f$message(_status) X`09`09&0209"%OMI-F-CREERR,`20error`20creating`20directory" X$`09`09`09goto`20get_dest X$`09`09endif X$`09endif X$`09omi_source`20=`20"`5B.''f$parse(omi_set,,,"name")'`5D" X$! X$!***** X$!`20Unpack X$! X$`09write`20sys$error`20"%OMI-I-UNPACK,`20please`20wait`20-`20unpacking`20dist Vribution" X$`09'omi_unpack''omi_set' X$`09delete_`20/confirm`20'omi_set' X$! X$!***** X$!`20Copy`20`26`20Cleanup X$! X$`09if`20f$search("''omi_dest'omi$menu.com")`20.nes.`20"" X$`09`20`20`20then`20$`20set_prot`20=`200 X$`09`20`20`20else`20$`20set_prot`20=`201 X$`09endif X$`09if`20f$search("''omi_dest'omi$toolbox.ini")`20.nes.`20"" X$`09`20`20`20then X$`09`09write`20sys$error`20"%OMI-I-EXISTS,`20OMI$TOOLBOX.INI`20exists" X$`09`09gosub`20patch_toolbox_ini X$`09endif X$`09if`20f$search("''omi_dest'omi$menu.cfg")`20.nes.`20"" X$`09`20`20`20then X$`09`09write`20sys$error`20"%OMI-I-EXISTS,`20OMI$MENU.CFG`20exists" X$`09`09rename_`20'omi_source'omi$menu.cfg\1919_new X$`09`09write`20sys$error`20- X`09`20`20`20"-OMI-I-NEWNAME,`20installing`20new`20config`20file`20as`20OMI$MEN VU.CFG_NEW" X$`09endif X$! X$`09copy_`20'omi_source'*.*;\1106dest'*.*;0 X$`09delete_`20'omi_source'*.*;* X$`09delete_`20'f$parse(omi_set,,,"name")'.dir; X$`09if`20set_prot`20.eq.`201`20then`20$`20set`20file`20'omi_dest'*.*;`20- X`09`20`20`20/protection=(s:rwe,o:rwed,g:re,w:re) X$! X$!***** X$!`20Install X$! X$`09set`20default`20'omi_dest' X$`09write`20sys$error`20"%OMI-I-CREHELP,`20creating`20the`20help`20library" X$`09if`20f$search("omi$menu.hlb")`20.nes.`20""`20then`20$`20delete_`20\270C;* V X$`09library`20/help`20/create`20omi$menu\0909.hlp X$`09library`20/help`20/insert`20omi$menu`20omi$calling_modules.hlp X$`09library`20/help`20/insert`20omi$menu`20omi$commands.hlp X$`09library`20/help`20/insert`20omi$menu`20omi$config_file.hlp X$`09library`20/help`20/insert`20omi$menu`20omi$logicals.hlp X$`09library`20/help`20/insert`20omi$menu\0909_file.hlp X$`09set`20file`20/protection=(s:re,o:rwe,g:re,w:re)`20omi$menu.hlb X$! X$`09write`20sys$error`20- X`20"%OMI-I-MSGREPAIR,`20repairing`20the`20message`20datafiles`20-`20ignore`20B VADMSGFIL\2508s" X$`09if`20f$trnlnm("omi$menu_directory")`20.nes.`20"" X$`09`20`20`20then`20$`20look_in`20=`20"omi$menu_directory:" X$`09`20`20`20else X$`09`09if`20f$trnlnm("omi$")`20.nes.`20"" X$`09`09`20`20`20then`20$`20look_in`20=`20"omi$:" X$`09`09`20`20`20else`20$`20look_in`20=`20"`5B`5D" X$`09`09endif X$`09endif X$`09files_that_need_repair`20=`20"/OMI/OMIMGT/" X$`09cnt`20=`201 X$`09omi$_jumps`20=`20"" X$! X$`20get_msg_files: X$! X$`09message_file`20=`20f$search("''look_in'*$\2507s.dat;") X$`09if`20message_file`20.eqs.`20""`20then`20$`20goto`20got_msg_files X$`09if`20f$locate`20("/''f$element(0,"$",f$parse(message_file,,,"name"))'/", V`20- X`09`20`20`20files_that_need_repair)`20.lt.`20f$length(\2618then`20- X`09`20`20`20$`20omi$_jumps`20=\0D0C+`20"9,''cnt',7," X$`09cnt`20=`20cnt`20+`201 X$`09goto`20get_msg_files X$! X$`20got_msg_files: X$! X$`09omi$_jumps`20=`20\0D0B+`20"exit" X$`09@omi$menu`20omi$manage`20/submenu=messages`20/jumps='omi$_jumps'`20/batch V X$`09set`20default`20'i_am_here' X$`09write`20sys$error`20"%OMI-S-INSTALLED,`20OMI`20succesfully`20installed" X$`09goto`20bye X$! X$`20nozip: X$! X$`09deassign`20sys$output X$`09deassign`20sys$error X$`09write`20sys$error`20"%OMI-E-NOZIP,`20unzip`20command`20not`20found`20-`20p Vlease`20download`20the`20SHARE`20distribution" X$`09goto`20bye X$! X$`20bye: X$! X$`09exit X$! X$!***** X$!`20Patch`20the`20existing`20TOOLBOX.INI X$! X$`20patch_toolbox_ini: X$! X$`09open`20/read`20new_tb`20'omi_source'omi$toolbox.ini X$`09open`20/read`20old_tb`20'omi_dest'omi$toolbox.ini X$`09open`20/write`20p_tb`20'omi_source'omi$toolbox.ini_new X$`09in_omi_tb`20=`201 X$! X$`20read_new_tb: X$! X$`09read`20/end_of_file=read_old_tb`20new_tb`20line X$`09check=f$edit(line,"collapse,uncomment,upcase") X$`09if`20check`20.eqs.`20""`20then`20$`20goto`20read_old_tb X$`09write`20p_tb`20line X$`09goto`20read_new_tb X$! X$`20read_old_tb: X$! X$`09read`20/end_of_file=close_tb`20old_tb`20line X$`09check=f$edit(line,"collapse,uncomment,upcase") X$`09if`20check`20.eqs.`20"" X$`09`20`20`20then X$`09`09write`20p_tb`20line X$`09`09goto`20read_old_tb X$`09endif X$`09if`20f$extract(0,1,check)`20.eqs.`20"`5B" X$`09`20`20`20then X$`09`09if`20check`20.eqs.`20"`5BOMI$TOOLBOX`5D" X$`09`09`20`20`20then`20$`20in_omi_tb`20=`201 X$`09`09`20`20`20else`20$`20in_omi_tb`20=`200 X$`09`09endif X$`09endif X$`09if`20in_omi_tb`20.eqs.`200`20then`20$`20write`20p_tb`20line X$`09goto`20read_old_tb X$! X$`20close_tb: X$! X$`09close`20new_tb X$`09close`20old_tb X$`09close`20p_tb X$`09delete_`20'omi_source'omi$toolbox.ini; X$`09rename_`20'omi_source'omi$toolbox.ini_new\201C X$`09write`20sys$error`20- X`09`20`20`20"-OMI-S-TBPATCHED,`20OMI$TOOLBOX.INI`20successfully`20patched" X$`09return $ call unpack [.OMI-V2_3]OMI$INSTALL.COM;1 - 1241648854 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 13 21 41 $! $ create 'f' X! X!********\0808\1010\2020\400E X!*`20`20&0220&0420\0808\1010\2020\400C* X!*`20`20&0220LIBRARY`20NAME:&0420&0420\0808\1010\201B* X!*`20`20&0220=============&0420&0420\0808\1010\201B* X!*`20`20&0220&0220Omi$Library\1106\1706\0C0C\1818\300B* X!*`20`20&0220&0420\0808\1010\2020\400C* X!*`20`20&0220DESCRIPTION:&0420&0420\0808\1010\201C* X!*`20`20&0220============&0420&0420\0808\1010\201C* X!*`20`20&0220&0220This`20library`20can`20be`20included`20in`20OMI`20Menus.`20I Vt`20defines`20some`20generaly`20&0220* X!*`20`20&0220&0220usable`20sections,`20like`20value`20lists.\2806\2E06\0C0C V\180C* X!*`20`20&0220&0220Most`20value`20lists`20are`20defined`20with`20a`20delimiter, V`20which`20enables`20them`20to&0220* X!*`20`20&0220&0220be`20called`20as`20select-`20and`20as`20tag`20lists.\2C06 V\3206\0C0C\1808* X!*`20`20&0220&0420\0808\1010\2020\400C* X!*`20`20&0220CONTENTS:&0420&0420\0808\1010\201F* X!*`20`20&0220=========&0420&0420\0808\1010\201F* X!*`20`20&0220&0220The`20following`20sections`20can`20be`20called`20from`20with Vin`20menu`20types:\4206&0420* X!*`20`20&0220&0420\0808\1010\2020\400C* X!*`20`20&0220&0220Section`20name\1206\160CTyp\1606Description`20\270A\3109* X!*`20`20&0220&0220--------\0808\1010\2020\4606* X!*`20`20&0220&0220`5BDAY_OF_WEEK`5D\1306&0320Tag`20and`20Select&0320Listing`20 Vof`20weekdays\2D09&0320* X!*`20`20&0220&0220`5BMONTH_OF_YEAR`5D\1506`20Tag`20and`20Select&0320Listing`20 Vof`20monthnames\2D07&0320* X!*`20`20&0220&0220`5BYES_OR_NO`5D\1106&0520Select\110BValues`20'Yes'`20and`20' VNo',\3209* X!*`20`20&0220&0420\0808\1010\200Dusefull`20for`20confirmations\4606* X!*`20`20&0220&0420\0808\1010\2020\400C* X!*`20`20&0220HISTORY:&0420&0420\0808\1010\2020* X!*`20`20&0220========&0420&0420\0808\1010\2020* X!*`20`20&0220&0220v1&022016-05-99`20Oscar`20van`20Eijk\2106&0220Created\0F08 V\1708\100C* X!*`20`20&0220&0420\0808\1010\2020\400C* X!********\0808\1010\2020\400E X! X`5BDAY_OF_WEEK`5D X! X`20`20delimiter`20=`20/ X`20`20value1&0220&0220=`20Monday X`20`20value2&0220&0220=`20Tuesday X`20`20value3&0220&0220=`20Wednesday X`20`20value4&0220&0220=`20Thursday X`20`20value5&0220&0220=`20Friday X`20`20value6&0220&0220=`20Saturday X`20`20value7&0220&0220=`20Sunday X! X`5BMONTH_OF_YEAR`5D X! X`20`20delimiter`20=`20/ X`20`20value1&0220&0220=`20January X`20`20value2&0220&0220=`20February X`20`20value3&0220&0220=`20March X`20`20value4&0220&0220=`20April X`20`20value5&0220&0220=`20May X`20`20value6&0220&0220=`20June X`20`20value7&0220&0220=`20July X`20`20value8&0220&0220=`20August X`20`20value9&0220&0220=`20September X`20`20value10&0220`20=`20October X`20`20value11&0220`20=`20November X`20`20value12&0220`20=`20December X! X`5BYES_OR_NO`5D X`20`20value1&0220&0220=`20Yes X`20`20value2&0220&0220=`20No $ call unpack [.OMI-V2_3]OMI$LIBRARY.OML;1 - 2001615676 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 6 22 41 $! $ create 'f' X1`20Logical_Names X XSeveral`20logical`20names`20can`20be`20defined`20to`20change`20the`20behaviour V`20of XOMI.`20None`20of`20them`20are`20required;`20the`20only`20one`20that`20is\1F09 V Xby`20OMI`20(OMI$)`20will`20be`20defined`20dynamically`20if`20absent. X X2`20OMI$ X XThis`20logical`20points`20to`20the`20directory`20where`20all`20OMI`20related V`20files Xare`20located.`20If`20this`20logical`20is`20not`20set,`20it`20will`20be`20defi Vned`20when XOMI`20starts,`20and`20deassigned`20when`20OMI`20ends. X X2`20OMI$MAILBOX X XThis`20is`20a`20logical`20pointing`20to`20a`20mailbox`20that's`20available`20f Vor Xcommunication`20between`20processes`20in`20OMI`20modules. XThe`20logical`20is`20available`20when`20the`20OMI`20command`20OMI$CREATE_MBX Xis`20called`20from`20an`20OMI`20module. X XFor`20mor`20information`20about`20the`20use`20of`20mailboxes`20in`20OMI,`20ref Ver Xto`20the`20subtopic`20'Calling_Modules`20OMI_Commands`20OMI$CREATE_MBX'. X X2`20OMI$MENU_DIRECTORY X XWhen`20this`20logical`20exists,`20OMI`20looks`20in`20the`20directories`20where V`20it`20points Xto`20for`20all`20menu`20files.`20If`20a`20file`20is`20not`20found`20here,`20OM VI`20looks`20in`20the Xdefault`20directory,`20pointed`20to`20by`20OMI$.`20This`20is`20also`20the\300A V`20where Xmenu`20files`20should`20be`20stored`20if`20the`20logical`20does`20not`20exist. V X XMenu`20files`20should`20be`20located`20in`20one`20of`20those`20directories.`20 VIf`20they Xcan't`20be`20found`20there,`20an`20error`20message`20will`20be`20displayed.`20 V XThis`20logical`20can`20be`20defined`20as`20a`20search`20list. X X2`20OMI$STARTMENU X`20`20&0220&0420\0808\1010\2008 XIf`20this`20logical`20is`20set,`20is`20points`20to`20the`20menu`20file`20with V`20which`20OMI Xstarts`20every`20session.`20This`20logical`20can`20be`20user`20specific`20or V`20system Xwide. X X2`20OMI$CONFIG X XThis`20logical`20points`20to`20the`20user`20specific`20configuration`20file. V`20It`20should Xrepresent`20the`20full`20path`20and`20filename. XIf`20not`20set,`20the`20default`20configuration`20file`20OMI$:OMI$MENU.CFG`20i Vs`20used. X $ call unpack [.OMI-V2_3]OMI$LOGICALS.HLP;1 - 661790313 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 4 23 41 $! $ create 'f' X!********\0808\1010\2020\400E X!*`20`20&0220&0420\0808\1010\2020\400C* X!*`20`20&0220MENU`20NAME:&0420&0420\0808\1010\201E* X!*`20`20&0220==========&0420&0420\0808\1010\201E* X!*`20`20&0220&0220Omi$Manage\1006\1606\0C0C\1818\300C* X!*`20`20&0220&0420\0808\1010\2020\400C* X!*`20`20&0220DESCRIPTION:&0420&0420\0808\1010\201C* X!*`20`20&0220============&0420&0420\0808\1010\201C* X!*`20`20&0220&0220This`20module`20manages`20some`20parts`20of`20OMI`20internal Vly.\3706\3D06\0C09* X!*`20`20&0220&0420\0808\1010\2020\400C* X!*`20`20&0220HISTORY:&0420&0420\0808\1010\2020* X!*`20`20&0220========&0420&0420\0808\1010\2020* X!*`20`20&0220&0220v1&022002-07-97`20Oscar`20van`20Eijk\2106&0220Created\0F08 V\1708\100C* X!*`20`20&0220&0420\0808\1010\2020\400C* X!********\0808\1010\2020\400E X! X`5Bconstants`5D X! X!`20Start`20with`20some`20configurable`20constant`20values X! X`20`20`20facil_list&0220=`20sys$scratch:omi$message_facilities._tmp$ X X!********\0808\1010\2020\400F X! X!==>`09Define`20the`20Menus X! X!********\0808\1010\2020\400F X X`5Bmenu_menu`5D X! X!`20The`20Main`20Menu X! X`20`20`20prompt&0320&0220=`20OMIMGT> X`20`20`20title&0320&0320=`20Omi`20Management`20-`20Main`20Menu X`20`20`20name&0320&0320`20=`20mainmenu X`20`20`20all_inputs`20=`20false X!`20`20`20comment&0320`20=`20This`20menu`20is`20being`20developed`20-`20there' Vs`20only`20one`20submenu`20available X`20`20`20item1&0320&0320=`20OMI`20Messages`20Menu#submenu#me\1606 X`20`20`20item2&0320&0320=`20Help`20on`20this`20menu#command#info X!`20`20`20item2&0320&0320=`20Create`20a`20new`20(sub)menu#submenu#createmnu X!`20`20`20input1&0320&0220=`20Select`20a`20Menu`20file#mnu_file##frm_menufile V X X X X!********\0808\1010\2020\400F X!********\0808\1010\2020\400F X!==>`09Message`20Menu`20and`20Attributes X!********\0808\1010\2020\400F X!********\0808\1010\2020\400F X X!********\0808\1010\2020\400F X! X!==>`09Define`20the`20Menus X! X!********\0808\1010\2020\400F X X`5Bmenu_messages`5D X! X!`20This`20menu`20can`20be`20used`20to`20create`20a`20new`20message`20file,`20 Vrepair`20an`20existing X!`20message`20file,`20or`20to`20add`20a\1A09to`20a\270D X! X`20`20`20title&0320&0320=`20Omi`20Management`20-`20Messages`20Menu X`20`20`20name&0320&0320`20=`20messages\1107&0420!`20The`20name`20is`20used`20b Vy`20OMI$INSTALL.COM X`20`20`20on_init&0320`20=`20Omi$:Mgt$List_Facil X`20`20`20on_exit&0320`20=`20Omi$:Mgt$List_Facil`20rem_file X`20`20`20all_inputs`20=`20false X`20`20`20item1&0320&0320=`20Create`20this`20facility#call#Omi$:Mgt$Message`20c Vreate X`20`20`20item2&0320&0320=`20Add`20a`20new`20message#submenu#add_\1407 X`20`20`20item3&0320&0320=`20Edit`20this`20message#submenu#edt_\1407 X`20`20`20item4&0320&0320=`20Delete`20this`20message#call#Omi$:Mgt$M\1606`20del Vete X`20`20`20item5&0320&0320=`20Display`20this`20message#call#Omi$:Mgt$M\1606`20d V\2B06 X`20`20`20item6&0320&0320=`20Search`20for`20a`20message#call#`20- X`09`09Omi$:Mgt$Message`20search`20`7E?`7BS\0A06string:`7D`20 X`20`20`20item7&0320&0320=`20Repair`20the`20message`20file#call#Omi$:Mgt$M\1B07 Vrepair X`20`20`20item8&0320&0320=`20Back`20to`20the`20Main`20Menu#command#main X`20`20`20input1&0320&0220=`20Select`20a`20facility`20to`20work`20with#`7Bsel V`7Cfacil_list`7Dmsg_facil X`20`20`20input2&0320&0220=`20Select`20a`20message`20identifier#msg_ident##frm_ Vfacident X X`5Bmenu_add_message`5D X`20`20`20title&0320=`20Omi`20Management`20-`20Add`20Messages X`20`20`20prompt&0220=`20ADDMSG> X`20`20`20on_init`20=`20Omi$:Mgt$Check_Facil X`20`20`20on_exit`20=`20Omi$:Mgt$Message`20check X`20`20`20item1&0320=`20Add`20this`20message#call#Omi$:Mgt$M\1606`20add X`20`20`20item2&0320=`20Back`20to`20the`20Message`20Menu#command#back X`20`20`20item3&0320=`20Back`20to`20the`20Main`20Menu#command#main X`20`20`20input1&0220=`20Identification#msg_ident##frm_facident X`20`20`20input2&0220=`20Severity#`7Bsel`7Cse\0E06_levels`7Dmsg_sever X`20`20`20input3&0220=`20Message`20text#msg_text X X`5Bmenu_edt_message`5D X`20`20`20title&0320=`20Omi`20Management`20-`20Edit`20Messages X`20`20`20comment`20=`20Edit`20message`20with`20identifier`20`7Bmsg_ident`7D X`20`20`20prompt&0220=`20EDTMSG> X`20`20`20on_init`20=`20Omi$:Mgt$Check_Ident X`20!`20`20on_exit`20=`20Omi$:Mgt$Check_Written X`20`20`20item1&0320=`20Update`20this`20message#call#Omi$:Mgt$M\1606`20edit X`20`20`20item2&0320=`20Back`20to`20the`20Message`20Menu#command#back X`20`20`20item3&0320=`20Back`20to`20the`20Main`20Menu#command#main X`20`20`20input1&0220=`20Severity#`7Bsel`7Cse\0E06_levels`7Dmsg_sever X`20`20`20input2&0220=`20Message`20text#msg_text X X!********\0808\1010\2020\400F X! X!==>`09Define`20all`20format`20blocks X! X!********\0808\1010\2020\400F X X`5Bfrm_facident`5D X! X!`20Format`20for`20Message`20Facilities`20and`20Identtifiers X! X`20`20`20type&0320&0320=`20string X`20`20`20collapse&0220=`20true X`20`20`20upcase&0320`20=`20true X`20`20`20minlength`20=`203 X`20`20`20maxlength`20=`2014 X`20`20`20ivchars&0320=`20@#%`5E`26*()+`7B`7D`5B`5D`7C`5C:;',./<>?`60`7E X X!********\0808\1010\2020\400F X! X!==>`09Define`20all`20tag-`20and`20select`20lists X! X!********\0808\1010\2020\400F X X`5Bseverity_levels`5D X! X!`20The`20possible`20severity`20levels`20for`20messages X! X`20`20`20value1`20=`20Informational X`20`20`20value2`20=`20Success X`20`20`20value3`20=`20Warning X`20`20`20value4`20=`20Error X`20`20`20value5`20=`20Fatal X X`5Bfacil_list`5D X! X!`20The`20list`20of`20available`20facilities`20is`20dumped`20to`20a`20file`20w Vhen`20selecting`20the X!`20menu. X! X`20`20`20filename`20=`20''constants$facil_list' X X!********\0808\1010\2020\400F X!********\0808\1010\2020\400F X!==>`09Menu`20Menu`20and`20Attributes X!********\0808\1010\2020\400F X!********\0808\1010\2020\400F X X!`20Since`20this`20menu`20is`20not`20available`20yet,`20the`20file`20ends`20he Vre... X X X!********\0808\1010\2020\400F X! X!==>`09Define`20the`20Menus X! X!********\0808\1010\2020\400F X X`5Bmenu_createmnu`5D X! X!`20This`20menu`20is`20used`20to`20create`20new`20submenus`20in`20the`20select Ved`20menu`20file. X! X`20`20`20title&0320=`20Omi`20Management`20-`20Create`20a`20new`20SubMenu X`20`20`20name&0320`20=`20createmenu X`20`20`20on_init`20=`20mgt$new_menu_file X`20`20`20on_exit`20=`20mgt$write_menu_file X`20`20`20item1&0320=`20Create`20this`20menu#call#Omi$:Mgt$\1F06Menu`20menu X`20`20`20item2&0320=`20Add`20an`20Item`20element#submenu#additem X`20`20`20item3&0320=`20Add`20an`20Input`20element#submenu#`7BStraight`20Input V`7Caddinp_s\1607`7D`20- X`09`09`7BSelect`20List`7Caddinp_select`7D`7BTag\180Dtag`7DInput`20Type: X`20`20`20item4&0320=`20Add`20a`20security`20section#submenu#add\1C08 X`20`20`20input1&0220=`20Section`20name#ms\0E06##frm_intnames X`20`20`20input2&0220=`20Menu`20Title#mtitle X`20`20`20input3&0220=`20Menu`20Owner`20(NONE`20for`20no`20owner)#mowner#''omi$ Vcurrent_user'- X`09`09#frm_username X`20`20`20input4&0220=`20Set`20a`20password#`7Bsel`7Cyes_or_no`7Dm\1909value2 X`20`20`20input5&0220=`20Menu`20Name#mname##frm_intnames X`20`20`20input6&0220=`20Counter`20Name#mc\0E06##frm_intnames X X`5Bmenu_addinp_straight`5D X! X!`20Collect`20all`20information`20for`20Straight`20Input`20elements.`20If`20a V`20format`20block X!`20needs`20to`20be`20added`20to`20the`20input,`20dynamic`20submenus`20will`20 Vbe`20called,`20 X!`20depending`20on`20the`20input`20type X! X`20`20`20title&0320=`20Omi`20Management`20-`20Add`20an`20Input`20Element X`20`20`20comment`20=`20Adding`20Input`20Element`20#`7Bcounter$input_\0E07`7D X`20`20`20counter`20=`20input_\1007 X`20`20`20item1&0320=`20Back`20to`20the`20previous`20menu#command#back X`20`20`20item2&0320=`20Add`20a`20format`20block`20to`20this`20element#submenu# V&0320&0320`20- X`09`09`7BString`7Caddfrm_string`7D`7BInteger\1708integer`7D`20- X`09`09`7BDate`7Caddfrm_date`7D`7BFileSpec\1608filespec`7DFormat`20Type:`20 X`20`20`20item3&0320=`20Next`20Input#command#increase`20refresh X`20`20`20input1&0220=`20Input`20type#`7Bsel`7Cstraight_input_type`7D`20- X`09`09inptype'counter$input_\0E07'#value1 X`20`20`20input2&0220=`20Text`20on`20display#displtext'counter$input_\0E07' X`20`20`20input3&0220=`20Variable`20Name#varname'counter$input_\0E07'##frm_intn Vames X`20`20`20input4&0220=`20Default`20value#defvalue'counter$input_\0E07' X X`5Bmenu_addfrm_string`5D X! X!`20Collect`20all`20information`20for`20the`20String-`20type`20\1F06`20block X! X`20`20`20title&0320=`20OMI`20Management`20-`20Add`20a`20Format`20Block X`20`20`20counter`20=`20input_\1007 X`20`20`20auto_increase`20=`20false X`20`20`20item1&0320=`20Back`20to`20the`20previous`20menu#menu#back X`20`20&0220!`20The`201st`20input`20item`20is`20a`20dummy`20select`20to`20force V`20existance`20of`20the`20variable X`20`20`20input1&0220=`20Format`20type#`7Bsel`7Cstring_format_type`7D`20- X`09`09frm_type'counter$input_\0E07'#value1 X`20`20`20input2&0220=`20Section`20name#frm_sname'counter$input_\0E07'##frm_int Vnames X`20`20`20input3&0220=`20Force`20to`20Upcase#`7Bsel`7Ctrue_or_false`7D`20- X`09`09strfrm_upcase'counter$input_\0E07'#value2 X`20`20`20input4&0220=`20Force`20to`20Lowercase#`7Bsel`7Ctrue_or_false`7D`20- X`09`09strfrm_lowercase'counter$input_\0E07'#value2 X`20`20`20input5&0220=`20Collapse`20string#`7Bsel`7Ctrue_or_false`7D`20- X`09`09strfrm_collapse'counter$input_counter'#value2 X`20`20`20input6&0220=`20Minimum`20length#strfrm_min\1106'counter$input_\0E07'# V`20- X`09`09#frm_positive_int X`20`20`20input7&0220=`20Maximum`20length#strfrm_max\1106'counter$input_\0E07'# V`20- X`09`09#frm_positive_int X`20`20`20input8&0220=`20List`20of`20invalid`20characters#strfrm_ivchars'counte Vr$input_\0E07' X X`5Bmenu_addfrm_integer`5D X! X!`20Collect`20all`20information`20for`20the`20Integer-`20type`20\2006`20block V X! X`20`20`20title&0320=`20OMI`20Management`20-`20Add`20a`20Format`20Block X`20`20`20counter`20=`20input_\1007 X`20`20`20auto_increase`20=`20false X`20`20`20item1&0320=`20Back`20to`20the`20previous`20menu#menu#back X`20`20&0220!`20The`201st`20input`20item`20is`20a`20dummy`20select`20to`20force V`20existance`20of`20the`20variable X`20`20`20input1&0220=`20Format`20type#`7Bsel`7Cinteger_format_type`7D`20- X`09`09frm_type'counter$input_\0E07'#value1 X`20`20`20input2&0220=`20Section`20name#frm_sname'counter$input_\0E07'##frm_int Vnames X`20`20`20input3&0220=`20Minimum`20Value#intfrm_m\1506'counter$input_\0E07'##fr Vm_integer X`20`20`20input4&0220=`20Maximum`20Value#intfrm_m\1506'counter$input_\0E07'##fr Vm_integer X X`5Bmenu_addfrm_date`5D X! X!`20Collect`20all`20information`20for`20the`20Date-`20type`20\1D06`20block X! X`20`20`20title&0320=`20OMI`20Management`20-`20Add`20a`20Format`20Block X`20`20`20counter`20=`20input_\1007 X`20`20`20auto_increase`20=`20false X`20`20`20all_inputs`20=`20false X`20`20`20item1&0320=`20Back`20to`20the`20previous`20menu#menu#back X`20`20&0220!`20The`201st`20input`20item`20is`20a`20dummy`20select`20to`20force V`20existance`20of`20the`20variable X`20`20`20input1&0220=`20Format`20type#`7Bsel`7Cdate_format_type`7D`20- X`09`09frm_type'counter$input_\0E07'#value1 X`20`20`20input2&0220=`20Section`20name#frm_sname'counter$input_\0E07'##frm_int Vnames X`20`20`20input3&0220=`20Date`20Format#`7Bsel`7Cdate_formats`7D`20- X`09`09datfrm_type'counter$input_\0E07'#value1 X X`5Bmenu_addfrm_filespec`5D X! X!`20Collect`20all`20information`20for`20the`20FileSpec-`20type`20format`20bloc Vk X! X`20`20`20title&0320=`20OMI`20Management`20-`20Add`20a`20Format`20Block X`20`20`20counter`20=`20input_\1007 X`20`20`20auto_increase`20=`20false X`20`20`20item1&0320=`20Back`20to`20the`20previous`20menu#menu#back X`20`20&0220!`20The`201st`20input`20item`20is`20a`20dummy`20select`20to`20force V`20existance`20of`20the`20variable X`20`20`20input1&0220=`20Format`20type#`7Bsel`7Cfilespec_format_type`7D`20- X`09`09frm_type'counter$input_\0E07'#value1 X`20`20`20input2&0220=`20Section`20name#frm_sname'counter$input_\0E07'##frm_int Vnames X`20`20`20input3&0220=`20Existance`20required#`7Bsel`7Ctrue_or_false`7D`20- X`09`09filfrm_required'counter$input_\0E07'#value2 X`20`20`20input4&0220=`20Wildcards`20allowed#`7Bsel`7Ctrue_or_false`7D`20- X`09`09filfrm_wildcards'counter$input_\0E07'#value2 X`20`20`20input5&0220=`20Default`20device#filfrm_f\0F06'counter$input_\0E07'`20 V- X`09`09##frm_defdevname X`20`20`20input6&0220=`20Default`20directory#filfrm_f\1209'counter$input_\0E07' V`20- X`09`09##frm_defdirname X`20`20`20input7&0220=`20Default`20filetype#filfrm_ftype'counter$input_\0E07' V`20- X`09`09##frm_deftypename X X`5Bmenu_addinp_select`5D X! X!`20Collect`20all`20required`20information`20for`20a`20Select`20List`20input V`20Element X! X`20`20`20title&0320=`20Omi`20Management`20-`20Add`20a`20Select`20Input`20Eleme Vnt X`20`20`20comment`20=`20Adding`20Input`20Element`20#`7Bcounter$input_\0E07`7D X`20`20`20counter`20=`20input_\1007 X`20`20`20item1&0320=`20Back`20to`20the`20previous`20menu#command#back X`20`20`20item2&0320=`20Create`20a`20list`20of`20values#submenu#sellist_\1706 X`20`20`20item3&0320=`20Next`20Input#command#increase`20refresh X`20`20`20input1&0220=`20Input`20type#`7Bsel`7Cselect_input_type`7D`20- X`09`09inptype'counter$input_\0E07'#value1 X`20`20`20input2&0220=`20Text`20on`20display#displtext'counter$input_\0E07' X`20`20`20input3&0220=`20Variable`20Name#varname'counter$input_\0E07'##frm_intn Vames X`20`20`20input4&0220=`20Default`20value`20(VALUEn)#defvalue'counter$input_ V\0E07'`20- X`09`09##frm_positive_int X`20`20`20input5&0220=`20Name`20of`20the`20Select`20List#sellist_name'counter$i Vnput_\0E07'`20- X`09`09##frm_intnames X X`5Bmenu_sellist_values`5D X! X!`20Collect`20all`20values`20to`20create`20a`20select`20list X! X`20`20`20title&0320=`20Omi`20Management`20-`20Create`20a`20Select`20List X`20`20`20comment`20=`20Adding`20VALUE`7Bcounter$sellst_value_\1507`7D`20for`20 VSel`20- X`09`09`20ect`20List`20`7Bsellist_name'counter$input_\0E07'`7D X`20`20`20counter`20=`20sellst_value_\1707 X`20`20`20all_inputs`20=`20false X`20`20`20item1&0320=`20Back`20to`20the`20previous`20menu#command#back X`20`20`20item2&0320=`20Reset`20to`20VALUE0#command#reset`20counter X`20`20`20item3&0320=`20Increase`20'n'`20in`20VALUEn#command#in\1F07refresh X`20`20`20input1&0220=`20Value#selvalue'counter$sellst_value_\1507' X`20`20`20 X`5Bmenu_addinp_tag`5D X! X!`20Collect`20all`20required`20information`20for`20a`20Tag`20List`20input`20El Vement X! X`20`20`20title&0220=`20Omi`20Management`20-`20Add`20a`20Tag`20Input`20Element V X`20`20`20comment`20=`20Adding`20Input`20Element`20#`7Bcounter$input_\0E07`7D X`20`20`20counter`20=`20input_\1007 X`20`20`20item1&0320=`20Back`20to`20the`20previous`20menu#command#back X`20`20`20item2&0320=`20Create`20a`20list`20of`20values#submenu#taglist_\1706 X`20`20`20item3&0320=`20Next`20Input#command#increase`20refresh X`20`20`20input1&0220=`20Input`20type#`7Bsel`7Ctag_input_type`7D`20- X`09`09inptype'counter$input_\0E07'#value1 X`20`20`20input2&0220=`20Text`20on`20display#displtext'counter$input_\0E07' X`20`20`20input3&0220=`20Variable`20Name#varname'counter$input_\0E07'##frm_intn Vames X`20`20`20input4&0220=`20Name`20of`20the`20Tag`20List#taglist_name'counter$inpu Vt_\0E07'`20- X`09`09##frm_intnames X`20`20`20input5&0220=`20Comment`20line#taglist_c\1506'counter$input_counter' X`20`20`20input6&0220=`20Delimiter#taglist_d\1208'counter$input_\0E07'`20- X`09`09##frm_taglst_delimiter X X`5Bmenu_taglist_values`5D X! X!`20Collect`20all`20values`20to`20create`20a`20tag`20list X! X`20`20`20title&0320=`20Omi`20Management`20-`20Create`20a`20Tag`20List X`20`20`20comment`20=`20Adding`20VALUE`7Bcounter$sellst_value_\1507`7D`20for`20 VTag`20L`20- X`09`09`20ist`20`7Bsellist_name'counter$input_\0E07'`7D X`20`20`20counter`20=`20taglst_value_\1707 X`20`20`20all_inputs`20=`20false X`20`20`20item1&0320=`20Back`20to`20the`20previous`20menu#command#back X`20`20`20item2&0320=`20Reset`20to`20VALUE0#command#reset`20counter X`20`20`20item3&0320=`20Increase`20'n'`20in`20VALUEn#command#in\1F07refresh X`20`20`20input1&0220=`20Value#selvalue'counter$sellst_value_\1507' X X`5Bmenu_additem`5D X! X!`20Add`20an`20Item`20element`20to`20the`20new`20menu X! X`20`20`20title&0320=`20Omi`20Management`20-`20Add`20an`20Item`20Element X`20`20`20comment`20=`20Adding`20Item`20Element`20#`7Bcounter$item_\0D07`7D X`20`20`20counter`20=`20item_\0F07 X`20`20`20item1&0320=`20Back`20to`20the`20previous`20menu#command#back X`20`20`20item2&0320=`20Next`20item#command#increase`20refresh X`20`20`20input1&0220=`20Text`20on`20display#itemtext'counter$item_\0D07' X`20`20`20input2&0220=`20Item`20Type#`7Bsel`7Citem_types`7Ditemtype'counter$ite Vm_\0D07' X`20`20`20input3&0220=`20Submenu/Omi`20job/Command#itemp3'counter$item_\0D07' X`20`20`20 X`5Bmenu_addsecurity`5D X! X!`20Add`20a`20security`20block`20to`20the`20new`20menu X! X`20`20`20title&0320=`20Omi`20Management`20-`20Add`20a`20Security`20Section X`20`20`20counter`20=`20secuser_\1207 X`20`20`20comment`20=`20Adding`20User`20#`7Bcounter$secuser_\1007`7D`20to`20Sec Vurity X`20`20`20all_inputs`20=`20false X`20`20`20item1&0320=`20Back`20to`20the`20previous`20menu#command#back X`20`20`20item2&0320=`20Next`20user#command#increase`20refresh X`20`20`20input1&0220=`20Section`20name#ss\0E06##frm_intnames X`20`20`20input2&0220=`20Username#suser'counter$secuser_\1007'#ALL_USERS#frm_us Vername X`20`20`20input3&0220=`20Privilege#`7Bsel`7Csecurity_levels`7Dslevel'counter$se Vcuser_\1007'`20- X`09`20`20&0220`20#value3 X`20`20`20 X!********\0808\1010\2020\400F X! X!==>`09Define`20all`20format`20blocks X! X!********\0808\1010\2020\400F X X`5Bfrm_menufile`5D X! X!`20Format`20for`20the`20menu-`20file X! X`20`20`20type&0320&0320=`20filespec X`20`20`20required&0220=`20false X`20`20`20wildcards`20=`20false X`20`20`20ftype&0320&0220=`20.mnu X`20`20`20fdevice&0320=`20Omi$Menu_Directory: X X`5Bfrm_username`5D X! X!`20Username`20format X! X`20`20`20type&0320&0320=`20string X`20`20`20collapse&0220=`20true X`20`20`20upcase&0320`20=`20true X`20`20`20minlength`20=`204 X`20`20`20maxlength`20=`2012 X`20`20`20ivchars&0320=`20@#%`5E`26*()+`7B`7D`5B`5D=`7C`5C:;',./<>?`60`7E X X`5Bfrm_intnames`5D X! X!`20Internal`20names,`20like,`20section-,`20variable-`20and`20menu\2A08will`20 Vbe`20formatted X!`20using`20this`20block X! X`20`20`20type&0320&0320=`20string X`20`20`20upcase&0320`20=`20true X`20`20`20collapse&0220=`20true X`20`20`20minlength`20=`203 X`20`20`20maxlength`20=`2012 X`20`20`20ivchars&0320=`20@#%`5E`26*()+`7B`7D`5B`5D=`7C`5C:;',./<>?`60`7E X X`5Bfrm_positive_int`5D X! X!`20Format`20for`20all`20inputs`20where`20a`20positive`20integer`20is`20requir Ved X! X`20`20`20type`20=`20integer X`20`20`20min&0220=`200 X X`5Bfrm_integer`5D X! X!`20Format`20for`20all`20inputs`20where`20an`20integer`20is`20required X! X`20`20`20type`20=`20integer X X`5Bfrm_defdevname`5D X! X!`20Format`20for`20the`20Default`20Device`20in`20the`20FileDev`20format`20type V X! X`20`20`20type&0320&0320=`20string X`20`20`20collapse&0220=`20true X`20`20`20upcase&0320`20=`20true X`20`20`20ivchars&0320=`20@#%`5E`26*()+`7B`7D`5B`5D=`7C`5C;',./<>?`60`7E X X`5Bfrm_defdirname`5D X! X!`20Format`20for`20the`20Default`20Directory`20in`20the`20FileDev`20format`20t Vype X! X`20`20`20type&0320&0320=`20string X`20`20`20collapse&0220=`20true X`20`20`20upcase&0320`20=`20true X`20`20`20ivchars&0320=`20@#%`5E`26*()+`7B`7D=`7C`5C;',:/?`60`7E X X`5Bfrm_deftypename`5D X! X!`20Format`20for`20the`20Default`20File`20type`20in`20the`20FileDev`20format V`20type X! X`20`20`20type&0320&0320=`20string X`20`20`20collapse&0220=`20true X`20`20`20upcase&0320`20=`20true X`20`20`20ivchars&0320=`20@#%`5E`26*()+`7B`7D=`5B`5D`7C`5C;',:/<>?`60`7E X X`5Bfrm_taglst_delimiter`5D X! X!`20Format`20for`20the`20Default`20File`20type`20in`20the`20FileDev`20format V`20type X! X`20`20`20type&0320&0320=`20string X`20`20`20collapse&0220=`20true X`20`20`20lowercase`20=`20true`09!`20Make`20sure`20the`20IVCHARS`20has`20to`20c Vontain`20only\3D0A X`20`20`20minlength`20=`201 X`20`20`20maxlength`20=`201 X`20`20`20ivchars&0320=`20abcdefghijklmnopqrstuvwxyz0123456789 X X!********\0808\1010\2020\400F X! X!==>`09Define`20all`20tag-`20and`20select`20lists X! X!********\0808\1010\2020\400F X X`5Bsecurity_levels`5D X! X!`20Select`20list`20for`20the`20Security`20Levels X! X`20`20`20value1`20=`20None X`20`20`20value2`20=`20Read X`20`20`20value3`20=`20Read,Exec X`20`20`20value4`20=`20Read,Write,Exec X X`5Byes_or_no`5D X! X!`20General`20Yes/No`20boolean X! X`20`20`20value1`20=`20Yes X`20`20`20value2`20=`20No X X`5Btrue_or_false`5D X! X!`20General`20True/False`20boolean X! X`20`20`20value1`20=`20True X`20`20`20value2`20=`20False X X! X!`20Below`20are`20some`20dummy`20select`20blocks,`20used`20in`20several`20dyna Vmic`20menus`20to X!`20force`20the`20existance`20of`20the`20variable`20that's`20set`20using`20'va Vlue1'`20as`20defaults X! X`5Bstraight_input_type`5D X`20`20`20value1`20=`20Straight`20Input X`5Bselect_input_type`5D X`20`20`20value1`20=`20Select`20Input X`5Btag_input_type`5D X`20`20`20value1`20=`20Tag`20Input X`5Bstring_format_type`5D X`20`20`20value1`20=`20String X`5Binteger_format_type`5D X`20`20`20value1`20=`20Integer X`5Bdate_format_type`5D X`20`20`20value1`20=`20Date X`5Bfilespec_format_type`5D X`20`20`20value1`20=`20FileSpec X X`5Bdate_formats`5D X! X!`20Possible`20values`20for`20date`20formatting X! X`20`20`20value1`20=`20absolute X`20`20`20value2`20=`20comparison X`20`20`20value3`20=`20delta X X`5Bitem_types`5D X! X!`20Select`20list`20with`20the`20possible`20Item`20Types X! X`20`20`20value1`20=`20Submenu X`20`20`20value2`20=`20Command X`20`20`20value3`20=`20Call X X!********\0808\1010\2020\400F X! X!==>`09Define`20the`20counters`20for`20this`20menu X! X!********\0808\1010\2020\400F X X`5Bcounter`5D X`20`20`20input_counter&0320&0320&0220=`200 X`20`20`20item_counter&0320&0320&0320=`200 X`20`20`20secuser_counter&0320&0320=`200 X`20`20`20sellst_value_counter`20=`200 X`20`20`20taglst_value_counter`20=`200 $ call unpack [.OMI-V2_3]OMI$MANAGE.MNU;1 - 38806578 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 38 24 41 $! $ create 'f' X`5Bmenu`5D XThis`20Management`20menu`20is`20created`20in`20an`20early`20OMI`20version, Xbut`20never`20documented`20of`20finished. XIt`20is`20not`20likely`20new`20functionality`20will`20be`20added`20to`20this V`20menu, Xnor`20will`20it`20ever`20be`20fully`20documented,`20but`20the`20messages`20men Vu Xis`20used`20quite`20often,`20and`20is`20therefor`20now`20briefly`20documented V Xwith`20the`20OMI`20Info`20function. X XType`20INFO`20in`20each`20submenu`20for`20more`20information. X X`5Bmessages`5D XThis`20menu`20can`20be`20used`20to`20create`20a`20new`20message`20file,`20repa Vir`20an`20existing Xmessage`20file,`20or`20to`20add`20a`20\1A08to`20a\0D09file X XMessages`20in`20OMI`20look`20similar`20to`20standard`20VMS`20m\2D07,`20e.g.: X%FACIL-I-MSGEX,`20this`20is`20a`20message`20example Xwhere: X`20`20`20FACIL&0320`20is`20the`20facility`20name X`20`20`20I&0320&0320&0220is`20the`20severity`20level X`20`20`20MSGEX&0320`20is`20the`20message`20identification X`20`20`20<...>&0320`20the`20rest`20is`20the`20message`20text. X XBefore`20you`20start`20working`20with`20message,`20select`20or`20create`20a`20 Vfacility. XYou`20can`20select`20a`20facility`20with`20the`20option`20"S\2310..." Xor`20specify`20a`20new`20one`20there. XAfter`20entering`20the`20name`20for`20the`20new`20facility,`20select`20"Create V`20this Xfacility"`20to`20create`20it. XThis`20creates`20an`20indexed`20file`20named`20$MESSAGES.DAT. XNote:`20The`20file`20is`20created`20in`20the`20directory`20OMI$: X`20`20&0220&0220It`20can`20be`20moved`20to`20any`20other`20directory`20in`20th Ve X`20`20&0220&0220OMI$MENU_DIRECTORY`20search`20list`20afterwards. X XMessages`20can`20now`20be`20stored`20in`20this`20facility`20and`20displayed`20 Vfrom Xwithin`20modules`20using`20the`20command: X$`20OMI$SIGNAL`20`20 X XBy`20specifying`20an`20identifier,`20a`20message`20can`20be`20selected`20from V`20the`20 Xcurrent`20facility`20for`20Display,`20Delete`20or`20Edit. X XWhen`20a`20message`20file`20is`20corrupt`20(e.g.`20after`20a`20manual`20edit), V`20you'll`20get Xthe`20error`20%OMI-F-BADMSGFIL`20each`20time`20a`20message`20from`20the`20faci Vlity Xshould`20be`20displayed. XThis`20menu`20can`20also`20be`20used`20to`20repair`20such`20message`20files. X X`5Badd_message`5D XIn`20this`20menu,`20new`20messages`20can`20be`20added`20to`20the`20selected`20 Vfacility. XFill`20in`20all`20fields`20in`20this`20menu,`20then`20select`20"Add\1C08ssage" V. X XThe`20identification`20can`20be`20freely`20choosen,`20but`20its`20size`20must V`20be Xbetween`203`20and`2014`20characters. XAn`20error`20will`20be`20displayed`20if`20the`20identification`20already`20exi Vsts. X XIf`20the`20message`20text`20should`20contain`20variables,`20they`20can`20be`20 Vspecified Xby`20the`20string`20"`7ES"`20(tilde-`20sign,`20immediatly`20followed`20by`20an V Xuppercase`20'S'). XThis`20string`20will`20be`20replaced`20by`20it's`20value`20by`20the`20OMI$SIGN VAL Xcommand,`20e.g.,`20if`20the`20facility`20MYFACIL`20contains`20the`20message XSHOWDAY`20with`20severity`20I`20(informational)`20and`20the`20text X"today`20is`20a`20`7ES",`20the`20following`20code: X`20`20$`20var`20=`20"TUESDAY" X`20`20$`20omi$signal`20myfacil`20showday,'var X Xwill`20display`20the`20message: X`20`20%MYFACIL-I-SHOWDAY,`20today`20is`20a`20TUESDAY X XFor`20more`20information,`20please`20refer`20to`20the`20printed`20documentatio Vn. $ call unpack [.OMI-V2_3]OMI$MANAGE.OMH;1 - 1163725005 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 6 25 41 $! $ create 'f' X$`09gosub`20'p1'$ X$`09exit`20$status X X X$`20message$: X$! X$`09if`20p2`20.eqs.`20"REPAIR"`20then`20$`20goto`20msg$_repair X$`09if`20p2`20.eqs.`20"CREATE"`20then`20$`20goto`20msg$_create X$! X$`09omi$check`20msg_facil`20"%OMI-W-NOFACIL,`20facility`20not`20specified" X$`09if`20$status`20.eq.`20omi$_warning`20then`20$`20return\1B0D X$! X$`09omi$check`20msg_sever`20"%OMI-W-NOSEVER,`20severity`20not`20specified" X$`09if`20$status`20.eq.`20omi$_warning`20then`20$`20return\1B0D X$! X$`09omi$check`20msg_ident`20"%OMI-W-NOIDENT,`20identification`20not`20specifie Vd" X$`09if`20$status`20.eq.`20omi$_warning`20then`20$`20return\1B0D X$! X$`09omi$check`20msg_text`20`20"%OMI-W-NOTEXT,`20text`20not`20specified" X$`09if`20$status`20.eq.`20omi$_warning`20then`20$`20return\1B0D X$! X$`09msg_sever`20=`20f$extract(0,`201,`20\1C09) X$`09msg_ident`20=`20f$fao("!15",`20\1F09) X$! X$`09open`20/read`20/write`20/share=read`20omi$msg`20Omi$:'msg_facil'$messages. Vdat`20- X`09`20`20`20/error=msg$error_file X$`09write`20/error=msg$error_key`20omi$msg`20"''msg_ident'''msg_sever'`20\1906 Vtext'" X$`09close`20omi$msg X$`09omi$signal`20omi`20addmsg X$`09return X$! X$`20msg$error_file: X$! X$`09omi$signal`20omi`20nomsgfile,msg_facil X$`09return`20omi$_warning X$! X$`20msg$error_key: X$! X$`09close`20omi$msg X$`09omi$signal`20omi`20duplident,'f$edit(msg_\1206"collapse") X$`09return`20omi$_warning X$! X$! X$!==>`09If`20the`20file`20organisation`20o\1906Message`20data-\2706is`20corrup Vted, X$!`09this`20routine`20can`20be`20called`20from`20the`20Omi`20Management`20menu V`20to X$!`09repair`20it. X$! X$`20msg$_repair: X$! X$`09omi$check`20msg_facil`20"%OMI-W-NOFACIL,`20facility`20not`20specified" X$`09if`20$status`20.eq.`20omi$_warning`20then`20$`20return\1B0D X$! X$`09if`20f$search("Omi$:''msg_facil'$messages.dat")`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20nomsgfile,msg_facil X$`09`09return`20omi$_warning X$`09endif X$! X$`09msg$_command`20=`20"convert`20Omi$:''msg_facil'$messages.da\1F1Ft" X$`09gosub`20msg$_fdl X$`09purge`20/nolog`20/noconfirm`20/keep=1`20Omi$:'msg_facil'$messages.dat X$`09omi$signal`20omi`20msgrep,msg_facil X$`09return X$! X$`20msg$_create: X$! X$`09omi$check`20msg_facil`20"%OMI-W-NOFACIL,`20facility`20not`20specified" X$`09if`20$status`20.eq.`20omi$_warning`20then`20$`20return\1B0D X$! X$`09if`20f$search("Omi$:''msg_facil'$messages.dat")`20.nes.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20exmsgfile,msg_facil X$`09`09return`20omi$_warning X$`09endif X$! X$`09msg$_command`20=`20"create`20Omi$:''msg_facil'$messages.dat" X$`09gosub`20msg$_fdl X$`09purge`20/nolog`20/noconfirm`20/keep=1`20Omi$:'msg_facil'$messages.dat X$`09omi$signal`20omi`20cremsgfil,msg_facil X$`09return X X X X X X X X$`20msg$_fdl: X$! X$`09'msg$_command'`20/fdl=sys$input XTITLE`09"Omi$Messages" X XIDENT`09"`204-JUL-1997`2014:09:56`20`20OpenVMS`20FDL`20Editor" X XSYSTEM X`09SOURCE`09`09`09"OpenVMS" X XFILE X`09NAME`09`09`09"OMI`20Message`20File`20Definition" X`09ORGANIZATION`09`09indexed X XRECORD X`09CARRIAGE_CONTROL`09carriage_return X`09FORMAT`09`09`09variable X`09SIZE`09`09`09132 X XAREA`200 X`09ALLOCATION`09`09321 X`09BEST_TRY_CONTIGUOUS`09yes X`09BUCKET_SIZE`09`096 X`09EXTENSION`09`0984 X XAREA`201 X`09ALLOCATION`09`0918 X`09BEST_TRY_CONTIGUOUS`09yes X`09BUCKET_SIZE`09`096 X`09EXTENSION`09`096 X XKEY`200 X`09CHANGES`09`09`09no X`09DATA_AREA`09`090 X`09DATA_FILL`09`09100 X`09DATA_KEY_COMPRESSION`09yes X`09DATA_RECORD_COMPRESSION`09yes X`09DUPLICATES`09`09no X`09INDEX_AREA`09`091 X`09INDEX_COMPRESSION`09no X`09INDEX_FILL`09`09100 X`09LEVEL1_INDEX_AREA`091 X`09NAME`09`09`09"Identification" X`09PROLOG`09`09`093 X`09SEG0_LENGTH`09`0915 X`09SEG0_POSITION`09`090 X`09TYPE`09`09`09string X$! X$`09return $ call unpack [.OMI-V2_3]OMI$MANAGE.OMI;1 - 1495290401 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 7 26 41 $! $ create 'f' X`5Bmain`5D X`20`20empty_value`20=`20..... X`20`20silent_output`20=`20NLA0: X`20`20editor`20=`20edit X`20`20printer`20=`20sys$print X`20`20time_format`20=`2012 X`20`20float_point`20=`20. X X`5Bscreen`5D X`20`20width_margin&0220=`204 X`20`20height_margin`20=`201 X`20`20width&0220&0220&0420`20=`2080 X`20`20height&0220&0220&0420=`2024 X`20`20exit_width&0220&0220=`2080 X`20`20window_topmargin`20=`201 X`20`20scroll_region`20=`20enabled X`20`20scrollregion_autodisable`20=`20y X`20`20separate_inputs`20=`20true X`20`20display_names&0220`20=`20false X`20`20tab`20=`2015 X X`5Bquestions`5D X`20`20all_inputs`20=`20All`20Inputs X`20`20option`20=`20OMI> X`20`20reverse_tags`20=`20R\0F06`20selection X`20`20input&0220=`20Enter`20Value X`20`20dcl_command`20=`20DCL`20C\0E06 X`20`20default_input`20=`20Input X`20`20wait_prompt`20=`20Press`20`20to`20continue X`20`20confirm`20=`20true X`20`20answer_yes`20=`20Y X`20`20answer_no`20=`20N X X`5Bbgrprocess`5D X`20`20batch_queue`20=`20sys$batch X`20`20detach_lgicmd`20=`20sys$login:login.com X`20`20logfile X`20`20options_bat X`20`20options_det $ call unpack [.OMI-V2_3]OMI$MENU.CFG;1 - 1729960829 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 2 27 41 $! $ create 'f' X$`09if`20f$type(omi$_debug)`20.eqs.`20""`20then`20$`20\1C0A`20=`200 X$`09if`20.not.`20omi$_debug`20then`20$\1206verify`20=`20f$\0B06(0) X$`09on`20control_y`20then`20$`20goto`20main$_interrupt X$`09on`20error`20then`20$`20goto`20main$_fatal X$`09on`20severe_error`20then`20$`20goto`20main$_fatal X$`09goto`20main$_start X$! X$!********\0808\1010\2020\400E X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20FILENAME:&0220&0220&0420\0808\1010\2020`20* X$!*`20`20=========&0220&0220&0420\0808\1010\2020`20* X$!*`20`20&0220`20Omi$Menu.Com&0520&0220Oscar's`20Menu`20Interface\1D07\2407 V\0E0E&0220* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20********\0808\1010\2020\400A`20* X$!*`20*`20`20&0220&0420\0808\1010\2020\4008*`20* X$!*`20*`20`A91997`20-`202004,`20Oscar`20van`20Eijk`20-`20Oveas`20Funtionality V`20Provider`20`20&0220&0420&0520*`20* X$!*`20*`20`20`20This`20tool`20is`20delivered`20as`20is,`20and`20has`20no`20war Vranties`20whatsoever.&0320&0320*`20* X$!*`20*`20`20`20It`20may`20be`20freely`20distributed`20as`20long`20as`20the`20 V\1B09ion`20set`20is&0320&0320*`20* X$!*`20*`20`20`20complete.`20It`20is`20not`20allowed`20to`20change`20any`20of V`20the`20files,`20without`20&0320&0220*`20* X$!*`20*`20`20`20permission`20of`20the`20author.&0320&0320\0606\0C0C\1814*`20* V X$!*`20*`20`20&0220&0420\0808\1010\2020\4008*`20* X$!*`20********\0808\1010\2020\400A`20* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20DESCRIPTION:&0220&0220&0420\0808\1010\201E* X$!*`20`20============&0220&0220&0420\0808\1010\201E* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220&0220Oscar's`20Menu`20Interface`20is`20a`20DCL`20procedure`20tha Vt`20reads`20menu`20files`20and&0320* X$!*`20`20&0220&0220represents`20the`20menu`20structure`20on`20a`20ChUI`20based V`20window.\3B06\4106&0520* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220&0220OMI`20does`20not`20perform`20any`20actions`20on`20its`20own V.`20Additional`20procedures`20&0320* X$!*`20`20&0220&0220are`20required`20to`20handle`20upon`20the`20users`20input. V`20OMI`20is`20strictly`20created`20`20* X$!*`20`20&0220&0220to`20create`20a`20standard`20user`20interface`20for`20all V`20kinds`20of`20actions,`20with`20a`20`20* X$!*`20`20&0220&0220clear`20structure,`20support`20for`20different`20security V`20levels`20and`20password`20&0220* X$!*`20`20&0220&0220protection.\1106\1706\0C0C\1818\300B* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220&0220The`20additional`20procedures`20that`20are`20required`20for V`20any`20actions`20are`20\4606* X$!*`20`20&0220&0220referred`20to`20'callable`20jobs'.`20A`20section`20in`20the V`20help`20file`20describes&0520* X$!*`20`20&0220&0220how`20several`20commands,`20defined`20in`20OMI,`20can`20be V`20used`20to`20create`20such\4606* X$!*`20`20&0220&0220procedures.\1106\1706\0C0C\1818\300B* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20FILES`20NEEDED:&0220&0220&0420\0808\1010\201D* X$!*`20`20=============&0220&0220&0420\0808\1010\201D* X$!*`20`20&0220`20OMI$Config.COM&0520&0320The`20procedure`20that`20sets`20up`20 Vthe`20configuration&0520* X$!*`20`20&0220&0420\0808\100Band`20the`20menu`20environments`20by`20reading`20 Vthe`20files`20&0220* X$!*`20`20&0220&0420\0808\100Band`20defining`20global`20symbols.`20On`20exit, V`20this\4507* X$!*`20`20&0220&0420\0808\100Bprocedure`20also`20cleans`20up`20all`20symbols. V\400C* X$!*`20`20&0220`20OMI$Screen.COM&0520&0320All`20screen`20related`20material`20i Vs`20handled`20by`20this`20&0220* X$!*`20`20&0220&0420\0808\100Bprocedure.`20The`20window`20and`20layout`20that's V`20defined,`20* X$!*`20`20&0220&0420\0808\100Bis`20based`20upon`20the`20settings`20by`20Omi$Con Vfig.Com.&0420* X$!*`20`20&0220`20OMI$Edit_Cmd.COM&0520`20This`20module,`20introduced`20in`20v1 V.3,`20handles`20all&0520* X$!*`20`20&0220&0420\0808\100BEDIT`20commands.\291B\4408* X$!*`20`20&0220`20OMI$Calculator.COM&0420This`20module,`20introduced`20in`20v2. V0,`20handles`20all&0520* X$!*`20`20&0220&0420\0808\100Bcalculations.\281B\4309* X$!*`20`20&0220`20OMI$ToolBox.COM&0520&0220A`20set`20of`20routines`20that`20wil Vl`20are`20called`20by`20OMI,&0320* X$!*`20`20&0220&0420\0808\100Bbut`20which`20are`20also`20available`20for`20OMI V`20modules.&0420* X$!*`20`20&0220&0420\0808\100BMost`20OMI`20commands`20call`20routines`20from`20 Vthis`20\4507* X$!*`20`20&0220&0420\0808\100Bprocedure.\251B\400C* X$!*`20`20&0220`20OMI$ToolBox.Ini&0520&0220Initialisation`20file`20for`20the`20 V\2E08`20All\2F07&0220* X$!*`20`20&0220&0420\0808\100Bthat`20are`20available`20via`20the`20ToolBox`20sh Vould`20be`20&0420* X$!*`20`20&0220&0420\0808\100Badded`20here.`20This`20file`20can`20also`20define V`20additional`20* X$!*`20`20&0220&0420\0808\100BToolBox`20files.\291B\4408* X$!*`20`20&0220`20OMI$Library.OML&0520&0220A`20standard`20l\1D06`20with`20some V`20useful`20select`20lists`20* X$!*`20`20&0220&0420\0808\100Bthat`20can`20be`20included`20with`20the`20#INCLUD VE`20directive.* X$!*`20`20&0220`20OMI$Menu.CFG&0520&0520This`20is`20the`20configuration`20file V`20in`20which&0220the`20&0420* X$!*`20`20&0220&0420\0808\100Blayout`20can`20be`20defined,`20and`20many`20optio Vn`20of`20the`20&0320* X$!*`20`20&0220&0420\0808\100Bbehaviour`20can`20be`20changed.`20It`20should`20b Ve`20located`20in* X$!*`20`20&0220&0420\0808\100BSYS$LOGIN`20of`20the`20current`20user.`20If`20not V`20there,&0520* X$!*`20`20&0220&0420\0808\100Bthe`20procedure`20looks`20for`20the`20`20file`20i Vn`20OMI$.\4507* X$!*`20`20&0220&0420\0808\100BIf`20the`20logical`20OMI$CONFIG`20is`20defined, V`20this`20over-`20* X$!*`20`20&0220&0420\0808\100Bwrites`20all`20other`20files.\321A* X$!*`20`20&0220`20OMI$Messages.DAT&0520`20This`20file`20contains`20all`20m\2907 V`20that`20can`20be`20&0520* X$!*`20`20&0220&0420\0808\100Bsignalled`20by`20OMI.\2C1B&0520* X$!*`20`20&0220`20$Messages.DAT&0220These`20files`20can`20be`20created V`20for`20all`20facilities`20&0320* X$!*`20`20&0220&0420\0808\100Bthat`20have`20been`20created`20using`20OMI.\3C10* V X$!*`20`20&0220`20.MNU&0520&0520&0220One`20or`20more`20MNU`20files`20can V`20be`20created,`20containing`20* X$!*`20`20&0220&0420\0808\100Bthe`20menus.`20The`20procedure`20looks`20for`20th Ve`20MNU`20files`20* X$!*`20`20&0220&0420\0808\100Bin`20OMI$MENU_DIRECTORY,`20if`20set,`20and\2308 V\4507* X$!*`20`20&0220`20.OMH&0520&0520&0220Each`20menu`20file`20can`20have`20an V`20optional`20Help`20file,&0320* X$!*`20`20&0220&0420\0808\100Bwhich`20is`20read`20by`20the`20INFO`20command`20t Vo`20provide`20&0420* X$!*`20`20&0220&0420\0808\100Bmenu`20specific`20help.\2E1B&0320* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20LOGICALS`20NEEDED:&0220&0220&0420\0808\1010\201A* X$!*`20`20========\0808&0220&0220&0420\0808\1010\201A* X$!*`20`20&0220`20OMI$&0520&0520\0A08This`20logical`20points`20to`20the`20direc Vtory`20where`20this`20`20* X$!*`20`20&0220&0420\0808\100Bprocedure,`20and`20its`20sub\1609s,`20is`20locate Vd.&0420* X$!*`20`20&0220&0420\0808\100BIt's`20also`20part`20of`20the`20search-path`20for V`20the`20CFG&0420* X$!*`20`20&0220&0420\0808\100Bfile,`20and`20the`20MNU`20files.`20When`20not`20s Vet,`20it's`20done`20* X$!*`20`20&0220&0420\0808\100Bdynamically.\271B\420A* X$!*`20`20&0220`20OMI$MENU_DIRECTORY&0420If`20set,`20this`20points`20to`20the V`20default`20directory&0520* X$!*`20`20&0220&0420\0808\100Bwhere`20all`20menu`20files`20are`20stored.\3B11* V X$!*`20`20&0220`20OMI$CONFIG&0520&0520&0220This`20logical`20can`20point`20to`20 Vthe`20configuration`20file.* X$!*`20`20&0220&0420\0808\100BWhen`20it's`20not`20set,`20OMI`20looks`20for`20th Ve`20file`20\4507* X$!*`20`20&0220&0420\0808\100BOmi$Menu.Cfg`20in`20SYS$LOGIN`20first,`20then`20i Vn`20OMI$&0420* X$!*`20`20&0220`20OMI$STARTMENU&0520&0420If`20defined,`20this`20is`20the`20menu V`20file`20with`20which`20the`20* X$!*`20`20&0220&0420\0808\100Bprocedure`20starts.\2C1B&0520* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20PARAMETERS`20NEEDED:&0220&0220&0420\0808\1010\2018* X$!*`20`20========\0808==&0220&0220&0420\0808\1010\2018* X$!*`20`20&0220`20P1&0520&0520\0A0AIf`20this`20parameter`20is`20specified,`20it V`20should`20point`20`20* X$!*`20`20&0220&0420\0808\100Bto`20the`20menu`20file`20to`20start`20with.\3A12* V X$!*`20`20&0220`20P2`20-`20P3&0520&0520&0520If`20specified,`20P2`20contains`20t Vhe`20name`20of`20the`20menu&0320* X$!*`20`20&0220&0420\0808\100Bwhich`20will`20be`20started`20first,`20and`20P3 V`20selects`20an&0320* X$!*`20`20&0220&0420\0808\100Boption`20in`20the`20specified`20menu.\3814* X$!*`20`20&0220&0420\0808\100BIf`20the`20parameters`20are`20used,`20P1`20is`20r Vequired.\4606* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20HISTORY:&0220&0220&0420\0808\1010\2020&0220* X$!*`20`20========&0220&0220&0420\0808\1010\2020&0220* X$!*`20`20&0220`20(For`20descriptions,`20refer`20to`20HISTORY.TXT)&0520&0520 V\0A0A\140B* X$!*`20`20&0220`20Version:&0220Date:&0220&0520Author\0E08\1507\0E0E\1C0E* X$!*`20`20&0220`20--------\0A07&0520\1609\0E07\1507\0E0E\1C0E* X$!*`20`20&0220`200.0&0520&022011-03-1997&0220Oscar`20van`20Eijk,`20OVEAS\2807 V\2F07\0E0E* X$!*`20`20&0220`201.0b1\0A064-03-1997&0220Oscar`20van`20Eijk,`20OVEAS&0520&0520 V\0A0A\1408* X$!*`20`20&0220`201.0b2\0A065-04-1997&0220Oscar`20van`20Eijk,`20OVEAS&0520&0520 V\0A0A\1408* X$!*`20`20&0220`201.0b3&052009-05-1997&0220Oscar`20van`20Eijk,`20OVEAS&0520 V&0520\0A0A\1408* X$!*`20`20&0220`201.0b4\0A063-05-1997&0220Oscar`20van`20Eijk,`20OVEAS&0520&0520 V\0A0A\1408* X$!*`20`20&0220`201.0&0520&022030-05-1997&0220Oscar`20van`20Eijk,`20OVEAS\2807 V\2F07\0E0E* X$!*`20`20&0220`201.1&0520&022021-06-1997&0220Oscar`20van`20Eijk,`20OVEAS\2807 V\2F07\0E0E* X$!*`20`20&0220`201.2&0520&022010-09-1997&0220Oscar`20van`20Eijk,`20OVEAS\2807 V\2F07\0E0E* X$!*`20`20&0220`201.3&0520&022019-11-1997&0220Oscar`20van`20Eijk,`20OVEAS\2807 V\2F07\0E0E* X$!*`20`20&0220`201.4&0520&022019-02-1998&0220Oscar`20van`20Eijk,`20OVEAS\2807 V\2F07\0E0E* X$!*`20`20&0220`201.41&0520`2001-05-1998&0220Oscar`20van`20Eijk,`20OVEAS\2706 V\2D06\0C0C&0420* X$!*`20`20&0220`202.0b1&052010-11-1998&0220Oscar`20van`20Eijk,`20OVEAS&0520 V&0520\0A0A\1408* X$!*`20`20&0220`202.0&0520&022022-06-1999&0220Oscar`20van`20Eijk,`20OVEAS\2807 V\2F07\0E0E* X$!*`20`20&0220`202.1&0520&022025-08-2001&0220Oscar`20van`20Eijk,`20OVEAS\2807 V\2F07\0E0E* X$!*`20`20&0220`202.2&0520&022029-08-2002&0220Oscar`20van`20Eijk,`20OVEAS\2807 V\2F07\0E0E* X$!*`20`20&0220&0420\0808\100BWith`20thanks`20to`20Edward`20Vlak,`20EDS\3A12* X$!*`20`20&0220`202.3&0520&022025-06-2004&0220Oscar`20van`20Eijk,`20OVEAS\2807 V\2F07\0E0E* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09These`20initials`20settings`20setup`20the`20menu`20environment`20by`20 Vcalling`20all X$!`09proper`20subroutines`20and`20-procedures. X$!`09The`20first`20menu`20will`20allways`20be`20called`20'menu'. X$! X$`20main$_start: X$! X$`09omi$option`20=`20"" X$`09if`20f$type(omi$current_menu)`20.nes."" X$`09`20`20`20then X$`09`09if`20f$edit(omi$current_menu,`20"upcase")`20.eqs.`20"OTF_MENU" X$`09`09`20`20`20then&0320&0220 X$`09`09`09'omi$current_menu'$previous`20=`20"" X$`09`09`09omi$otf_menu`20=`201 X$`09`09`09init_def$search_string`20=`20"otf_menu$input" X$`09`09`09gosub`20main$default_values X$`09`09endif X$`09`09goto`20main$do_menu`20`20`20!`20Buggy`20???? X$`09`20`20`20else`20$`20omi$otf_menu`20=`200 X$`09endif X$! X$`09omi$_control`20=`20f$environment("\1907") X$`09omi$_message`20=`20f$environment("\1907") X$`09gosub`20main$_parse_options X$`09if`20f$type(omi$validate_mode)`20.eqs.`20"" X$`09`20`20`20then`20$`20omi$validate_mode`20=`200 X$`09`20`20`20else`20$`20omi$batch_mode`20=`201 X$`09endif X$`09if`20f$type(omi$backgr_mode)`20.eqs.`20""`20then`20$`20\210F`20=`200 X$`09if`20f$type(omi$batch_mode)`20.eqs.`20""`20then`20$`20\200E`20=`200 X$`09if`20omi$batch_mode X$`09`20`20`20then X$`09`09ws`20:=`20"!" X$`09`09cls`20:=`20"!" X$`09`20`20`20else X$`09`09ws`20:=`20"write`20sys$output" X$`09`09cls`20:=`20"type/page`20nla0:" X$`09endif X$`09omi$version`20=`20"2.3" X$`09if`20f$trnlnm("omi$menu_directory")`20.eqs.`20""`20then`20- X`09`20`20`20$`20define`20/nolog`20omi$menu_directory`20omi$ X$`09gosub`20main$_initialize X$`09gosub`20main$_getstart X$`09if`20omi$backgr_mode X$`09`20`20`20then X$`09`09omi$_jumping`20=`201 X$`09`09options$_menuname`20`20=`20"main" X$`09`09options$_jumps`20`20=`20"Exit" X$`09`09omi$menu_file`20=`20"Omi$:Omi$Background_Module.Mnu" X$`09`09omi$background_module`20=`20"''omi$startmenu'" X$`09`20`20`20else`20$`20omi$menu_file`20=`20"''omi$startmenu'" X$`09endif X$! X$`20main$_startmenu: X$! X$`09omi$signal`20omi`20init X$`09omi$config`20'omi$menu_file X$`09omi$status`20=`20\0A07 X$`09omi$cmdline_clear X$`09if`20omi$status`20.eq.`20omi$_warning X$`09`20`20`20then X$! X$`09`20main$_askfor_start: X$! X$`09`09read`20/end_of_file=main$_exit`20sys$command`20omi$startmenu`20- X`09`09`20`20`20/prompt="''screen$\1106_position'Menu`20file:`20"`20 X$`09`09omi$cmdline_clear X$`09`09omi$msgline_clear X$`09`09omi$variable`20=`20"omi$startmenu" X$`09`09omi$input_validate X$`09`09if`20$status`20.ge.`20omi$_warning X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20tranerr X$`09`09`09goto`20main$_askfor_start X$`09`09endif X$`09`09omi$menu_file`20=`20"''omi$startmenu'" X$`09`09goto`20main$_startmenu X$`09endif X$`09if`20omi$status`20.eq.`20omi$_error`20then`20$`20goto`20main$_fatal X$`09omi$current_menu`20=`20"menu" X$`09'omi$current_menu'$previous`20=`20"" X$`09init_def$search_string`20=`20"$input" X$`09omi$setting_defaults`20=`201 X$`09gosub`20main$default_values X$`09deletee`20/symbol`20/local`20omi$setting_defaults X$`09gosub`20main$check_security X$`09if`20'omi$current_menu'$security_level`20.lt.`200 X$`09`20`20`20then X$`09`09if`20'omi$current_menu'$security_level`20.eq.`20-1`20then`20- X`09`09`20`20`20$`20omi$signal`20omi`20ivpwd X$`09`09goto`20main$_interrupt X$`09endif X$`09if`20'omi$current_menu'$security_level`20.eq.`200 X$`09`20`20`20then X$`09`09omi$signal`20omi`20nomnuauth X$`09`09goto`20main$_interrupt X$`09endif X$! X$`09if`20omi$validate_mode X$`09`20`20`20then X$`09`09if`20'omi$current_menu'$security_level`20.lt.`203 X$`09`09`20`20`20then`20$`20omi$signal`20omi`20nopriv X$`09`09`20`20`20else`20$`20omi$config`20'omi$menu_file`20validate X$`09`09endif X$`09`09goto`20main$_exit X$`09endif X$! X$`09omi$msgline_clear X$! X$`09omi$signal`20omi`20info X$`09if`20options$_menuname`20.nes.`20"" X$`09`20`20`20then X$`09`09omi$_jumping`20=`201 X$`09`09omi$_p1`20=`20options$_menuname X$`09`09jump$_norefresh`20=`201 X$`09`09gosub`20main$execcmd_jump X$`09`20`20`20else`20$`20omi$_jumping`20=`200 X$`09endif X$`09options$_jumpcounter`20=`200 X$`09goto`20main$do_menu X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09We've`20found`20and`20initialized`20a`20menu.`20Display`20it,`20and`20 Vstart`20prompting X$!`09the`20user`20to`20navigate`20through`20the`20options. X$! X$`20main$do_menu: X$! X$`09if`20f$type('omi$current_menu'$on_init)`20.nes.`20""`20.and.`20perf$init_e Vxit X$`09`20`20`20then X$`09`09omi$init_job`20=`20f$element(0,`20"`20",`20'omi$current_menu'$on_init) V X$`09`09_params`20=`20'omi$current_menu'$on_init`20-`20omi$init_job X$`20`20!!!`09`09omi$init_job&0220=`20f$parse(\180C,".OMI",`20- X`20`20`20!!!`09`09&0320"OMI$Menu_Directory:",,"syntax_only") X$`20`20`09`09if`20.not.`20omi$_debug`20then`20- X`09`09`20`20`20$`20set`20message`20/nofacility`20/nosever\0C07identification V`20/notext X$`20`20!!!`09`09@'omi$init_job`20'_params' X$`20`20`09`09omi$call`20'omi$init_job`20'_params' X$`09`09if`20$status`20.eq.`20omi$_warning X$`09`09`20`20`20then X$`09`09`09perf$init_exit`20=`200 X$`09`09`09set`20message`20'omi$_\0E07 X$`09`09`09goto`20option$cancel_input X$`09`09endif X$`09`09set`20message`20'omi$_\0E07 X$`09endif X$`09omi$screen`20menu X$! X$`20main$get_option: X$! X$`09'omi$current_menu'$highest_item`20=`20inputs\160D X$`09perf$init_exit`20=`201 X$`09if`20(f$type('omi$current_menu'$prompt)`20.eqs.`20""`20.and.`20- X`09`20`20`20f$type(menu$prompt)`20.eqs.`20"")`20.or.`20main$protect_\2406 X$`09`20`20`20then`20$`20_current_prompt`20=`20questions$option X$`09`20`20`20else X$`09`09if`20f$type('omi$current_menu'$prompt)`20.eqs.`20"" X$`09`09`20`20`20then`20$`20_current_prompt`20=`20menu$\0E06 X$`09`09`20`20`20else`20$`20_current_prompt`20=`20'omi$\1608menu'$\1C06 X$`09`09endif X$`09endif X$! X$`09omi$prompt_timeout`20=`20"/notime_out" X$`09if`20f$type('omi$current_menu'$auto_refresh)`20.nes.`20"" X$`09`20`20`20then X$`09`09_timeout`20=`20'omi$current_menu'$auto_refresh X$`09`09if`20_timeout`20.gt.`200`20.and\150Ble.`20255 X$`09`09`20`20`20then X$`09`09`09omi$prompt_timeout`20=`20"/time_out=''\1808'" X$`09`09`09omi$prompt_timeout`20=`20\1513+`20- X`09`09`09`20`20`20"/error=main$do_menu" X$`09`09endif X$`09endif X$! X$`09if`20omi$_jumping X$`09`20`20`20then X$`09`09omi$option`20=`20f$element(\1306s$_jumpcounter,",",\190Ds) X$`09`09if`20omi$option`20.eqs.`20""`20.or.`20\1912," X$`09`09`20`20`20then X$`09`09`09read`20/end_of_file=option$cancel_input`20'omi$prompt_timeout'`20- X`09`09`09`20`20`20/prompt="''screen$\1106_position'''_current_prompt'`20"`20- V X`09`09`09`20`20`20sys$command`20omi$option X$`09`09`09if`20f$type(jump$_norefresh)`20.nes.`20""`20then`20- X`09`09`09`20`20`20$`20deletee`20/symbol`20/local`20jump$_norefresh X$`09`09`09omi$_jumping`20=`200 X$`09`09`20`20`20else`20$`20options$_jumpcounter`20=\1716+`201 X$`09`09endif X$`09`20`20`20else X$`09`09read`20/end_of_file=option$cancel_input`20'omi$prompt_timeout'`20- X`09`09`20`20`20/prompt="''screen$\1106_position'''_current_prompt'`20"`20- X`09`09`20`20`20sys$command`20omi$option X$`09endif X$`09omi$variable`20=`20"omi$option" X$`09omi$input_validate X$`09if`20$status`20.ge.`20omi$_warning X$`09`20`20`20then X$`09`09omi$signal`20omi`20tranerr X$`09`09omi$cmdline_clear X$`09`09goto`20main$get_option X$`09endif X$`09omi$cmdline_clear X$`09omi$msgline_clear X$`09if`20omi$option`20.eqs.`20""`20then`20$`20goto`20main$get_\2506 X$! X$`09if`20'omi$current_menu'$security_level`20.eq.`201 X$`09`20`20`20then X$`09`09omi$signal`20omi`20notauth X$`09`09goto`20main$get_option X$`09endif X$! X$`09if`20f$type(omi$option)`20.eqs.`20"INTEGER" X$`09`20`20`20then X$`09`09if`20omi$option`20.eq.`200`20then`20$`20goto`20option$cancel_input X$`09`09if`20f$type('omi$current_menu'$item'omi$option')`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09_input`20=`20omi$option`20-`20inputs$highest_item X$`09`09`09if`20f$type('omi$current_menu'$input'_\0706)`20.eqs.`20"" X$`09`09`09`20`20`20then X$`09`09&0209omi$signal`20omi`20invopt X$`09`09&0209goto`20main$get_option X$`09`09`09`20`20`20else X$`09`09&0209gosub`20main$askfor_input X$`09`09&0209goto`20main$get_option X$`09`09`09endif X$`09`09endif X$`09`09goto`20main$option_eval X$`09endif X$! X$`09omi$_command`20=`20f$edit(omi$option,`20"upcase") X$`09if`20f$extract(0,`201,`20f$edit(omi$_command,`20"trim"))`20.eqs`20"$"`20th Ven`20- X`09`20`20`20$`20omi$_command`20=`20"DCL`20"`20+`20(\190D-`20"$") X$`09gosub`20main$omi_command X$`20!`09if`20f$type(omi$previous_menu_file)`20.nes.`20"" X$`20!`09`20`20`20then X$`20!`09`09deletee/symbol/local`20omi$previous_menu_file X$`20!`09`09goto`20main$_startmenu X$`20!`09endif X$`09goto`20main$get_option X$! X$`20option$cancel_input: X$! X$`09gosub`20main$perf_onexit X$`09if`20$status`20.eq.`20omi$_warning`20then`20$`20goto`20main$get_option X$`09if`20omi$otf_menu`20then`20$`20goto`20main$otf_exit X$! X$`09if`20'omi$current_menu'$previous`20.eqs.`20"" X$`09`20`20`20then X$`09`09if`20f$type(omi$option)`20.eqs.`20"INTEGER"`20.and.`20\220A`20.eq.`200 V X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20toplevel X$`09`09`09goto`20main$get_option X$`09`09endif X$`09`09goto`20main$_exit X$`09endif X$! X$`09omi$current_menu`20=`20'\1410'$previous X$`09omi$cmdline_clear X$`09omi$msgline_clear X$`09goto`20main$do_menu X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Check`20to`20see`20if`20an`20On_Exit`20job`20is`20defined`20for`20this V`20menu.`20If`20so,`20 X$!`09execute`20if`20(if`20the`20\1308bit`20PERF$INIT_EXIT`20is`20set`20to`20tr Vue) X$!`09and`20return`20the`20status.`20If`20there`20was`20an`20error`20or`20warni Vng,`20set`20the X$!`09execute`20bit`20to`20false,`20to`20make`20sure`20the`20INIT`20procedure V`20is`20not X$!`09executed`20again. X$! X$`20main$perf_onexit: X$! X$`09_status`20=`20omi$_ok X$`09if`20f$type('omi$current_menu'$on_exit)`20.nes.`20""`20.and.`20perf$init_e Vxit X$`09`20`20`20then X$`09`09if`20f$extract(0,1,f$edit('omi$current_menu'$on_exit,"collapse"))`20.eq Vs.`20":" X$`09`09`20`20`20then X$`09`09`09omi$_command`20=`20f$edit('omi$current_menu'$on_exit`20-`20":",`20"t Vrim,compress,upcase") X$`09`09`09gosub`20main$omi_command X$`09`09`09_status`20=`20$\0A06 X$`09`09`09goto`20main$perfd_onexit X$`09`09endif X$`09`09omi$exit_job`20=`20f$element(0,`20"`20",`20'omi$current_menu'$on_exit) V X$`09`09_params`20=`20'omi$current_menu'$on_exit`20-`20omi$exit_job X$`20!!!`20`09`09omi$exit_job`20`20=`20f$parse(\180C,".OMI",`20- X`20`20!!!`20`09`09&0220`20"OMI$Menu_Directory:",,"syntax_only") X$`20!!!`09`09if`20f$locate(".",omi$exit_job)`20.eq.`20f$length(\1C0E- X`20`20!!!`09`09&0220`20then`20$`20omi$exit_job`20=\0F0E+`20".OMI" X$`09`09if`20.not.`20omi$_debug`20then`20- X`09`09`20`20`20$`20set`20message`20/nofacility`20/nosever\0C07identification V`20/notext X$`20!!!`09`09@'omi$exit_job`20'_params' X$`09`09omi$call`20'omi$exit_job`20'_params' X$`09`09_status`20=`20$\0A06 X$`09`09set`20message`20'omi$_\0E07 X$`09endif X$! X$`20`20main$perfd_onexit: X$! X$`09perf$init_exit`20=`200 X$`09return`20_status X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09If`20the`20current`20menu`20contains`20input`20options,`20this`20routi Vne`20asks`20the X$!`09user`20for`20input. X$! X$`20main$askfor_input: X$! X$`09if`20f$type('omi$current_menu'$required_order)`20.nes.`20"" X$`09`20`20`20then X$`09`09gosub`20input$validate_req_order X$`09`09if`20$status`20.ne.`20omi$_ok`20then`20$`20return`20$\2306 X$`09endif X$! X$`09_all_inputs`20=`200 X$`09_variable`20=`20f$element(1,"#",'omi$current_menu'$input'_\0706) X$! X$`09if`20f$extract(0,5,f$edit(_variable,"upcase"))`20.eqs.`20"`7BTAG`7C" X$`09`20`20`20then X$`09`09gosub`20main$_taglist X$`09`09return`20omi$_ok X$`09endif X$! X$`09_sel_list`20=`20(f$extract(0,1,_variable)`20.eqs.`20"`7B") X$! X$`09if`20_sel_list X$`09`20`20`20then X$`09`09_select_list`20=`20f$extract(0,`20f$locate("`7D",`20_variable)`20+`201 V\100C X$`09`09_variable`20=`20\0C0A-`20_select_list X$`09`09_select_list`20=`20f$edit(\160C,"upcase")`20-`20"`7BSEL`7C"`20-`20"`7D" V X$`09`09if`20f$type('_select_list'$filename)`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09_blockname`20=`20_select_list X$`09`09`09gosub`20input$_from_file X$`09`09`09if`20$status`20.ne.`20omi$_ok`20then`20$`20return`20$\2306 X$`09`09endif X$`09`09omi$screen`20select_list X$`09endif X$! X$`20input$_prompt: X$! X$`09if`20f$type(list$_scroll)`20.nes.`20""`20then`20- X`09`20`20`20$`20deletee`20/symbol`20/local`20list$_scroll X$! X$`09_format`20=`20f$element(3,`20"#",`20'omi$current_menu'$input'_\0706)`20 X$`09if`20_format`20.nes.`20""`20.and.`20\170F#" X$`09`20`20`20then X$`09`09if`20f$edit('_format'$type,`20"upcase")`20.eqs.`20"TEXTAREA"`20then`20- V X`09`09`20`20`20$`20goto`20input$dont_ask X$`09endif`20 X$! X$`09if`20omi$_jumping X$`09`20`20`20then X$`09`09'_variable'`20=`20f$element(options$_jumpcounter,",",\190Ds) X$`09`09if`20'_variable'`20.eqs.`20""`20.or.`20\1A13," X$`09`09`20`20`20then X$`09`09`09read`20/end_of_file=input$cancel_input`20/prompt="''screen$\1106_pos Vition'''questions$input':`20"`20sys$command`20'_variable' X$`09`09`09if`20f$type(jump$_norefresh)`20.nes.`20""`20then`20- X`09`09`09`20`20`20$`20deletee`20/symbol`20/local`20jump$_norefresh X$`09`09`09omi$_jumping`20=`200 X$`09`09`09omi$msgline_clear X$`09`09`20`20`20else`20$`20options$_jumpcounter`20=\1716+`201 X$`09`09endif X$`09`20`20`20else X$`09`09read`20/end_of_file=input$cancel_input`20/prompt="''screen$\1106_positi Von'''questions$input':`20"`20sys$command`20'_variable' X$`09`09omi$msgline_clear X$`09endif X$! X$`09omi$variable`20=`20"''_\0F08'" X$`09omi$input_validate X$`09if`20$status`20.ge.`20omi$_warning X$`09`20`20`20then X$`09`09omi$signal`20omi`20tranerr X$`09`09omi$cmdline_clear X$`09`09goto`20input$_prompt X$`09endif X$! X$`20input$dont_ask: X$! X$`09if`20_format`20.nes.`20""`20.and.`20\170F#" X$`09`20`20`20then X$`09`09gosub`20input$_format X$`09`09_status`20=`20$\0A06 X$`09`09omi$cmdline_clear X$`09`09if`20_status`20.eq.`20omi$_error`20then`20$`20return`20\2607 X$`09`09if`20_status`20.eq.`20omi$_warning X$`09`09`20`20`20then X$`09`09`09if`20f$type(jump$_norefresh)`20.nes.`20""`20then`20- X`09`09`09`20`20`20$`20deletee`20/symbol`20/local`20jump$_norefresh X$`09`09`09omi$_jumping`20=`200 X$`09`09`09goto`20input$_prompt X$`09`09endif X$`09`09if`20f$type('_variable')`20.eqs.`20""`20then`20$`20goto`20input$cancel_ Vinput X$`09endif X$`09if`20_sel_list X$`09`20`20`20then X$`09`09if`20f$edit(f$extract(0,`201,`20'_variable'),"upcase")`20.eqs.`20"N" X$`09`09`20`20`20then X$`09`09`09deletee`20/symbol`20/local`20'_variable' X$`09`09`09list$_scroll`20=`20"NEXT" X$`09`09`09omi$screen`20select_list X$`09`09`09omi$cmdline_clear X$`09`09`09goto`20input$_prompt X$`09`09endif X$`09`09if`20f$edit(f$extract(0,`201,`20'_variable'),"upcase")`20.eqs.`20"P" X$`09`09`20`20`20then X$`09`09`09deletee`20/symbol`20/local`20'_variable' X$`09`09`09list$_scroll`20=`20"PREVIOUS" X$`09`09`09omi$screen`20select_list X$`09`09`09omi$cmdline_clear X$`09`09`09goto`20input$_prompt X$`09`09endif X$`09`09_selected`20=`20'_variable' X$`09`09if`20f$type(_selected)`20.nes.`20"INTEGER" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20ivchoice X$`09`09`09omi$cmdline_clear X$`09`09`09if`20f$type(jump$_norefresh)`20.nes.`20""`20then`20- X`09`09`09`20`20`20$`20deletee`20/symbol`20/local`20jump$_norefresh X$`09`09`09if`20f$type('_variable')`20.nes.`20""`20then`20- X`09`09`09`20`20`20$`20'_variable'`20=`20"" X$`09`09`09omi$_jumping`20=`200 X$`09`09`09goto`20input$_prompt X$`09`09endif X$`09`09if`20f$type('_select_list'$value\1408ed')`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20ivchoice X$`09`09`09omi$cmdline_clear X$`09`09`09if`20f$type(jump$_norefresh)`20.nes.`20""`20then`20- X`09`09`09`20`20`20$`20deletee`20/symbol`20/local`20jump$_norefresh X$`09`09`09if`20f$type('_variable')`20.nes.`20""`20then`20- X`09`09`09`20`20`20$`20'_variable'`20=`20"" X$`09`09`09omi$_jumping`20=`200 X$`09`09`09goto`20input$_prompt X$`09`09endif X$`09`09'_variable'`20=`20'_select_list'$value'\1407ed' X$`09`09if`20f$extract(0,`201,`20'_variable')`20.eqs.`20"`7B" X$`09`09`20`20`20then X$`09`09`09_prompt`20=`20'_variable'`20-`20"`7B"`20-`20"`7D" X$! X$`09`09`20sellist$get_free_input: X$! X$`09`09`09omi$cmdline_clear X$`09`09`09read`20/end_of_file=input$cancel_input`20/prompt="''screen$\1106_pos Vition'''_prompt':`20"`20sys$command`20'_variable' X$`09`09`09omi$variable`20=`20"''_\0F08'" X$`09`09`09omi$input_validate X$`09`09`09if`20$status`20.ge.`20omi$_warning X$`09`09`09`20`20`20then X$`09`09&0209omi$signal`20omi`20tranerr X$`09`09&0209goto`20sellist$get_free_input X$`09`09`09endif X$`09`09endif X$`09`09if`20f$type(scroll$previous_page)`20.nes.`20""`20then`20- X`09`09`20`20`20$`20deletee/symbol/global`20scroll$previous_page X$`09`09if`20f$type(scroll$this_page)`20.nes.`20""`20then`20- X`09`09`20`20`20$`20deletee/symbol/global`20scroll$this_page X$`09`09if`20f$type(scroll$next_page)`20.nes.`20""`20then`20- X`09`09`20`20`20$`20deletee/symbol/global`20scroll$next_page X$`09`09if`20f$type(scroll$max_on_page)`20.nes.`20""`20then`20- X`09`09`20`20`20$`20deletee/symbol/global`20scroll$max_on_page X$`09`09omi$refresh X$`09endif X$`09_line`20=`20inputs$first\1406-`201`20+`20'_input' X$`09_value`20=`20'_variable' X$! X$`09_display_value`20=`20\0906 X$`09if`20f$locate("''CR$'",`20_display_value)`20.lt.`20f$length(\1E10then`20- V X`09`20`20`20$`20_display_value`20=`20f$extract(0,`20f$locate("''CR$'",`20\310E V),`20- X`09`20`20`20_display_value)`20+`20"''ESC$'(0d\0A08B" X$`09_blanks`20=`20inputs$max_size`20-`20f$length(_display_value)`20+`201 X$`09if`20f$length(_display_value)`20.le.`20inputs$max_size X$`09`20`20`20then`20$`20ws`20f$fao("''ESC$'`5B''_line';''inputs$value_location V'H''_display_value'!''_blanks'*`20") X$`09`20`20`20else`20$`20ws`20"''ESC$'`5B''_line';''inputs$value_location'H''f$ Vextract(0,\2507max_size,_display_value)''\5806(0`60\0A08B" X$`09endif X$! X$`09omi$cmdline_clear X$!`09omi$msgline_clear X$`09return`20omi$_ok X$! X$`20input$validate_req_order: X$! X$`09if`20f$locate(_input,`20'omi$current_menu'$required_order)`20.eq.`20- X`09`20`20`20f$length('omi$current_menu'$required_order)`20then`20$`20return`20 Vomi$_ok X$! X$`09if`20f$type('omi$current_menu'$reqwork_order)`20.eqs.`20""`20then`20- X`09`20`20`20$`20'omi$current_menu'$reqwork_order`20=`20- X`09`20`20`20f$edit('omi$current_menu'$required_order,`20"collapse") X$! X$`09_remember_work_order_list`20=`20'omi$current_menu'$req\280A`20!`20Reset`20 Von`20Ctrl/Z X$! X$!`20Added`20by`20Edward`20Vlak: X$`09if`20'omi$current_menu'$reqwork_order`20.eqs.`20""`20then`20$`20return`20o Vmi$_ok X$! X$`09if`20'omi$current_menu'$reqwork_order`20.eqs.`20_input X$`09`20`20`20then X$`09`09'omi$current_menu'$reqwork_order`20=`20"" X$`09`09return`20omi$_ok X$`09endif X$! X$`09if`20f$element(0,`20",",`20'omi$current_menu'$reqwork_order)`20.nes.`20_in Vput`20- X`09`20`20`20then`20$`20goto`20input$invalid_req_order X$`09'omi$current_menu'$reqwork_order`20=`20\2321-`20- X`09`20`20`20"''_input'"`20-`20"," X$`09return`20omi$_ok X$! X$`20input$invalid_req_order: X$! X$`09_cnt`20=`200 X$`09_msg_string`20=`20"" X$! X$`20inv_req_ord$_msg_string: X$! X$`09_opt_first`20=`20f$element`20(_cnt,`20",",`20'omi$current_menu'$reqwork_or Vder) X$`09if`20(_opt_first`20.eq.`20_input)`20.or.`20\1E0Fs.`20",")`20then`20$`20got Vo`20inv_req_ord$end_msg_string X$`09_opt_first`20=`20\0D0B+`20inputs$highest_item X$`09_msg_string`20=`20\0E0C+`20"''_opt_first'/" X$`09_cnt`20=`20_cnt`20+`201 X$`09goto`20inv_req_ord$_msg_string X$! X$`20inv_req_ord$end_msg_string: X$! X$`09_msg_string`20=`20f$extract(0,`20f$length(\240B)-1,`20\100C X$`09omi$signal`20omi`20ivorder,_msg_string X$`09return`20$status X$! X$`20input$cancel_input: X$! X$`09if`20f$type(_remember_work_order_list)`20.nes.`20"" X$`09`20`20`20then X$`09`09'omi$current_menu'$reqwork_order`20=`20_remember_\170A_list X$`09`09deletee`20/symbol`20/global`20_remember_work_order_list X$`09endif X$! X$`09if`20_sel_list X$`09`20`20`20then`20$`20omi$refresh X$`09`20`20`20else X$`09`09omi$cmdline_clear X$`09`09omi$msgline_clear X$`09endif X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09An`20input`20is`20selected`20that`20requires`20values`20to`20be`20read V`20from`20file. X$!`09This`20can`20be`20a`20TAG`20or`20SELECT`20list.`20The`20'filename'`20argu Vment`20in`20the`20list X$!`09block`20contains`20the`20filename`20that`20should\2208`20the`20values. X$! X$`20input$_from_file: X$! X$!***`20F$Parse`20translates`20to`20the`20first`20level`20of`20a`20search`20li Vst`20only`20:-( X$! X$!`09_values_file`20=`20f$parse('_blockname'$filename,"Omi$Menu_Directory:",". Vdat") X$`09_values_file`20=`20f$search('_blockname'$filename) X$`09if`20_values_file`20.eqs.`20""`20then`20- X`09`20`20`20$`20_values_file`20=`20f$search("Omi$Menu_Directory:"+'_blockname' V$filename) X$`09if`20_values_file`20.eqs.`20""`20then`20- X`09`20`20`20$`20_values_file`20=`20f$search("Omi$:"+'_blockname'$filename) X$`09if`20_values_file`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20novalfile,'_blockname'$filename X$`09`09return`20$status X$`09endif X$! X$`09open`20/read`20/share=write`20/error=valfile$_openerr`20\1107`20'_values_f Vile X$`09_value_cnt`20=`201 X$! X$`20valfile$_get_values: X$! X$`09read`20/end_of_file=valfile$end_get_values`20- X`09`20`20`20valfile`20'_blockname'$value'_value_cnt' X$`09_value_cnt`20=`20\0D0B+`201 X$`09goto`20valfile$_get_values X$! X$`20valfile$end_get_values: X$! X$`09close`20valfile X$! X$`20valfile$_clear_values: X$! X$!`20Cleanup`20symbols`20in`20case`20the`20file`20got`20shorter`20since`20last V`20call X$! X$`09if`20f$type('_select_list'$value'_value_cnt')`20.eqs.`20""`20then`20$`20re Vturn`20omi$_ok X$`09deletee`20/symbol`20/local`20'_select_list'$value'_value_cnt' X$`09_value_cnt`20=`20\0D0B+`201 X$`09goto`20valfile$_clear_values X$! X$`20valfile$_openerr: X$! X$`09if`20f$search(_values_file)`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20valopenerr,'_values_file X$`09`09return`20$status X$`09endif X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09The`204th`20argument`20of`20the`20input`20item`20in`20the`20menu`20fil Ve`20can`20specify`20a`20block X$!`09that`20will`20be`20called`20here`20for`20string`20formatting. X$!`09The`20string X$! X$`20input$_format: X$! X$`09if`20f$type('_format'$type)`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20nofrmtype,'_format' X$`09`09return`20omi$_error X$`09endif X$`09on`20warning`20then`20$`20goto`20input$invalid_format X$`09if`20.not.`20omi$_debug`20then`20- X`09`20`20`20$`20set`20message`20/nofacility`20/nosever\0C07identification`20/n Votext X$`09_req_format`20=`20f$edit('\1207'$type,"collapse,upcase") X$`09goto`20input$'_req_format'_\0806 X$! X$!********\0808\1010\2020\400E X$! X$!==>`09Validate`20the`20STRING`20type X$! X$`20input$string_format: X$! X$`09if`20f$type('_variable')`20.nes.`20"STRING"`20.and.`20- X`09`20`20`20f$type('_variable')`20.nes.`20"INTEGER"`20then`20- X`09`20`20`20$`20goto`20input$invalid_format X$! X$`09if`20f$type('_format'$upcase)`20.eqs.`20"" X$`09`20`20`20then`20$`20_upcase`20=`20"false" X$`09`20`20`20else X$`09`09if`20'_format'$upcase X$`09`09`20`20`20then`20$`20_upcase`20=`20"true" X$`09`09`20`20`20else`20$`20_upcase`20=`20"false" X$`09`09endif X$`09endif X$! X$`09if`20f$type('_format'$lowercase)`20.eqs.`20"" X$`09`20`20`20then`20$`20_lowercase`20=`20"false" X$`09`20`20`20else X$`09`09if`20'_format'$lowercase X$`09`09`20`20`20then`20$`20_lowercase`20=`20"true" X$`09`09`20`20`20else`20$`20_lowercase`20=`20"false" X$`09`09endif X$`09endif X$! X$!`09The`20"BLANKS"`20setting`20is`20pretty`20inconsequent;`20if`20set`20to`20 VTRUE, X$!`09blanks`20will`20be`20removed... X$!`09This`20one`20will`20remain`20in`20here`20for`20backwards`20compatibility, V`20but X$!`09the`20keyword`20will`20be`20replaced`20(and`20overwritten!!)`20by`20COLLA VPSE X$! X$`09if`20f$type('_format'$blanks)`20.eqs.`20"" X$`09`20`20`20then`20$`20_collapse`20=`20"false" X$`09`20`20`20else X$`09`09if`20'_format'$blanks X$`09`09`20`20`20then`20$`20_collapse`20=`20"true" X$`09`09`20`20`20else`20$`20_collapse`20=`20"false" X$`09`09endif X$`09endif X$! X$!`09COLLAPSE`20keyword`20replaces`20he`20BLANKS\1B08,`20OvE,`2020040315 X$! X$`09if`20f$type('_format'$collapse)`20.eqs.`20"" X$`09`20`20`20then X$`09`09!`20Only`20overwrite`20if`20the`20obsolete`20keyword`20BLANKS`20was`20n Vot`20used X$`09`09if`20f$type('_format'$blanks)`20.eqs.`20""`20then`20- X`09`09`09$`20_collapse`20=`20"false" X$`09`20`20`20else X$`09`09if`20'_format'$collapse X$`09`09`20`20`20then`20$`20_collapse`20=`20"true" X$`09`09`20`20`20else`20$`20_collapse`20=`20"false" X$`09`09endif X$`09endif X$! X$`09if`20_upcase`20`20&0220then`20$`20'_variable'`20=`20f$edit(\150B,"\3306") V X$`09if`20_lowercase`20then`20$`20'_variable'`20=`20f$edit(\150B,"\3309") X$`09if`20_collapse`20`20then`20$`20'_variable'`20=`20f$edit(\150B,"\3308") X$! X$`09if`20f$type('_format'$minlength)`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20f$length('_variable')`20.lt.`20f$integer('_format'$min\3006) X$`09`09`20`20`20then X$`09`09`09on`20warning`20then`20$`20continue X$`09`09`09set`20message`20'omi$_\0E07' X$`09`09`09omi$signal`20omi`20tooshort,'_format'$minlength X$`09`09`09return`20omi$_warning X$`09`09endif X$`09endif X$! X$`09if`20f$type('_format'$maxlength)`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20f$length('_variable')`20.gt.`20f$integer('_format'$max\3006) X$`09`09`20`20`20then X$`09`09`09on`20warning`20then`20$`20continue X$`09`09`09set`20message`20'omi$_\0E07' X$`09`09`09omi$signal`20omi`20toolong,'_format'$maxlength X$`09`09`09return`20omi$_warning X$`09`09endif X$`09endif X$! X$`09if`20f$type('_format'$alfanum)`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20'_format'$alfanum`20then`20-`20 X`09`09`20`20`20$`20'_format'$ivchars`20=`20"`60'`7E`5E!?@#$%`26*`20-+=()`7B`7D V`5B`5D<>:;,.`5C`7C/" X$`09endif X$`09if`20f$type('_format'$ivchars)`20.eqs.`20""`20then`20$`20goto`20input$end V\3007 X$! X$`09_char_c`20=`200 X$! X$`20format$stringchars: X$! X$`09_char`20=`20f$extract(_char_c,`201,`20'_format'$ivchars) X$`09if`20f$locate(_char,`20'_variable')`20.lt.`20f$length(\1B0C X$`09`20`20`20then X$`09`09on`20warning`20then`20$`20continue X$`09`09set`20message`20'omi$_\0E07' X$`09`09omi$signal`20omi`20ivchar,_char X$`09`09return`20omi$_warning X$`09endif X$! X$`09_char_c`20=`20\0A08+`201 X$`09if`20_char_c`20.lt.`20f$length('_format'$ivchars)`20then`20$`20goto`20form Vat$stringchars X$`09goto`20input$end_format X$! X$!********\0808\1010\2020\400E X$! X$!==>`09Validate`20the`20FILESPEC`20type X$! X$`20input$filespec_format: X$! X$`09if`20f$type('_variable')`20.nes.`20"STRING"`20then`20$`20goto`20input$inva Vlid_format X$! X$`09if`20f$type('_format'$wildcards)`20.eqs.`20"" X$`09`20`20`20then`20$`20_allow_wc`20=`20"false" X$`09`20`20`20else X$`09`09if`20'_format'$wildcards X$`09`09`20`20`20then`20$`20_allow_wc`20=`20"true" X$`09`09`20`20`20else`20$`20_allow_wc`20=`20"false" X$`09`09endif X$`09endif X$! X$`09if`20.not.`20_allow_wc`20.and.`20(f$locate("%",`20'_variable')`20.lt.`20- V X`09`20`20`20f$length('_variable')`20.or.`20f$locate("*",`20\200Elt.`20- X`09`20`20`20f$length('_variable')) X$`09`20`20`20then X$`09`09on`20warning`20then`20$`20continue X$`09`09set`20message`20'omi$_\0E07' X$`09`09omi$signal`20omi`20nowildcard X$`09`09return`20omi$_warning X$`09endif X$! X$`09'_variable'`20=`20f$edit(\150B,"upcase,collapse") X$! X$`09_storformsg`20=`20'_variable' X$`09_parse`20=`20"" X$`09if`20f$type('_format'$fdevice)`20.nes.`20"" X$`09`20`20`20then X$`09`09'_format'$fdevice`20=`20\1412-`20":" X$`09`09_parse`20=`20\0907+`20'_format'$fdevice`20+`20":" X$`09endif X$`09if`20f$type('_format'$fdirectory)`20.nes.`20"" X$`09`20`20`20then X$`09`09'_format'$fdirectory`20=`20\1715-`20"`5B"`20-`20"`5D" X$`09`09`20_parse`20=\0908`20+`20"`5B"`20+`20'_format'$fdirectory`20+`20"`5D" X$`09endif X$`09if`20f$type('_format'$ftype)`20.nes.`20"" X$`09`20`20`20then X$`09`09'_format'$ftype`20=`20\1210-`20"." X$`09`09_parse`20=`20\0907+`20"."`20+`20'_format'$ftype X$`09endif X$`09'_variable'`20=`20f$parse(\160B,"''_parse'") X$! X$`09if`20'_variable'`20.eqs.`20"" X$`09`20`20`20then X$`09`09on`20warning`20then`20$`20continue X$`09`09omi$signal`20omi`20ivfnam,'_storformsg' X$`09`09return`20omi$_warning X$`09endif X$! X$`09if`20f$type('_format'$required)`20.eqs.`20"" X$`09`20`20`20then`20$`20_existreq`20=`20"false" X$`09`20`20`20else X$`09`09if`20'_format'$required X$`09`09`20`20`20then`20$`20_existreq`20=`20"true" X$`09`09`20`20`20else`20$`20_existreq`20=`20"false" X$`09`09endif X$`09endif X$! X$`09if`20_existreq X$`09`20`20`20then X$`09`09_excheck`20=`20'_variable' X$`09`09if`20f$extract(f$length(_excheck)`20-`201,`201,`20\120A.eqs.`20"`5D"`20 V- X`09`09`20`20`20then`20$`20_excheck`20=\0B0A+`20"*.*" X$`09`09if`20f$search(_excheck)`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09on`20warning`20then`20$`20continue X$`09`09`09set`20message`20'omi$_\0E07' X$`09`09`09omi$signal`20omi`20fnf,'_variable' X$`09`09`09return`20omi$_warning X$`09`09endif X$`09endif X$`09goto`20input$end_format X$! X$!********\0808\1010\2020\400E X$! X$!==>`09Validate`20the`20INTEGER`20type X$! X$`20input$integer_format: X$! X$`09if`20f$type('_format'$float)`20.eqs.`20"" X$`09`20`20`20then X$`09`09_float`20=`200 X$`09`09_float_point`20=`20""`20!Added`20by`20Edward`20Vlak X$`09`20`20`20else X$`09`09_float`20=`20'_format'$float X$`09`09if`20f$type('_format'$float_point)`20.eqs.`20"" X$`09`09`20`20`20then`20$`20_float_point`20=`20main$\130B X$`09`09`20`20`20else`20$`20_float_point`20=`20'_format'$\180B X$`09`09endif X$`09endif X$! X$`09if`20_float X$`09`20`20`20then X$`09`09_whole`20=`20f$element(0,`20"''_float_point'",`20'_variable') X$`09`09_tmp`20=`20'_variable'`20-`20"''_float_point'" X$`09`20`20`20else X$`09`09_whole`20=`20'_variable' X$`09`09_tmp`20=`20'_variable' X$`09endif X$`09if`20f$type(_tmp)`20.nes.`20"INTEGER"`20then`20$`20goto`20input$invalid_fo Vrmat X$! X$`09if`20f$type('_format'$min)`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20_whole`20.lt.`20'_format'$min X$`09`09`20`20`20then X$`09`09`09on`20warning`20then`20$`20continue X$`09`09`09set`20message`20'omi$_\0E07' X$`09`09`09omi$signal`20omi`20lowval,'_format'$min X$`09`09`09return`20omi$_warning X$`09`09endif X$`09endif X$! X$`09if`20f$type('_format'$max)`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20_whole`20.gt.`20'_format'$max X$`09`09`20`20`20then X$`09`09`09on`20warning`20then`20$`20continue X$`09`09`09set`20message`20'omi$_\0E07' X$`09`09`09omi$signal`20omi`20hival,'_format'$max X$`09`09`09return`20omi$_warning X$`09`09endif X$`09endif X$! X$`09if`20_float`20.and.`20f$locate(\1606_point,`20'_variable')`20.eq.`20- X`09`20`20`20f$length('_variable')`20then`20- X`09`20`20`20$`20'_variable'`20=\0E0D+`20"''_float_point'0" X$! X$`09goto`20input$end_format X$! X$!********\0808\1010\2020\400E X$! X$!==>`09Validate`20the`20DATETIME`20type X$! X$`20input$datetime_format: X$! X$`09omi$signal`20omi`20notyet,_req_format X$`09goto`20input$end_format X$! X$!********\0808\1010\2020\400E X$! X$!==>`09Validate`20the`20TEXTAREA`20type X$! X$`20input$textarea_format: X$! X$`09on`20warning`20then`20$`20continue X$`09if`20f$type('_format'$filename)`20.nes.`20"" X$`09`20`20`20then`20$`20_ta_file`20=`20'_format'$filename X$`09`20`20`20else`20$`20_ta_file`20=`20"ta_''omi$current_menu'$input''_\0806" V X$`09endif X$`09_ta_file`20=`20f$parse(\1308,`20"Omi$Menu_Directory:",`20".txt") X$! X$`09if`20f$type('_format'$large)`20.eqs.`20"" X$`09`20`20`20then`20$`20_ta_max_size`20=`20255 X$`09`20`20`20else X$`09`09if`20'_format'$large X$`09`09`20`20`20then`20$`20_ta_max_size`20=`201024 X$`09`09`20`20`20else`20$`20_ta_max_size`20=`20255 X$`09`09endif X$`09endif X$! X$`09if`20f$type('_format'$history)`20.eqs.`20"" X$`09`20`20`20then`20$`20_ta_keep_history`20=`200 X$`09`20`20`20else X$`09`09if`20'_format'$history X$`09`09`20`20`20then`20$`20_ta_keep_history`20=`201 X$`09`09`20`20`20else`20$`20_ta_keep_history`20=`200 X$`09`09endif X$`09endif X$! X$`09if`20f$type('_format'$keep)`20.eqs.`20"" X$`09`20`20`20then`20$`20_ta_keep_file`20=`200 X$`09`20`20`20else X$`09`09if`20'_format'$keep X$`09`09`20`20`20then`20$`20_ta_keep_file`20=`201 X$`09`09`20`20`20else`20$`20_ta_keep_file`20=`200 X$`09`09endif X$`09endif X$! X$`09if`20.not.`20_ta_keep_file X$`09`20`20`20then X$`09`09if`20f$type(ta$remove_files)`20.eqs.`20"" X$`09`09`20`20`20then`20$`20ta$remove_files`20=`20_ta_file X$`09`09`20`20`20else`20$`20ta$remove_files`20=\1211+`20","`20+`20_ta_file X$`09`09endif X$`09`09_ta_keep_history`20=`200 X$`09endif X$! X$`09if`20f$type(omi$setting_defaults)`20.eqs.`20"" X$`09`20`20`20then X$`09`09if`20f$search(_ta_file)`20.eqs.`20""`20.and.`20- X`09`09`20`20`20'_variable'`20.nes.`20main$empty_value X$`09`09`20`20`20then X$`09`09`09open`20/write`20ta_default`20'_ta_file' X$`09`09`09write`20ta_default`20'_variable' X$`09`09`09close`20ta_default X$`09`09endif X$`09`09assign`20/user`20TT:`20sys$input X$`09`09'main$editor'`20'_ta_file X$`09`09if`20.not.`20_ta_keep_history`20then`20- X`09`09`20`20`20$`20purgee`20/nolog`20/keep=1`20/noconfirm`20'f$element(0,`20"; V",`20_ta_file) X$`09`09omi$refresh X$`09`09gosub`20textarea$_readfile X$`09endif X$`09goto`20input$end_format X$! X$`20textarea$_readfile: X$! X$`09if`20f$search(_ta_file)`20.eqs.`20""`20then`20$`20goto`20textarea$_nofile V X$`09open`20/read`20/share=write`20t_area`20'_ta_file'`20/error=textarea$_locke Vd X$`09read`20/end_of_file=textarea$_nofile`20t_area`20'_variable' X$`09_total_size`20=`20f$length('_variable') X$! X$`20textarea$_readloop: X$! X$`09read`20/end_of_file=textarea$end_readloop`20t_area`20_nextline X$`09_total_size`20=`20\0E0C+`202`20+`20f$length(_nextline) X$`09if`20_total_size`20.ge.`20_ta_max_size X$`09`20`20`20then X$`09`09omi$signal`20omi`20tatrunc,_ta_max_size X$`09`09goto`20textarea$end_readloop X$`09endif X$`09'_variable'`20=`20\0E0C+`20F$Fao("!/")`20+`20_nextline X$`09goto`20textarea$_readloop X$! X$`20textarea$end_readloop: X$! X$`09close`20t_area X$`09return`20omi$_ok X$! X$`20textarea$_nofile: X$! X$`09return`20omi$_ok X$! X$`20textarea$_locked: X$! X$`09omi$signal`20omi`20talock X$`09return`20$status X$! X$!********\0808\1010\2020\400E X$! X$!==>`09Validate`20the`20DATE`20type X$! X$`20input$date_format: X$! X$`09if`20f$type('_format'$\0806)`20.eqs.`20"" X$`09`20`20`20then X$`09`09_dformat`20=`20"absolute" X$`09`09goto`20format$frm_date X$`09endif X$! X$`09if`20f$edit(f$extract(0,`201,`20'_format'$\0806),`20"upcase")`20.eqs.`20"A V"`20then`20- X`09`20`20`20$`20_dformat`20=`20"absolute" X$`09if`20f$edit(f$extract(0,`201,`20'_format'$\0806),`20"upcase")`20.eqs.`20"C V"`20then`20- X`09`20`20`20$`20_dformat`20=`20"comparison" X$`09if`20f$edit(f$extract(0,`201,`20'_format'$\0806),`20"upcase")`20.eqs.`20"D V"`20then`20- X`09`20`20`20$`20_dformat`20=`20"delta" X$! X$`20format$frm_date: X$! X$`09_d_in`20=`20'_variable' X$`09if`20f$locate("-",_d_in)`20.eq.`20f$length(\1507then`20- X`09`20`20`20$`20_d_in`20=\0807+`20"-"`20+`20f$cvtime("today","absolute","month V") X$`09'_variable'`20=`20f$cvtime("''_d_in'","''_dformat'","date") X$`09goto`20input$end_format X$! X$!********\0808\1010\2020\400E X$! X$!==>`09Validate`20the`20TIME`20type X$! X$`20input$time_format: X$! X$`09_t_in`20=`20f$edit('_variable',"collapse,upcase") X$! X$`09if`20f$type('_format'$trzero)`20.eqs.`20""`20then`20- X`09`20`20`20'_format'$trzero`20=`200 X$`09if`20f$type('_format'$hours)`20.eqs.`20""`20then`20- X`09`20`20`20'_format'$hours`20=`20main$time\1A07 X$`09if`20f$type('_format'$separator)`20.eqs.`20""`20then`20- X`09`20`20`20'_format'$separator`20=`20":" X$`09if`20f$type('_format'$upcase)`20.eqs.`20""`20then`20- X`09`20`20`20'_format'$upcase`20=`200 X$! X$`09_noon`20=`20`20((f$integer(f$extract(0,`201,`20_t_in))`20.ge.`201`20.and. V`20- X`09`20`20`20f$integer(f$extract(1,`201,`20_t_in))`20.ge.`202)`20.or.`20- X`09`20`20`20(f$integer(f$extract(0,`201,`20_t_in))`20.eq.`202`20.and.`20- X`09`20`20`20f$integer(f$extract(1,`201,`20_t_in))`20.ge.`201)) X$! X$`09if`20f$locate("AM",`20_t_in)`20.lt.`20f$len(\1206 X$`09`20`20`20then X$`09`09if`20_noon`20then`20$`20goto`20input$invalid_format X$`09`09_t_in`20=`20\0806-`20"AM" X$`09endif X$! X$`09if`20f$locate("PM",`20_t_in)`20.lt.`20f$len(\1206 X$`09`20`20`20then X$`09`09_noon`20=`201 X$`09`09_t_in`20=`20\0806-`20"PM" X$`09endif X$! X$`09if`20f$locate(":",`20_t_in)`20.lt.`20f$length(\1506 X$`09`20`20`20then X$`09`09_hrs`20`20=`20f$element(0,`20":",`20_t_in) X$`09`09_mins`20=`20f$element(1,`20":",`20_t_in) X$`09`09goto`20format$frm_time X$`09endif X$! X$`09if`20f$locate(".",`20_t_in)`20.lt.`20f$length(\1506 X$`09`20`20`20then X$`09`09_hrs`20`20=`20f$element(0,`20".",`20_t_in) X$`09`09_mins`20=`20f$element(1,`20".",`20_t_in) X$`09`09goto`20format$frm_time X$`09endif X$! X$`09goto`20input$invalid_format X$! X$`20format$frm_time: X$! X$`09if`20f$type(_hrs)`20.nes.`20"INTEGER"`20.or.`20\2208min\2313- X`09`20`20`20then`20$`20goto`20input$invalid_format X$`09if`20_noon`20.and.`20_hrs`20.lt.`2012`20then`20$\1406=\1B06+`2012 X$`09if`20_hrs`20.eq.`2024 X$`09`20`20`20then X$`09`09_hrs`20=`200 X$`09`09_noon`20=`200 X$`09endif X$`09if`20_hrs`20.lt.`200`20.or.`20\1106ge.`2024\1207min\240F\1206ge.`2060`20- V X`09`20`20`20then`20$`20goto`20input$invalid_format X$! X$`09_addstr`20=`20"" X$`09if`20'_format'$hours`20.eq.`2012 X$`09`20`20`20then X$`09`09if`20_noon X$`09`09`20`20`20then X$`09`09`09if`20_hrs`20.gt.`2012`20then`20$\1406=\1B06-`2012 X$`09`09`09_addstr`20=`20"pm" X$`09`09`20`20`20else`20$`20_addstr`20=`20"am" X$`09`09endif X$`09`09if`20'_format'$upcase`20then`20$`20_addstr`20=`20f$edit(\1107,"\2806") V X$`09endif X$! X$`09if`20_mins`20.lt.`2010`20then`20$\1507=`20"0''f$integer(_mins)'" X$`09if`20_hrs`20.lt.`2010`20.and.`20'_format'$trzero`20then`20- X`09`20`20`20$`20_hrs`20=`20"0''f$integer(_hrs)'" X$! X$`09'_variable'`20=`20"''_hrs'"+'_format'$separator+"''_mins'''_addstr'" X$`09goto`20input$end_format X$! X$`20input$end_format: X$! X$`09set`20message`20'omi$_\0E07' X$`09on`20warning`20then`20$`20continue X$`09return`20omi$_ok X$! X$`20input$invalid_format: X$! X$`09on`20warning`20then`20$`20continue X$`09set`20message`20'omi$_\0E07' X$`09omi$signal`20omi`20ivfrm,_req_format X$`09return`20omi$_warning X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09An`20option`20has`20been`20entered`20and`20validated.`20This`20routine V`20translates X$!`09the`20option`20to`20the`20menu`20definition`20and`20acts`20upon`20that. X$! X$`20main$option_eval: X$! X$`09_selected_item`20=`20'omi$current_menu'$item'omi$option' X$! X$`20eval$lookfor_substitutions: X$! X$`09if`20f$locate("`7E?",_selected_item)`20.lt.`20f$length(\1E0F X$`09`20`20`20then X$`09`09gosub`20main$input_substitute X$`09`09if`20$status`20.eq.`20omi$_cancelled`20then`20$`20goto`20main$get_optio Vn X$`09`09goto`20eval$lookfor_substitutions X$`09endif X$! X$`09omi$option_type`20=`20f$edit(f$element(1,"#",_selected_item),"upcase") X$`09if`20omi$option_type`20.eqs.`20"SUBMENU" X$`09`20`20`20then X$`09`09if`20f$extract(0,`201,`20f$element(2,"#",_selected_item))`20.eqs.`20" V`7B" X$`09`09`20`20`20then`20$`20gosub`20main$_dynamic_menu X$`09`09`20`20`20else X$`09`09`09'f$element(2,"#",_selected_item)'$previous`20=`20omi$current_menu X$`09`09`09omi$current_menu`20=`20"''f$element(2,"#",_selected_item)'" X$`09`09endif X$`09`09gosub`20main$check_security X$`09`09if`20'omi$current_menu'$security_level`20.lt.`200 X$`09`09`20`20`20then X$`09`09`09if`20'omi$current_menu'$security_level`20.eq.`20-1`20then`20- X`09`09`09`20`20`20$`20omi$signal`20omi`20ivpwd X$`09`09`09omi$current_menu`20=`20'\1410'$previous X$`09`09endif X$`09`09if`20'omi$current_menu'$security_level`20.eq.`200 X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20nopriv X$`09`09`09omi$current_menu`20=`20'\1410'$previous X$`09`09endif X$`09`09if`20f$type('omi$current_menu'$counter)`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09_menu_counter`20=`20'omi$current_menu'$c\1D06 X$`09`09`09if`20f$type('omi$current_menu'$auto_increase)`20.eqs.`20""`20 X$`09`09`09`20`20`20then`20$`20counter$'_menu_\0F07'`20==\1B19+`201 X$`09`09`09`20`20`20else X$`09`09&0209if`20'omi$current_menu'$auto_increase`20then`20- X`09`09&0209`20`20`20$`20counter$'_menu_\0F07'`20==\1B19+`201 X$`09`09`09endif X$`09`09`09init_def$search_string`20=`20- X`09`09`09`20`20`20"''omi$current_menu'$input,counter$`20/match=and" X$`09`09`09gosub`20main$default_values X$`09`09endif X$`09`09goto`20main$do_menu X$`09endif X$! X$`09if`20omi$option_type`20.eqs.`20"COMMAND" X$`09`20`20`20then X$`09`09omi$_command`20=`20f$edit(f$element(2,"#",_selected_item),"upcase") X$`09`09gosub`20main$omi_command X$`09`09if`20f$type(omi$previous_menu_file)`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09deletee/symbol/local`20omi$previous_menu_file X$`09`09`09goto`20main$_startmenu X$`09`09endif X$`09`09goto`20main$get_option X$`09endif X$! X$`09if`20omi$option_type`20.eqs.`20"CALL" X$`09`20`20`20then X$`09`09omi$call_info`20=`20f$edit(f$element(2,"#",_selected_item),`20- X`09`09`20`20`20"trim,compress") X$`20!!`09`09if`20f$extract(0,1,omi$call_info)`20.eqs.`20"@"`20then`20- X`20`20!!`09`09&0220`20$`20omi$call_info`20=\100F-`20"@" X$`09`09omi$job_call`20`20=`20f$element(0,"`20",omi$call_info) X$`09`09omi$call_parm`20=`20f$edit((\1809info`20-`20omi$job_call),"trim") X$`20!!!`20`09`09omi$job_call`20`20=`20f$parse(\180C,".OMI",`20- X`20`20!!!`20`09`09&0220`20"OMI$Menu_Directory:",,"syntax_only") X$!`20The`20above`20line`20is`20outcommented;`20it`20doesn't`20work`20when`20th Vere's`20a`20variable X$!`20in`20the`20filename`20(eg.`20'DIRECTORIES$OMI_JOBS'MY_MODULE) X$!`20Below`20is`20the`20wordaround. X$!!!!`20Left`20in`20for`20a`20while.....`20 X$`20`20!!!`09`09if`20f$locate(".",omi$job_call)`20.eq.`20f$length(\1C0E- X`20`20`20!!!`09`09&0320then`20$`20omi$job_call`20=\0F0E+`20".OMI" X$`09`09if`20.not.`20omi$_debug`20then`20- X`09`09`20`20`20$`20set`20message`20/nofacility`20/nosever\0C07identification V`20/notext X$`20`20!!!`09`09if`20f$search("''omi$job_call'")`20.eqs.`20"" X$`20`20!!!`09`09&0220`20then`20$`20omi$signal`20omi`20modnotfound,omi$job_call V X$`20`20!!!`09`09&0220`20else X$`20`20!!!`09`09`09@'omi$job_call'`20'omi$call_parm' X$`09`09`09omi$call`20'omi$job_call'\0F06call_parm' X$`20`20`09`09`09_status`20=`20$\0A06 X$`20`20!!!`09`09endif X$`09`09set`20message`20'omi$_\0E07 X$`09`09goto`20main$get_option X$`09endif X$! X$`09omi$signal`20omi`20badopt X$`09goto`20main$get_option X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Handle`20the`20Dynamic`20Menu`20items X$! X$`20main$_dynamic_menu: X$! X$`09_menu_list`20=`20f$element(2,"#",_selected_item) X$`09_dynmenu_count`20=`200 X$! X$`20dynmenu$_get_options: X$! X$`09_dynmenu_count`20=`20\110F+`201 X$`09_dynmenu'\0908_count'`20=`20f$extract(0,`20f$locate("`7D",`20_menu_list)+1 V\0F0D X$`09_menu_list`20=`20\0D0B-`20_dynmenu'\0908_count' X$`09_dynmenu'\0908_count'`20=`20\1B19-`20"`7B"`20-`20"`7D" X$`09if`20f$extract(0,`201,`20_menu_list)`20.eqs.`20"`7B"`20then`20$`20goto`20d Vynmenu$_get_options X$`09omi$screen`20dynamic_menu X$! X$`20dynmenu$_prompt: X$! X$`09if`20omi$_jumping X$`09`20`20`20then X$`09`09_selected_menu`20=`20f$element(options$_jumpcounter,",",\190Ds) X$`09`09if`20_selected_menu`20.eqs.`20""`20.or.`20\1D16," X$`09`09`20`20`20then X$`09`09`09read`20/end_of_file=dynmnu$cancel_input`20/prompt="''screen$\1106_po Vsition'''_menu_list'`20"`20sys$command`20_selected_menu X$`09`09`09if`20f$type(jump$_norefresh)`20.nes.`20""`20then`20- X`09`09`09`20`20`20$`20deletee`20/symbol`20/local`20jump$_norefresh X$`09`09`09omi$_jumping`20=`200 X$`09`09`20`20`20else`20$`20options$_jumpcounter`20=\1716+`201 X$`09`09endif X$`09`20`20`20else`20$`20read`20/end_of_file=dynmnu$cancel_input`20/prompt="''s Vcreen$\1106_position'''_menu_list'`20"`20sys$command`20_selected_menu X$`09endif X$`09omi$variable`20=`20"_selected_menu" X$`09omi$input_validate X$`09if`20$status`20.ge.`20omi$_warning X$`09`20`20`20then X$`09`09omi$signal`20omi`20tranerr X$`09`09omi$cmdline_clear X$`09`09goto`20dynmenu$_prompt X$`09endif X$`09if`20f$type(_selected_menu)`20.nes.`20"INTEGER"`20.or.`20- X`09`20`20`20f$type(_dynmenu'_selected_menu')`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20ivchoice X$`09`09omi$cmdline_clear X$`09`09goto`20dynmenu$_prompt X$`09endif X$`09_selected_menu`20=`20f$element(1,`20"`7C",`20_dynmenu'\2C0E') X$`09'_selected_menu'$previous`20=`20omi$current_menu X$`09omi$current_menu`20=`20"''_selected_menu'" X$! X$`20dynmnu$cancel_input: X$! X$`09omi$cmdline_clear X$`09return`20omi$_cancelled X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09An`20OMI`20command`20was`20found`20in`20the`20menu`20file,`20which`20r Vequires`20extra X$!`09input.`20This`20was`20recorgnized`20by`20the`20string`20'`7E?'`20If`20th V\2B07immediatly X$!`09followed`20by`20'`7Bany`20text`7D',`20'\0D08'`20will`20be`20used`20to`20p Vrompt`20the`20user X$!`09for`20the`20required`20input.`20'`7E?'`20will`20be`20substituted`20by`20t Vhe`20user`20input`20in X$!`09the`20command. X$!`09If`20'`7Bany`20text`7D'`20if`20optionally`20split`20by`20a`20"`7C"`20( V\2B0A`7Cblock`7D'), X$!`09'block'`20points`20to`20a`20format`20block. X$! X$`20main$input_substitute: X$! X$`09_string1`20=`20f$extract(0,`20f$locate("`7E?",_selected_item),`20\110F X$`09_selected_item`20=`20\110F-`20_string1 X$! X$`09if`20f$type(_format)`20.nes.`20""`20then`20$`20deletee`20/symbol`20/local V`20\3007 X$`09if`20f$locate("`7E?`7B",_selected_item)`20.lt.`20f$length(\1E0F X$`09`20`20`20then X$`09`09_prompt_info`20=`20f$extract(3,`20f$locate("`7D",_selected_item)-3,`20 V\130F X$`09`09_selected_item`20=`20\110F-`20"`7B''_prompt_info'`7D" X$`09`09_prompt`20=`20f$element(0,`20"`7C",`20\1C07_info) X$`09`09if`20f$length(_prompt)`20.lt.\1711_info)`20-`201`20then`20- X`09`09`20`20`20$`20_format`20=`20f$element(1,`20"`7C",`20_prompt_info) X$`09`20`20`20else`20$`20_prompt`20=`20"''questions$default_input':" X$`09endif X$! X$`20main$input_to_subst: X$! X$`09read`20/end_of_file=main$subst_cancelled`20sys$command`20_value`20- X`09`20`20`20/prompt="''screen$\1106_position'''_prompt'`20"`20 X$`09omi$msgline_clear X$`09omi$variable`20=`20"_value" X$`09omi$input_validate X$`09if`20$status`20.ge.`20omi$_warning X$`09`20`20`20then X$`09`09omi$signal`20omi`20tranerr X$`09`09omi$cmdline_clear X$`09`09goto`20main$input_to_subst X$`09endif`20`20`20 X$! X$`09if`20f$type(_format)`20.nes.`20"" X$`09`20`20`20then X$`09`09_variable`20=`20"_value" X$`09`09gosub`20input$_format X$`09`09if`20$status`20.eq.`20omi$_warning`20!`20Ignore`20errors;`20they'll`20c Vause`20looping X$`09`09`20`20`20then X$`09`09`09omi$cmdline_clear X$`09`09`09goto`20main$input_to_subst X$`09`09endif X$`09endif X$! X$`09omi$cmdline_clear X$`09omi$msgline_clear X$! X$`09_selected_item`20=`20_string1`20+`20_value`20+`20f$extract(2,`20- X`09`20`20`20f$length(_selected_item)-2,`20\130F X$! X$`09return`20omi$_ok X$! X$`20main$subst_cancelled: X$! X$`09omi$msgline_clear X$`09omi$cmdline_clear X$`09return`20omi$_cancelled X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==> X$! X$`20main$_taglist: X$! X$`09_tagblock`20=`20f$extract(0,`20f$locate("`7D",`20_variable)`20+`201\100C X$`09_taglist`20=`20_variable`20-`20_tagblock X$`09_tagblock`20=`20f$edit(\1309,"upcase")`20-`20"`7BTAG`7C"`20-`20"`7D" X$`09if`20f$type`20('_taglist')`20.eqs.`20""`20then`20$`20\1C0A`20=`20"" X$`09if`20f$type('_tagblock'$delimiter)`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20nodelim X$`09`09return`20omi$_warning X$`09endif X$`09_tagdelim`20=`20'_tagblock'$delimiter X$`09if`20f$type('_tagblock'$filename)`20.nes.`20"" X$`09`20`20`20then X$`09`09_blockname`20=`20_tagblock X$`09`09gosub`20input$_from_file X$`09`09if`20$status`20.ne.`20omi$_ok`20then`20$`20return`20$\2306 X$`09endif X$! X$`09omi$screen`20taglist X$! X$`20taglist$_prompt: X$! X$`09if`20omi$_jumping X$`09`20`20`20then X$`09`09_tag_sel`20=`20f$element(options$_jumpcounter,",",\190Ds) X$`09`09if`20_tag_sel`20.eqs.`20""`20.or.`20\1710," X$`09`09`20`20`20then X$`09`09`09read`20/end_of_file=main$end_taglist`20sys$command`20_tag_sel`20- X`09`09`09`20`20`20/prompt="''screen$promp Xt_position'Select,`20`20when`20done:`20"`20 X$`09`09`09if`20f$type(jump$_norefresh)`20.nes.`20""`20then`20- X`09`09`09`20`20`20$`20deletee`20/symbol`20/local`20jump$_norefresh X$`09`09`09omi$_jumping`20=`200 X$`09`09`20`20`20else`20$`20options$_jumpcounter`20=\1716+`201 X$`09`09endif X$`09`20`20`20else`20$`20read`20/end_of_file=main$end_taglist`20sys$command`20_ Vtag_sel`20- X`09`09`20`20`20/prompt="''screen$\1106_position'Select,`20`20when`20do Vne:`20"`20 X$`09endif X$`09if`20f$edit(_tag_sel,"upcase")`20.eqs.`20"`5EZ"`20then`20$`20goto`20main$e Vnd_taglist X$`09omi$cmdline_clear X$`09omi$msgline_clear X$! X$`09if`20_tag_sel`20.eqs.`20""`20then`20$`20goto`20taglist$_prompt X$`09if`20f$type(_tag_sel)`20.nes.`20"INTEGER" X$`09`20`20`20then X$`09`09omi$signal`20omi`20intonly X$`09`09if`20f$type(jump$_norefresh)`20.nes.`20""`20then`20- X`09`09`20`20`20$`20deletee`20/symbol`20/local`20jump$_norefresh X$`09`09omi$_jumping`20=`200 X$`09`09goto`20taglist$_prompt X$`09endif X$`09_reverse`20=`200 X$! X$`09if`20f$type('_tagblock'$value'_tag_sel')`20.eqs.`20"" X$`09`20`20`20then X$`09`09_sel_m_1`20=`20_tag_sel`20-`201 X$`09`09if`20_sel_m_1`20.lt.`200`20then`20$\170A=`200 X$`09`09if`20f$type('_tagblock'$value'_sel_m_1')`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20ivsel X$`09`09`09if`20f$type(jump$_norefresh)`20.nes.`20""`20then`20- X`09`09`09`20`20`20$`20deletee`20/symbol`20/local`20jump$_norefresh X$`09`09`09omi$_jumping`20=`200 X$`09`09`09goto`20taglist$_prompt X$`09`09`20`20`20else`20$`20_reverse`20=`201 X$`09`09endif X$`09endif X$! X$`09if`20_reverse`20then`20$`20_tag_sel`20=`201 X$! X$`20tag$_reverse: X$! X$`09_tag_value`20=`20'_tagblock'$value'_tag_sel'`20 X$`09if`20f$locate("''_tagdelim'''_tag_value\0D07\1906",'_taglist')`20.lt.`20- V X`09`20`20`20f$length('_taglist')`20.or.`20(\1B16ne.`200`20.and.`20- X`09`20`20`20f$locate("''_tag_value'''_tagdelim'",'_taglist')`20.eq.`200) X$`09`20`20`20then`20$`20'_taglist'`20=\0D0C-`20('_tagblock'$value'_tag_sel'`20 V+`20"''_tagdelim'") X$`09`20`20`20else`20$`20'_taglist'`20=\0D0C+\1A06block'$value'_tag_sel'`20+`20 V"''_tagdelim'" X$`09endif X$`09omi$screen`20taglist`20'_tag_sel' X$! X$`09if`20_reverse X$`09`20`20`20then X$`09`09_tag_sel`20=`20\0B09+`201 X$`09`09if`20_tag_sel`20.le.`20_sel_m_1`20then`20$`20goto`20tag$_reverse X$`09endif X$! X$`09goto`20taglist$_prompt X$! X$`20main$end_taglist: X$! X$`09omi$refresh X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09The`20option`20was`20recognized`20as`20an`20internal`20OMI`20command, V`20or`20an`20OMI X$!`09command`20has`20been`20entered`20as`20input.`20Validate`20the`20\3007,`20 Vand`20execute`20it. X$! X$`20main$omi_command: X$! X$`09omi$_command`20=`20f$edit(\160C,"trim,compress") X$`09omi$_p1`20=`20f$edit(f$element(1,`20"`20",`20omi$_command),"trim") X$`09omi$_p2`20=`20f$edit(f$element(2,`20"`20",`20omi$_command),"trim") X$`09omi$_p3`20=`20f$edit(f$element(3,`20"`20",`20omi$_command),"trim") X$`09omi$_p4`20=`20f$edit(f$element(4,`20"`20",`20omi$_command),"trim") X$`09omi$_p5`20=`20f$edit(f$element(5,`20"`20",`20omi$_command),"trim") X$`09omi$_command`20=`20f$element(0,`20"`20",`20\210C) X$`09_cmd_match`20=`200 X$`09_cmd_cnt`20=`200 X$! X$`20main$_validate_cmd: X$! X$`09if`20f$element(_cmd_cnt,`20"#",`20omi$valid_commands)`20.eqs.`20"#"`20then V`20- X`09`20`20`20$`20goto`20main$end_validate_cmd X$`09if`20omi$_command`20.eqs.`20f$extract(0,`20f$length(\290C),`20- X`09`20`20`20f$element(0,`20",",\120B_cmd_cnt,`20"#",`20omi$valid_commands))) X$`09`20`20`20then X$`09`09omi$command`20=`20f$element(0,`20",",\120B_cmd_cnt,`20"#",`20omi$valid_ Vc\3F06s)) X$`09`09_available_in_otf`20=`20f$element(1,`20",",\120B_cmd_cnt,`20"#",`20omi$ Vvalid_commands)) X$`09`09_cmd_match`20=`20\0D0B+`201 X$`09endif X$! X$`09_cmd_cnt`20=`20\0B09+`201 X$`09goto`20main$_validate_cmd X$! X$`20main$end_validate_cmd: X$! X$`09if`20_cmd_match`20.eq.`200 X$`09`20`20`20then X$`09`09omi$signal`20omi`20ivcmd,omi$_command X$`09`09return`20omi$_warning X$`09endif X$! X$`09if`20_cmd_match`20.ge.`202 X$`09`20`20`20then X$`09`09omi$signal`20omi`20abcmd,omi$_command X$`09`09return`20omi$_warning X$`09endif X$! X$`09if`20omi$otf_menu`20.and.`20.not.`20_available_in_otf X$`09`20`20`20then X$`09`09omi$signal`20omi`20cmdnotav X$`09`09return`20$status X$`09endif X$! X$`09gosub`20main$execcmd_'omi$command' X$`09return`20$status X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_back: X$! X$!==>`09The`20OMI`20command`20BACK X$! X$`09if`20'omi$current_menu'$previous`20.eqs.`20""`20.and.`20.not.`20omi$otf_me Vnu X$`09`20`20`20then X$`09`09omi$signal`20omi`20toplevel X$`09`09return`20$status X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.lt.`203`20.or.`20\1507`20.nes.`20f$extract(0, V\3912,`20"NOEXIT_MODULE") X$`09`20`20`20then X$`09`09gosub`20main$perf_onexit X$`09`09if`20$status`20.eq.`20omi$_warning`20then`20$`20return\1B0D X$`09endif X$! X$`09if`20omi$otf_menu`20then`20$`20goto`20main$otf_exit X$`09omi$current_menu`20=`20'\1410'$previous X$`09omi$screen`20menu X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_calc: X$! X$!==>`09The`20OMI`20command`20CALC X$! X$`09@Omi$:Omi$Calculator`20'omi$_p1\09082\12083\1B084\24085 X$`09_status`20=`20$\0A06 X$`09if`20_status`20.eq.`20omi$_ok X$`09`20`20`20then X$`09`09omi$signal`20omi`20calcres,'omi$calculated X$`09`09deletee`20/symbol`20/global`20omi$calculated X$`09endif X$`09return`20_status X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_edit: X$! X$!==>`09The`20OMI`20command`20EDIT X$! X$`09if`20'omi$current_menu'$security_level`20.lt.`203 X$`09`20`20`20then X$`09`09omi$signal`20omi`20nopriv X$`09`09return`20omi$_warning X$`09endif X$! X$`09@Omi$:Omi$Edit_Cmd X$`09return`20$status X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_exit: X$`20main$execcmd_quit: X$! X$!==>`09The`20OMI`20commands`20EXIT`20and`20QIUT X$! X$`09gosub`20main$perf_onexit X$`09if`20$status`20.eq.`20omi$_warning`20then`20$`20return\1B0D X$`09if`20f$edit(omi$current_menu,"upcase")`20.nes.`20"MENU" X$`09`20`20`20then X$`09`09perf$init_exit`20=`201 X$`09`09omi$current_menu`20=`20"menu" X$`09`09gosub`20main$perf_onexit X$`09`09if`20$status`20.eq.`20omi$_warning X$`09`09`20`20`20then X$`09`09`09omi$screen`20menu X$`09`09`09return`20omi$_warning X$`09`09endif X$`09endif X$`09goto`20main$_exit X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_encrypt: X$! X$!==>`09The`20OMI`20command`20ENCRYPT X$! X$`09if`20'omi$current_menu'$security_level`20.lt.`203 X$`09`20`20`20then X$`09`09omi$signal`20omi`20nopriv X$`09`09return`20omi$_warning X$`09endif X$! X$`09if`20omi$_p1`20.eqs.`20"" X$`09`20`20`20then X$`09`09read`20/end_of_file=setcommand$_cancelled`20sys$\1707`20_encr_sect`20- V X`09`09`20`20`20/prompt="''screen$\1106_position'_From`20section:`20"`20 X$`09`09omi$cmdline_clear X$`09`20`20`20else`20$`20_encr_sect`20=`20omi$_p1 X$`09endif X$`09_encr_sect`20=`20\0D0B-`20"`5B"`20-`20"`5D" X$`09if`20omi$_p2`20.eqs.`20"" X$`09`20`20`20then X`09`09$`20read`20/end_of_file=setcommand$_cancelled`20sys$\1707`20_encr_item V`20- X`09`09`20`20`20/prompt="''screen$\1106_position'_Item:`20" X$`09`09omi$cmdline_clear X$`09`20`20`20else`20$`20_encr_item`20=`20omi$_p2 X$`09endif X$! X$`09if`20f$type('_encr_sect'$\0D07item')`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20nosuchitm,_encr_ite\0B08sect X$`09`09return`20omi$_warning X$`09endif X$! X$`09if`20omi$_p3`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20f$type(keyring$'omi$_p3')`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20ivkey,omi$_p3 X$`09`09`09return`20omi$_warning X$`09`09endif X$`09endif X$! X$`09_encr`20=`20'_encr_sect'$\0D07item' X$`09omi$encrypt`20"''_encr'"`20'omi$_p3' X$`09_encr`20=`20omi$encrypted X$`09deletee`20/symbol`20/global`20omi$encrypted X$`09omi$config`20'omi$menu_file'`20update`20"''_encr_sect'"\100Aitem\100B'" X$`09if`20$status`20.eq.`20omi$_ok`20then`20- X`09`20`20`20$`20omi$signal`20omi`20encrypt X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_export: X$! X$!==>`09The`20OMI`20command`20EXPORT X$! X$`09if`20omi$_p1`20.eqs.`20"" X$`09`20`20`20then X$`09`09read`20/end_of_file=export_command$_cancelled`20sys$\1707`20omi$_p1`20- V X`09`09`20`20`20/prompt="''screen$\1106_position'_What:`20"`20 X$`09`09omi$_p1`20=`20f$edit(\1107,"uncomment,trim,compress,upcase") X$`09`09omi$cmdline_clear X$`09`09goto`20main$execcmd_export X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"KEY") X$`09`20`20`20then X$! X$`09`20export_cmd$\0B07key: X$! X$`09`09if`20omi$_p2`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09read`20/end_of_file=export_command$_cancelled`20sys$\1707`20omi$_p2 V`20- X`09`09`09`20`20`20/prompt="''screen$\1106_position'_Key`20name:`20"`20 X$`09`09`09omi$cmdline_clear X$`09`09`09goto`20export_cmd$\0B07key X$`09`09endif X$! X$`09`09if`20f$type(keyring$'omi$_p2')`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20ivkey,omi$_p2 X$`09`09`09return`20omi$_warning X$`09`09endif X$`09`09if`20f$search("omi$:omi$global_keyring.dat")`20.eqs.`20"" X$`09`09`20`20`20then`20$`20open`20/write`20/error=export_cmd$nopriv`20- X`09`09`09omi$_keyring`20omi$:omi$global\1808.dat X$`09`09`20`20`20else X$`09`09`09search`20/output=nla0:`20omi$:omi$global_keyring.dat`20"''omi$_p2'" V X$`09`09`09if`20$status`20.ne.`20omi$_nomatch X$`09`09`09`20`20`20then X$`09`09&0209omi$signal`20omi`20glkeyex,omi$_p2 X$`09`09&0209return`20$status X$`09`09`09endif X$`09`09`09open`20/append`20/error=export_cmd$nopriv`20- X`09`09`09`20`20`20omi$_keyring`20omi$:omi$global\1808.dat X$`09`09endif X$! X$`09`09write`20omi$_keyring`20"''omi$_p2'=",\1607$\1409,"=" X$`09`09close`20omi$_keyring X$`09`09omi$signal`20omi`20expkey,omi$_p2 X$`09`09return`20omi$_ok X$`09endif X$ X$`09omi$signal`20omi`20ivopt,export X$! X$`20export_command$_cancelled: X$! X$`09omi$cmdline_clear X$`09return`20omi$_ok X$! X$`20export_cmd$nopriv: X$! X$`09omi$signal`20omi`20noexprv X$`09return`20$status X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_import: X$! X$!==>`09The`20OMI`20command`20IMPORT X$! X$`09if`20omi$_p1`20.eqs.`20"" X$`09`20`20`20then X$`09`09read`20/end_of_file=import_command$_cancelled`20sys$\1707`20omi$_p1`20- V X`09`09`20`20`20/prompt="''screen$\1106_position'_What:`20"`20 X$`09`09omi$_p1`20=`20f$edit(\1107,"uncomment,trim,compress,upcase") X$`09`09omi$cmdline_clear X$`09`09goto`20main$execcmd_import X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"KEY") X$`09`20`20`20then X$! X$`09`20import_cmd$\0B07key: X$! X$`09`09if`20omi$_p2`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09read`20/end_of_file=import_command$_cancelled`20sys$\1707`20omi$_p2 V`20- X`09`09`09`20`20`20/prompt="''screen$\1106_position'_Key`20name:`20"`20 X$`09`09`09omi$cmdline_clear X$`09`09`09goto`20import_cmd$\0B07key X$`09`09endif X$! X$`09`09if`20f$type(keyring$'omi$_p2')`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20exkey,omi$_p2 X$`09`09`09return`20omi$_warning X$`09`09endif X$! X$`09`09if`20f$search("omi$:omi$global_keyring.dat")`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20glkeynf,omi$_p2 X$`09`09`09return`20omi$_warning X$`09`09endif X$! X$`09`09open`20/read`20/error=import_cmd$nopriv`20imp$_key`20omi$:omi$global_ke Vyring.dat X$! X$`09`20import_cmd$_read_global_key: X$! X$`09`09read`20/end_of_file=import_cmd$end_read_global_key`20imp$_key`20_keys X$`09`09if`20f$edit(f$element(0,`20"=",`20_keys),`20"upcase")`20.eqs.`20- X`09`09`20`20`20f$edit(omi$_p2,`20"upcase")`20then`20$`20goto`20import_cmd$_key V_found X$`09`09goto`20import_cmd$_read_global_key X$! X$`09`20import_cmd$end_read_global_key: X$! X$`09`09omi$signal`20omi`20glkeynf,omi$_p2 X$`09`09return`20omi$_warning X$! X$`09`20import_cmd$_key_found: X$! X$`09`09close`20imp$_key X$`09`09_key`20=`20f$element(1,`20"=",`20_keys) X$`09`09_new_line`20=`20"`20`20''omi$_p2'`20=`20''_key'" X$! X$`09`09_config_file`20=`20f$trnlnm("Omi$Config") X$`09`09if`20_config_file`20.eqs.`20""`20then`20$\1D0E=`20"Sys$Login:Omi$Menu.C Vfg" X$`09`09if`20f$search("''_config_file'")`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20nocfg X$`09`09`09return`20omi$_warning X$`09`09endif X$! X$`09`09search`20'_config_file'`20"`5Bkeyring`5D"`20/output=nla0: X$`09`09if`20$status`20.eq.`20omi$_nomatch X$`09`09`20`20`20then X$`09`09`09open`20/append`20cfgfi`20'_config_file' X$`09`09`09write`20cfgfi`20"" X$`09`09`09write`20cfgfi`20"`5Bkeyring`5D" X$`09`09`09write`20cfgfi`20"''_new_line'" X$`09`09`09close`20cfgfi X$`09`09`20`20`20else X$`09`09`09open`20/read`20cfgfi`20'_config_file' X$`09`09`09open`20/write`20cfgfo`20Sys$Scratch:Omi$NewCfg._Tmp$ X$! X$`09`09`20main$execcmd_importkey: X$! X$`09`09`09read`20/end_of_file=main$execcmd_key_imported`20cfgfi`20_cfgin X$`09`09`09write`20cfgfo`20_cfgin X$`09`09`09if`20f$locate("`5Bkeyring`5D",`20f$edit(_cfgin,`20"lowercase"))`20- V X`09`09`09`20`20`20.lt.`20f$length(_cfgin)`20then`20$`20write`20cfgfo`20"''_new V_line'" X$`09`09`09goto`20main$execcmd_importkey X$! X$`09`09`20main$execcmd_key_imported: X$! X$`09`09`09close`20cfgfi X$`09`09`09close`20cfgfo X$`09`09`09deletee`20/nolog`20/noconfirm`20'_config_file'; X$`09`09`09copy`20/nolog`20Sys$Scratch:Omi$NewCfg._Tmp$`20'_config_file' X$`09`09`09deletee`20/nolog`20/noconfirm`20Sys$Scratch:Omi$NewCfg._Tmp$;* X$`09`09endif X$`09`09keyring$'omi$_p2'`20==`20_key X$`09`09omi$signal`20omi`20impkey,omi$_p2 X$`09`09return`20omi$_ok X$`09endif X$ X$`09omi$signal`20omi`20ivopt,import X$! X$`20import_command$_cancelled: X$! X$`09omi$cmdline_clear X$`09return`20omi$_ok X$! X$`20import_cmd$nopriv: X$! X$`09omi$signal`20omi`20noimprv X$`09return`20$status X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_help: X$! X$!==>`09The`20OMI`20command`20HELP X$! X$`09assign`20/user`20/nolog`20TT:`20sys$input X$`09help`20/library=Omi$:Omi$Menu`20'omi$_p1\09082\12083\1B084 X$`09omi$refresh X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_increase: X$! X$!==>`09The`20OMI`20command`20INCREASE X$! X$`09if`20f$type('omi$current_menu'$counter)`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20nocntinc X$`09`09return`20omi$_warning X$`09endif X$! X$`09_menu_counter`20=`20'omi$current_menu'$c\1D06 X$`09counter$'_menu_\0F07'`20==`20\1B18+`201 X$`09init_def$search_string`20=`20"''omi$current_menu'$input,counter$`20/match= Vand" X$`09gosub`20main$default_values X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"REFRESH")`20- X`09`20`20`20then`20$`20omi$refresh X$! X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_info: X$! X$!==>`09The`20OMI`20command`20INFO X$! X$`20!`09omi$signal`20omi`20not_yet X$`20!`09return`20omi$_warning X$! X$`09_hlp_file`20=`20f$parse(omi$menu_file,,,"name") X$`09_hlp_file`20=`20f$search("omi$menu_directory:''\2B09'.omh") X$`09if`20_hlp_file`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20nohlpfil X$`09`09return`20$status X$`09endif X$`09search`20'_hlp_file`20"`5B''omi$current_menu'`5D"`20/output=nla0: X$`09if`20$status`20.eq.`20omi$_nomatch X$`09`20`20`20then X$`09`09omi$signal`20omi`20nohlp,'omi$current_menu X$`09`09return`20$status X$`09endif X$!`20`20&0220&0420&0520 X$`09open`20/read`20omi$hlp`20'_hlp_file X$! X$`20info$_find: X$! X$`09read`20/end_of_file=info$_notfound`20omi$hlp`20_mnu_info X$`09if`20_mnu_info`20.eqs.`20""`20then`20$`20goto`20info$_notfound X$`09if`20f$edit(_mnu_info,`20"collapse,upcase")`20.nes.`20- X`09`20`20`20"`5B''f$edit(omi$current_menu,"upcase")'`5D"`20then`20- X`09`20`20`20$`20goto`20info$_find X$`09available_lines`20=`20screen$line_command`20-\160Dheader`20-`20- X`09`20`20`20screen$window_topmargin`20-`202 X$`09rec_counter`20=`201 X$! X$`20info$_read: X$! X$`09read`20/end_of_file=info$end_read`20omi$hlp`20omi$record'rec_counter' X$`09if`20omi$record'rec_counter'`20.eqs.`20""`20then`20- X`09`20`20`20$`20omi$record'rec_counter'`20=`20"`20"`20!`20Workaround`20for`20a V`20known`20bug X$`09if`20f$extract(0,1,omi$record'rec_counter')`20.eqs.`20"`5B"`20then`20- X`09`20`20`20$`20goto`20info$end_read X$`09if`20omi$record'rec_counter'`20.eqs.`20""`20then`20$`20goto`20info$en Vd_read X$`09if`20omi$record'rec_counter'`20.eqs.`20""`20then`20$`20goto`20info$_di Vsplay X$! X$`09rec_counter`20=`20\0E0C+`201 X$`09if`20rec_counter`20.gt.`20available_lines`20then`20$`20goto`20info$_displa Vy X$`09goto`20info$_read X$! X$`20info$_display: X$! X$`09omi$record'rec_counter'`20=`20"" X$`09omi$display_info X$`09omi$wait X$`09if`20$status`20.eq.`20omi$_cancelled`20then`20$`20goto`20info$_done X$`09rec_counter`20=`201 X$`09goto`20info$_read X$! X$`20info$_notfound: X$! X$`09close`20omi$hlp X$`09omi$signal`20omi`20nohlp,'omi$current_menu X$`09return`20$status X$! X$`20info$end_read: X$! X$`09omi$record'rec_counter'`20=`20"" X$`09omi$display_info X$`20!`09if`20f$type(omi$record'rec_counter')`20.nes.`20""`20then`20- X`20`20!`09&0220`20deletee`20/symbol`20/global`20omi$record'rec_counter' X$! X$`09omi$wait X$! X$`20info$_done: X$! X$`09close`20omi$hlp X$`09omi$refresh X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_jump: X$! X$!==>`09The`20OMI`20command`20JUMP X$! X$`09if`20omi$_p1`20.eqs.`20"" X$`09`20`20`20then X$`09`09read`20/end_of_file=jump$_ignored`20sys$command`20omi$_p1`20- X`09`09`20`20`20/prompt="''screen$\1106_position'_Submenu:`20" X$`09`09omi$cmdline_clear X$`09`09omi$msgline_clear X$`09`09goto`20main$execcmd_jump X$`09endif X$`09assign`20sys$scratch:omi$jump_submenu._tmp$`20sys$output X$`09show`20symbol`20/global`20*$name X$`09deassign`20sys$output X$`09if`20.not.`20omi$_debug`20then`20- X`09`20`20`20$`20set`20message`20/nofacility`20/nosever\0C07identification`20/n Votext X$`09search`20sys$scratch:omi$jump_submenu._tmp$`20"""''omi$_p1'"""`20- X`09`20`20`20/output=sys$scratch:omi$jump_submenu_found._tmp$ X$`09_status`20=`20$\0A06 X$`09delete`20/nolog`20/noconfirm`20sys$scratch:omi$jump_submenu._tmp$; X$`09if`20_status`20.eq.`20omi$_nomatch X$`09`20`20`20then X$`09`09delete`20/nolog`20/noconfirm`20sys$scratch:omi$jump_submenu_found._tmp$ V; X$`09`09omi$signal`20omi`20nosuchname,'f$edit(omi$_p1,"upcase") X$`09`09return`20omi$_warning X$`09endif X$`09open`20/read`20jump`20sys$scratch:omi$jump_submenu_found._tmp$ X$`09read`20jump`20_mnu_name X$`09close`20jump X$`09delete`20/nolog`20/noconfirm`20sys$scratch:omi$jump_submenu_found._tmp$; X$! X$`09if`20f$type`20(omi$current_menu)`20.eqs.`20""`20then`20$`20\2210`20=`20"" V X$`09'f$edit(f$element(0,`20"$",`20_mnu_name),`20"collapse")'$previous`20=`20om Vi$current_menu X$`09omi$current_menu`20=`20f$edit(f$element(0,`20"$",`20_mnu_name),`20"collaps Ve") X$! X$`09gosub`20main$check_security X$`09if`20'omi$current_menu'$security_level`20.eq.`20-1 X$`09`20`20`20then X$`09`09omi$msgline_clear X$`09`09omi$signal`20omi`20ivpwd X$`09`09omi$current_menu`20=`20'\1410'$previous X$`09`09return`20omi$_warning X$`09endif X$`09if`20'omi$current_menu'$security_level`20.eq.`200 X$`09`20`20`20then X$`09`09omi$msgline_clear X$`09`09omi$signal`20omi`20nopriv X$`09`09omi$current_menu`20=`20'\1410'$previous X$`09`09return`20omi$_warning X$`09endif X$! X$`09if`20f$type('omi$current_menu'$on_init)`20.nes.`20""`20.and.`20perf$init_e Vxit X$`09`20`20`20then X$`09`09perf$init_exit`20=`200 X$`09`09if`20f$extract(0,1,f$edit('omi$current_menu'$on_init,"collapse"))`20.eq Vs.`20":" X$`09`09`20`20`20then X$`09`09`09omi$_command`20=`20f$edit('omi$current_menu'$on_init`20-`20":",`20"t Vrim,compress,upcase") X$`09`09`09gosub`20main$omi_command X$`09`09`09_status`20=`20$\0A06 X$`09`09`09goto`20main$perfd_oninit X$`09`09endif X$`09`09omi$init_job`20=`20f$element(0,`20"`20",`20'omi$current_menu'$on_init) V X$`09`09_params`20=`20'omi$current_menu'$on_init`20-`20omi$init_job X$`20!!!`20`09`09omi$init_job`20`20=`20f$parse(\180C,".OMI",`20- X`20`20!!!`20`09`09&0220`20"OMI$Menu_Directory:",,"syntax_only") X$`20!!!`09`09if`20f$locate(".",omi$init_job)`20.eq.`20f$length(\1C0E- X`20`20!!!`09`09&0220`20then`20$`20omi$init_job`20=\0F0E+`20".OMI" X$`20!!!`09`09@'omi$init_job`20'_params' X$`09`09omi$call`20'omi$init_job`20'_params' X$`09`09_status`20=`20$\0A06 X$! X$`20main$perfd_oninit: X$! X$`09`09if`20_status`20.ge.`20omi$_warning X$`09`09`20`20`20then X$`09`09`09omi$current_menu`20=`20'\1410'$previous X$`09`09`09return`20omi$_warning X$`09`09endif X$`09endif X$! X$`09if`20f$type('omi$current_menu'$counter)`20.nes.`20"" X$`09`20`20`20then X$`09`09_menu_counter`20=`20'omi$current_menu'$c\1D06 X$`09`09counter$'_menu_\0F07'`20==`20\1B18+`201 X$`09`09init_def$search_string`20=`20- X`09`09`20`20`20"''omi$current_menu'$input,counter$`20/match=and" X$`09`09gosub`20main$default_values X$`09endif X$! X$`09if`20f$type(omi$_p2)`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20omi$_p2`20.eqs.`20"" X$`09`09`20`20`20then`20$`20omi$_jumping`20=`200 X$`09`09`20`20`20else`20$`20omi$_jumping`20=`201 X$`09`09endif X$`09endif X$`09if`20f$type(jump$_norefresh)`20.eqs.`20""`20then`20$`20omi$\1D07 X$`09return`20omi$_ok X$! X$`20jump$_ignored: X$! X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_reset: X$! X$!==>`09The`20OMI`20command`20RESET X$! X$`09if`20omi$_p1`20.eqs.`20"" X$`09`20`20`20then X$`09`09read`20/end_of_file=resetcommand$_cancelled`20sys$\1707`20omi$_p1`20- X`09`09`20`20`20/prompt="''screen$\1106_position'_What:`20"`20 X$`09`09omi$_p1`20=`20f$edit(\1107,"uncomment,trim,compress,upcase") X$`09`09omi$cmdline_clear X$`09`09goto`20main$execcmd_reset X$`09endif X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"COUNTER") X$`09`20`20`20then X$`09`09if`20f$type('omi$current_menu'$counter)`20.eqs.`20"" X$`09`09`20`20`20then`20$`20omi$signal`20omi`20nocount X$`09`09`20`20`20else X$`09`09`09_menu_counter`20=`20'omi$current_menu'$c\1D06 X$`09`09`09counter$'_menu_\0F07'`20==`200 X$`09`09endif X$`09`09return`20omi$_ok X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"AUTO_REFRESH") X$`09`20`20`20then X$`09`09'omi$current_menu'$auto_refresh`20=`200 X$`09`09return`20omi$_ok X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"ORDER") X$`09`20`20`20then X$`09`09if`20f$type('omi$current_menu'$required_order)`20.eqs.`20"" X$`09`09`20`20`20then`20$`20omi$signal`20omi`20noorder X$`09`09`20`20`20else`20$`20'omi$current_menu'$reqwork_order`20=`20- X`09`09`09f$edit('omi$current_menu'$required_order,`20"collapse") X$`09`09endif X$`09`09return`20omi$_ok X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"VARIABLES") X$`09`20`20`20then&0320&0320\0606\0C0C\1818\301A X$`09`09varreset$`20=`200 X$`09`09init_def$search_string`20=`20`20"''omi$current_menu'$input" X$`09`09gosub`20main$default_values X$! X$`09`09if`20f$type('omi$current_menu'$counter)`20.nes.`20"" X$`09`09`20`20`20then X$!`09`09`09*`20Check`20for`20arrays`20(counters) X$`09`09`09init_def$search_string`20=`20- X`20`09`09`09`20`20`20"''omi$current_menu'$input,counter$`20/match=and" X$`09`09`09gosub`20main$default_values X$`09`09endif X$`09`09if`20varreset$`20.eq.`200 X$`09`09`20`20`20then X$`09`09`09deletee`20/symbol`20/local`20varreset$ X$`09`09`09omi$signal`20omi`20novars X$`09`09`09return`20$status X$`09`09endif X$`09`09deletee`20/symbol`20/local`20varreset$ X$`09`09if`20f$extract(0,`203,`20f$edit(omi$_p2,`20"upcase"))`20.nes.`20"BAC" V`20!Background X$`09`09`20`20`20then X$`09`09`09omi$refresh X$`09`09`09omi$signal`20omi`20resetvar X$`09`09endif X$`09`09return`20$status X$`09endif X$! X$!`09****`20Reset`20commands`20below`20are`20not`20available`20in`20OTF`20Menu Vs X$! X$`09if`20omi$otf_menu X$`09`20`20`20then X$`09`09omi$signal`20omi`20cmdnotav X$`09`09return`20$status X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"PASSWORD") X$`09`20`20`20then X$`09`09if`20'omi$current_menu'$security_level`20.lt.`203 X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20nopriv X$`09`09`09return`20omi$_warning X$`09`09endif X$`09`09if`20f$type('omi$current_menu'$password)`20.eqs.`20"" X$`09`09`20`20`20then`20$`20omi$signal`20omi`20nopwd X$`09`09`20`20`20else X$`09`09`09omi$config`20'omi$menu_file'`20setcmd`20password`20reset X$`09`09`09if`20$status`20.eq.`20omi$_ok`20then`20$`20omi$signal`20omi`20rempwd V X$`09`09endif X$`09`09return`20omi$_ok X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"NAME") X$`09`20`20`20then X$`09`09if`20'omi$current_menu'$security_level`20.lt.`203 X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20nopriv X$`09`09`09return`20omi$_warning X$`09`09endif X$`09`09if`20f$type('omi$current_menu'$name)`20.eqs.`20"" X$`09`09`20`20`20then`20$`20omi$signal`20omi`20nomnuname X$`09`09`20`20`20else X$`09`09`09omi$config`20'omi$menu_file'`20setcmd`20name`20reset X$`09`09`09if`20$status`20.eq.`20omi$_ok`20then`20$`20omi$signal`20omi`20remnam Ve X$`09`09endif X$`09`09return`20omi$_ok X$`09endif X$! X$`09omi$signal`20omi`20ivopt,reset X$! X$`20resetcommand$_cancelled: X$! X$`09omi$cmdline_clear X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_set: X$! X$!==>`09The`20OMI`20command`20SET X$! X$`09if`20omi$_p1`20.eqs.`20"" X$`09`20`20`20then X$`09`09read`20/end_of_file=setcommand$_cancelled`20sys$\1707`20omi$_p1`20- X`09`09`20`20`20/prompt="''screen$\1106_position'_What:`20"`20 X$`09`09omi$_p1`20=`20f$edit(\1107,"uncomment,trim,compress,upcase") X$`09`09omi$cmdline_clear X$`09`09goto`20main$execcmd_set X$`09endif X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"COUNTER") X$`09`20`20`20then X$`09`09if`20omi$_p2`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09read`20/end_of_file=setcommand$_cancelled`20sys$\1707`20omi$_p2`20- V X`09`09`09`20`20`20/prompt="''screen$\1106_position'_Value:`20"`20 X$`09`09`09omi$_p2`20=`20f$edit(\1107,"uncomment,trim,compress") X$`09`09`09omi$cmdline_clear X$`09`09`09goto`20main$execcmd_set X$`09`09endif X$! X$`09`09if`20f$type('omi$current_menu'$counter)`20.eqs.`20"" X$`09`09`20`20`20then`20$`20omi$signal`20omi`20nocount X$`09`09`20`20`20else X$`09`09`09_menu_counter`20=`20'omi$current_menu'$c\1D06 X$`09`09`09counter$'_menu_\0F07'`20==`20omi$_p2 X$`09`09`09init_def$search_string`20=`20- X`09`09`09`20`20`20"''omi$current_menu'$input,counter$`20/match=and" X$`09`09`09gosub`20main$default_values X$`09`09endif X$`09`09return`20omi$_ok X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"AUTO_REFRESH") X$`09`20`20`20then X$`09`09if`20omi$_p2`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09read`20/end_of_file=setcommand$_cancelled`20sys$\1707`20omi$_p2`20- V X`09`09`09`20`20`20/prompt="''screen$\1106_position'_Value:`20"`20 X$`09`09`09omi$_p2`20=`20f$edit(\1107,"uncomment,trim,compress") X$`09`09`09omi$cmdline_clear X$`09`09`09goto`20main$execcmd_set X$`09`09endif X$! X$`09`09if`20omi$_p2`20.lt.`200 X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20lowval,0 X$`09`09`09return`20$status X$`09`09endif X$`09`09if`20omi$_p2`20.gt.`20255 X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20hival,255 X$`09`09`09return`20$status X$`09`09endif X$`09`09'omi$current_menu'$auto_refresh`20=`20omi$_p2 X$`09`09return`20omi$_ok X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"WIDTH") X$`09`20`20`20then X$`09`09if`20omi$_p2`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09read`20/end_of_file=setcommand$_cancelled`20sys$\1707`20omi$_p2`20- V X`09`09`09`20`20`20/prompt="''screen$\1106_position'_Value:`20"`20 X$`09`09`09omi$_p2`20=`20f$edit(\1107,"uncomment,trim,compress") X$`09`09`09omi$cmdline_clear X$`09`09`09goto`20main$execcmd_set X$`09`09endif X$`09`09if`20omi$_p2`20.ne.`2080`20.and.`20\160D132 X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20ivswval X$`09`09`09omi$cmdline_clear X$`09`09`09omi$_p2`20=`20"" X$`09`09`09goto`20main$execcmd_set X$`09`09`20`20`20else X$`09`09`09screen$width`20==`20omi$_p2 X$`09`09`09@Omi$:Omi$Screen`20Setup X$`09`09`09omi$refresh X$`09`09`09return`20omi$_ok X$`09`09endif X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"KEY") X$`09`20`20`20then X$`09`09_config_file`20=`20f$trnlnm("Omi$Config") X$`09`09if`20_config_file`20.eqs.`20""`20then`20$\1D0E=`20"Sys$Login:Omi$Menu.C Vfg" X$`09`09if`20f$search("''_config_file'")`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20nocfg X$`09`09`09return`20omi$_warning X$`09`09endif X$! X$`09`20main$execcmd_setkey_getname: X$! X$`09`09if`20omi$_p2`20.eqs`20"" X$`09`09`20`20`20then X$`09`09`09omi$ask`20"_Key`20name:`20" X$`09`09`09omi$_p2`20=`20omi$response X$`09`09`09if`20$status`20.eq.`20omi$_cancelled`20then`20$`20return`20omi$_ok X$`09`09`09deletee`20/symbol`20/global`20omi$response X$`09`09endif X$! X$`09`09if`20f$type(keyring$'omi$_p2')`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20exkey,'omi$_p2 X$`09`09`09omi$_p2`20=`20"" X$`09`09`09goto`20main$execcmd_setkey_getname X$`09`09endif X$! X$`09`09search`20'_config_file'`20"`5Bkeyring`5D"`20/output=nla0: X$`09`09if`20$status`20.eq.`20omi$_nomatch X$`09`09`20`20`20then X$`09`09`09open`20/append`20cfgfi`20'_config_file' X$`09`09`09write`20cfgfi`20"" X$`09`09`09write`20cfgfi`20"`5Bkeyring`5D" X$`09`09`09write`20cfgfi`20"`20`20''omi$_p2'`20=`20" X$`09`09`09close`20cfgfi X$`09`09`20`20`20else X$`09`09`09open`20/read`20cfgfi`20'_config_file' X$`09`09`09open`20/write`20cfgfo`20Sys$Scratch:Omi$NewCfg._Tmp$ X$! X$`09`09`20main$execcmd_setkey_init: X$! X$`09`09`09read`20/end_of_file=main$execcmd_setkey_inited`20cfgfi`20_cfgin X$`09`09`09write`20cfgfo`20_cfgin X$`09`09`09if`20f$locate("`5Bkeyring`5D",`20f$edit(_cfgin,`20"lowercase"))`20- V X`09`09`09`20`20`20.lt.`20f$length(_cfgin)`20then`20$`20write`20cfgfo`20"&0220' V'omi$_p2'`20=`20" X$`09`09`09goto`20main$execcmd_setkey_init X$! X$`09`09`20main$execcmd_setkey_inited: X$! X$`09`09`09close`20cfgfi X$`09`09`09close`20cfgfo X$`09`09`09deletee`20/nolog`20/noconfirm`20'_config_file'; X$`09`09`09copy`20/nolog`20Sys$Scratch:Omi$NewCfg._Tmp$`20'_config_file' X$`09`09`09deletee`20/nolog`20/noconfirm`20Sys$Scratch:Omi$NewCfg._Tmp$;* X$`09`09endif X$! X$`09`20main$execcmd_setkey: X$! X$`09`09if`20omi$_p3`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09read`20/end_of_file=setcommand$_cancelled`20sys$\1707`20omi$_p3`20- V X`09`09`09`20`20`20/prompt="''screen$\1106_position'_Key:`20"`20 X$`09`09`09omi$_p3`20=`20f$edit(\1107,"uncomment,trim,compress") X$`09`09`09omi$msgline_clear X$`09`09`09omi$cmdline_clear X$`09`09`09goto`20main$execcmd_setkey X$`09`09endif X$! X$`09`09_validate_key`20=`20"omi$_p3" X$`09`09gosub`20security$key_validate X$`09`09if`20omi$_p3`20.eq.`200`20then`20$`20goto`20main$execcmd_setkey X$`09`09_key`20=`20"`20`20`81`B8`98`B9" X$`09`09_key`5B0,8`5D`20=`20%X1 X$`09`09_key`5B8,8`5D`20=`20f$integer(omi$_p3) X$`09`09@Omi$:Omi$Config`20setup`20""`20UPDATE`20"keyring"`20"''omi$_p2'"`20"'' V_key'" X$! X$`09`09if`20$status`20.eq.`20omi$_ok`20then`20$`20omi$signal`20omi`20setkey X$`09`09omi$cmdline_clear X$`09`09return`20omi$_ok X$`09endif X$! X$!`09****`20Set`20commands`20below`20are`20not`20available`20in`20OTF`20Menus V X$! X$`09if`20omi$otf_menu X$`09`20`20`20then X$`09`09omi$signal`20omi`20cmdnotav X$`09`09return`20$status X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"PASSWORD") X$`09`20`20`20then X$`09`09if`20'omi$current_menu'$security_level`20.lt.`203 X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20nopriv X$`09`09`09return`20omi$_warning X$`09`09endif X$`09`09set`20terminal`20/noecho X$! X$`09`20`20setpwd$_prompt: X$! X$`09`09read`20/end_of_file=setpasswrd$_cancelled`20sys$command`20_pwd_1`20- X`09`09`20`20`20/prompt="''screen$\1106_position'_New`20password:`20"`20 X$`09`09omi$cmdline_clear X$`09`09if`20f$length(_pwd_1)`20.lt.`205 X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20shortpwd X$`09`09`09goto`20setpwd$_prompt X$`09`09endif X$`09`09read`20/end_of_file=setpasswrd$_cancelled`20sys$command`20_pwd_2`20- X`09`09`20`20`20/prompt="''screen$\1106_position'_Verification:`20"`20 X$`09`09if`20_pwd_1`20.nes.\0D062 X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20pwdverfail X$`09`09`09goto`20setpasswrd$_cancelled X$`09`09endif X$! X$`09`09set`20terminal`20/echo X$`09`09omi$encrypt`20"''_pwd_1'"`20p$_key X$`09`09_new_password`20=`20omi$encrypted X$`09`09deletee/symbol/global`20omi$encrypted X$`09`09omi$config`20'omi$menu_file'`20setcmd`20password`20"''_new_\1108'" X$`09`09if`20$status`20.eq.`20omi$_ok`20then`20$`20omi$signal`20omi`20setpwd X$`09`09omi$cmdline_clear X$`09`09return`20omi$_ok X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"NAME") X$`09`20`20`20then X$`09`09if`20'omi$current_menu'$security_level`20.lt.`203 X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20nopriv X$`09`09`09return`20omi$_warning X$`09`09endif X$`09`09if`20omi$_p2`20.eqs.`20"" X$`09`09`20`20`20then`20$`20read`20/end_of_file=setcommand$_cancelled`20sys$ V\1707`20_new_name`20- X`09`09`09`20`20`20/prompt="''screen$\1106_position'_New`20name`20:`20"`20 X$`09`09`20`20`20else`20$`20_new_name`20=`20omi$_p2 X$`09`09endif X$`09`09omi$cmdline_clear X$! X$`09`09omi$config`20'omi$menu_file'`20setcmd`20name`20"''f$edit(_new_name,"col Vlapse")'" X$`09`09if`20$status`20.eq.`20omi$_ok`20then`20$`20omi$signal`20omi`20setname X$`09`09omi$cmdline_clear X$`09`09return`20omi$_ok X$`09endif X$! X$`09omi$signal`20omi`20ivopt,set X$! X$`20setcommand$_cancelled: X$! X$`09omi$cmdline_clear X$`09return`20omi$_ok X$! X$`20setpasswrd$_cancelled: X$! X$`09set`20terminal`20/echo X$`09omi$cmdline_clear X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_show: X$! X$!==>`09The`20OMI`20command`20SHOW X$! X$`09if`20omi$_p1`20.eqs.`20"" X$`09`20`20`20then X$`09`09read`20/end_of_file=showcommand$_cancelled`20sys$\1707`20omi$_p1`20- X`09`09`20`20`20/prompt="''screen$\1106_position'_What:`20"`20 X$`09`09omi$_p1`20=`20f$edit(\1107,"uncomment,trim,compress,upcase") X$`09`09omi$cmdline_clear X$`09`09goto`20main$execcmd_show X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"COUNTER") X$`09`20`20`20then X$`09`09if`20f$type('omi$current_menu'$counter)`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09_menu_counter`20=`20'omi$current_menu'$c\1D06 X$`09`09`09omi$signal`20omi`20counter,\0807$'_menu_\1707' X$`09`09`20`20`20else`20$`20omi$signal`20omi`20nocounter X$`09`09endif X$`09`09return`20omi$_ok X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"TEXTAREA") X$`09`20`20`20then X$`09`09gosub`20textarea$_find_ta X$`09`09if`20$status`20.ne.`20omi$_ok`20then`20$`20return`20$\2306 X$`09`09if`20_areas_found`20.gt.`201`20.and.`20omi$_p2`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20nouniqta X$`09`09`09return`20$status X$`09`09endif X$`09`09if`20omi$_p2`20.eqs.`20""`20then`20$\1809=`201 X$! X$`09`09if`20f$type`20('omi$current_menu'$ta_list'omi$_p2'_name)`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20nosuchta X$`09`09`09return`20$status X$`09`09endif X$! X$`09`09_textarea`20=`20'omi$current_menu'$ta_list'omi$_p2'_name X$`09`09if`20f$type('_textarea)`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20taempty X$`09`09`09return`20$status X$`09`09endif X$! X$`09`09_window`20=`20(`20f$extract(0,3,f$edit(screen$scroll_region,"upcase")) V`20.eqs.`20"ENA") X$`09`09if`20_window X$`09`09`20`20`20then`20$`20omi$screen`20setup_scroll_region X$`09`09`20`20`20else`20$`20cls X$`09`09endif X$`09`09ws`20'_textarea X$`09`09ws`20"" X$`09`09omi$wait X$`09`09if`20_window X$`09`09`20`20`20then`20$`20omi$screen`20erase_scroll_region X$`09`09`20`20`20else`20$`20omi$refresh X$`09`09endif X$! X$`09`09return`20omi$_ok X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"VERSION") X$`09`20`20`20then X$`09`09omi$signal`20omi`20version,omi$\0C07 X$`09`09return`20omi$_ok X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"NAME") X$`09`20`20`20then X$`09`09if`20f$type('omi$current_menu'$name)`20.eqs.`20"" X$`09`09`20`20`20then`20$`20omi$signal`20omi`20noname X$`09`09`20`20`20else X$`09`09`09_this_mnu_name`20=`20f$edit('omi$current_menu'$name,"upcase") X$`09`09`09omi$signal`20omi`20name,_this_mnu_name X$`09`09endif X$`09`09return`20omi$_ok X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"VMS_MESSAGE") X$`09`20`20`20then X$! X$`09`20main$execcmd_show_vmsmsg: X$! X$`09`09if`20omi$_p2`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09read`20/end_of_file=setcommand$_cancelled`20sys$\1707`20omi$_p2`20- V X`09`09`09`20`20`20/prompt="''screen$\1106_position'_Status`20code:`20"`20 X$`09`09`09omi$_p2`20=`20f$edit(\1107,"uncomment,trim,compress") X$`09`09`09omi$msgline_clear X$`09`09`09omi$cmdline_clear X$`09`09`09goto`20main$execcmd_show_vmsmsg X$`09`09endif X$`09`09omi$get_vmsmessage`20'omi$_p2 X$`09`09_status`20=`20$\0A06 X$`09`09if`20_status`20.eq.`20omi$_warning`20then`20$`20omi$signal`20omi`20novm Vsmsg,'omi$_p2 X$`09`09if`20_status`20.ne.`20omi$_ok`20then`20$`20return`20\2307 X$`09`09omi$display_message`20"''omi$vms\1308'" X$`09`09deletee`20/symbol`20/global`20omi$vms_message X$`09`09return`20omi$_ok X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"ORDER") X$`09`20`20`20then X$`09`09if`20f$type('omi$current_menu'$required_order)`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20noorder X$`09`09`09return`20$status X$`09`09endif X$`09`09if`20f$type('omi$current_menu'$reqwork_order)`20.eqs.`20""`20then`20- X`09`09`20`20`20$`20'omi$current_menu'$reqwork_order`20=`20- X`09`09`20`20`20f$edit('omi$current_menu'$required_order,`20"collapse") X$`09`09_cnt`20=`200 X$`09`09_msg_string`20=`20"" X$! X$`09`20show$_order_lookup: X$! X$`09`09_opt_first`20=`20f$element`20(_cnt,`20",",`20'omi$current_menu'$reqwork V_order) X$`09`09if`20_opt_first`20.eqs.`20","`20.or.`20\1A0E.`20""`20then`20- X`09`09`20`20`20$`20goto`20show$end_order_lookup X$`09`09_opt_first`20=`20\0D0B+`20inputs$highest_item X$`09`09_msg_string`20=`20\0E0C+`20"''_opt_first'/" X$`09`09_cnt`20=`20_cnt`20+`201 X$`09`09goto`20show$_order_lookup X$! X$`09`20show$end_order_lookup: X$! X$`09`09_msg_string`20=`20f$extract(0,`20f$length(\240B)-1,`20\100C X$`09`09if`20_msg_string`20.eqs.`20"" X$`09`09`20`20`20then`20$`20omi$signal`20omi`20reqselected X$`09`09`20`20`20else`20$`20omi$signal`20omi`20curorder,_msg_string X$`09`09endif X$`09`09return`20$status X$`09endif X$! X$`09omi$signal`20omi`20ivopt,show X$! X$`20showcommand$_cancelled: X$! X$`09omi$cmdline_clear X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_main: X$! X$!==>`09The`20OMI`20command`20MAIN X$! X$`09gosub`20main$perf_onexit X$`09if`20$status`20.eq.`20omi$_warning`20then`20$`20return\1B0D X$`09omi$current_menu`20=`20"menu" X$`09omi$screen`20menu X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_refresh: X$! X$!==>`09The`20OMI`20command`20REFRESH X$! X$`09omi$refresh X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_cls: X$! X$!==>`09The`20OMI`20command`20CLS X$! X$`09omi$clear_screen X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_spawn: X$! X$!==>`09The`20OMI`20command`20SPAWN X$! X$`09if`20(f$type(interactive_auth$'omi$current_user')`20.nes.`20""`20.or.`20- V X`09`20`20`20f$type(interactive_auth$all_users)`20.nes.`20"")`20.and.`20- X`09`20`20`20f$type(omi$option)`20.nes.`20"INTEGER" X$`09`20`20`20then X$`09`09if`20f$type(interactive_auth$'omi$current_user')`20.eqs.`20"" X$`09`09`20`20`20then`20$`20if`20.not.`20interactive_auth$all_users\2B06- X`09`09`09`20`20`20$`20goto`20interactive$_disallow X$`09`09`20`20`20else`20$`20if`20.not.`20interactive_auth$'omi$current_user'`20 Vthen`20- X`09`09`09`20`20`20$`20goto`20interactive$_disallow X$`09`09endif X$`09endif X$! X$`09cls X$`09set`20message`20'omi$_\0E07' X$`09if`20f$locate("ignore=dcle",`20omi$steering)`20.lt.`20f$length(\1C0E- X`09`20`20`20then`20$`20on`20error\1008continue X$`09if`20f$locate("ignore=dclf",`20omi$steering)`20.lt.`20f$length(\1C0E- X`09`20`20`20then`20$`20on`20severe_error\1708continue X$`09spawn`20'omi$_p1'\0A082\0A093\14094\1E095' X$`09if`20f$locate("ignore=dcle",`20omi$steering)`20.lt.`20f$length(\1C0E- X`09`20`20`20then`20$`20on`20error\1008goto`20main$_fatal X$`09if`20f$locate("ignore=dclf",`20omi$steering)`20.lt.`20f$length(\1C0E- X`09`20`20`20then`20$`20on`20severe_error\1708goto`20main$_fatal X$`09if`20.not.`20omi$_debug`20then`20- X`09`20`20`20$`20set`20message`20/nofacility`20/nosever\0C07identification`20/n Votext X$`09ws`20"" X$`09read`20/end_of_file=spawn$_ignore`20sys$command`20dummy`20- X`09`20`20`20/prompt="''ESC$'`5B?25l''questions$wait_\2506'`20" X$! X$`20spawn$_ignore: X$! X$`09ws`20"''ESC$'`5B?25h" X$`09omi$refresh X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_submit: X$! X$!==>`09The`20OMI`20command`20SUBMIT X$! X$`09if`20omi$_p1`20.nes.`20"" X$`09`20`20`20then X$`09`09omi$background_module`20=`20"''omi$_p1'" X$`09`09omi$_p1`20=`20"" X$`09`20`20`20else X$`09`09read`20/end_of_file=submit$_ignore`20sys$command`20omi$background_modul Ve`20- X`09`09`20`20`20/prompt="''screen$\1106_position'Module:`20" X$`09`09omi$cmdline_clear X$`09`09omi$msgline_clear X$`09endif X$`09omi$background_mode`20=`20"batch" X$`09omi$call`20omi$background_module X$`09return`20$status X$! X$`20submit$_ignore: X$! X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_all: X$! X$!==>`09The`20OMI`20command`20ALL X$! X$!`09omi$cmdline_clear X$`09if`20f$type('omi$current_menu'$input1)`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20noinput X$`09`09return`20omi$_ok X$`09endif X$! X$`09_all_inputs`20=`201 X$`09_input`20=`201 X$`09_pointer`20=`20screen$default_position`20-`201 X$! X$`20main$_getall_inputs: X$! X$`09_line`20=`20inputs$first\1406-`201`20+`20_input X$`09_variable`20=`20f$element(1,"#",'omi$current_menu'$input'_\0706) X$`09if`20f$extract(0,5,f$edit(_variable,"upcase"))`20.eqs.`20"`7BTAG`7C" X$`09`20`20`20then X$`09`09gosub`20main$_taglist X$`09`09_input`20=`20\0907+`201 X$`09`09if`20f$type('omi$current_menu'$input'_\0706)`20.nes.`20""`20then`20- X`09`09`20`20`20$`20goto`20main$_getall_inputs X$`09`09return`20omi$_ok X$`09endif X$`09ws`20f$fao("''ESC$'`5B''_line';''inputs$value_location'H!\1A09max_size'* V`20") X$`09_sel_list`20=`20(f$extract(0,5,f$edit(_variable,"upcase"))`20.eqs.`20"`7BS VEL`7C") X$`09if`20_sel_list X$`09`20`20`20then X$`09`09_select_list`20=`20f$extract(0,`20f$locate("`7D",`20_variable)`20+`201 V\100C X$`09`09_variable`20=`20\0C0A-`20_select_list X$`09`09_select_list`20=`20f$edit(\160C,"upcase")`20-`20"`7BSEL`7C"`20-`20"`7D" V X$`09`09if`20f$type('_select_list'$filename)`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09_blockname`20=`20_select_list X$`09`09`09gosub`20input$_from_file X$`09`09`09if`20$status`20.ne.`20omi$_ok`20then`20$`20return`20$\2306 X$`09`09endif X$`09`09omi$screen`20select_list X$`09endif X$! X$`20allinput$_prompt: X$! X$`09if`20f$type(list$_scroll)`20.nes.`20""`20then`20$`20deletee/symbol/local V`20\330C X$`09if`20_sel_list X$`09`20`20`20then X$`09`09_prompt`20=`20f$element(0,`20"#",'omi$current_menu'$input'_\0706) X$`09`09read`20/end_of_file=main$end_getall_inputs`20/prompt="''screen$\1106_po Vsition'''_prompt':`20"`20sys$command`20_value X$`09`20`20`20else`20$`20read`20/end_of_file=main$end_getall_inputs`20/prompt=" V''ESC$'`5B''_line';''\2306$value_location'H"`20sys$command`20_value X$`09endif X$! X$`09if`20_value`20.eqs.`20"" X$`09`20`20`20then X$`09`09if`20f$type('_variable')`20.eqs.`20"" X$`09`09`20`20`20then`20$`20_value`20=`20main$empty\1306 X$`09`09`20`20`20else X$`09`09`09_format`20=`20f$element(3,`20"#",'omi$current_menu'$input'_\0706)`20 V X$`09`09`09if`20_format`20.nes.`20""`20.and.`20\170F#" X$`09`09`09`20`20`20then X$`09`09&0209gosub`20input$_format X$`09`09&0209if`20$status`20.eq.`20omi$_warning X$`09`09&0209`20`20`20then`20 X$`09`09&0209`09omi$cmdline_clear X$`09`09&0209`09ws`20f$fao("''ESC$'`5B''_line';''inputs$value_location'H!\1A09m Vax_size'*`20") X$`09`09&0209`09goto`20allinput$_prompt X$`09`09&0209endif X$`09`09&0209omi$cmdline_clear X$`09`09&0209_value`20=`20'_variable' X$`09`09`09endif X$`09`09`09_value`20=`20'_variable' X$`09`09endif X$`09`20`20`20else X$`09`09if`20_sel_list X$`09`09`20`20`20then X$`09`09`09if`20f$edit(f$extract(0,`201,`20_value),"upcase")`20.eqs.`20"N" X$`09`09`09`20`20`20then X$`09`09&0209deletee`20/symbol`20/local`20_value X$`09`09&0209list$_scroll`20=`20"NEXT" X$`09`09&0209omi$screen`20select_list X$`09`09&0209omi$cmdline_clear X$`09`09&0209goto`20allinput$_prompt X$`09`09`09endif X$`09`09`09if`20f$edit(f$extract(0,`201,`20_value),"upcase")`20.eqs.`20"P" X$`09`09`09`20`20`20then X$`09`09&0209deletee`20/symbol`20/local`20_value X$`09`09&0209list$_scroll`20=`20"PREVIOUS" X$`09`09&0209omi$screen`20select_list X$`09`09&0209omi$cmdline_clear X$`09`09&0209goto`20allinput$_prompt X$`09`09`09endif X$! X$`09`09`09_selected`20=`20'_value' X$`09`09`09if`20f$type(_selected)`20.nes.`20"INTEGER"`20.or.`20- X`09`09`09`20`20`20f$type('_select_list'$value\1408ed')`20.eqs.`20"" X$`09`09`09`20`20`20then X$`09`09&0209omi$signal`20omi`20ivchoice X$`09`09&0209omi$cmdline_clear X$`09`09&0209ws`20f$fao("''ESC$'`5B''_line';''inputs$value_location'H!\1A09max_ Vsize'*`20") X$`09`09&0209goto`20allinput$_prompt X$`09`09`09endif X$`09`09`09if`20f$type(scroll$previous_page)`20.nes.`20""`20then`20- X`09`09`09`20`20`20$`20deletee/symbol/global`20scroll$previous_page X$`09`09`09if`20f$type(scroll$this_page)`20.nes.`20""`20then`20- X`09`09`09`20`20`20$`20deletee/symbol/global`20scroll$this_page X$`09`09`09if`20f$type(scroll$next_page)`20.nes.`20""`20then`20- X`09`09`09`20`20`20$`20deletee/symbol/global`20scroll$next_page X$`09`09`09if`20f$type(scroll$max_on_page)`20.nes.`20""`20then`20- X`09`09`09`20`20`20$`20deletee/symbol/global`20scroll$max_on_page X$`09`09&0209omi$refresh X$`09`09`09'_variable'`20=`20'_select_list'$value'\1407ed' X$`09`09`20`20`20else X$`09`09`09'_variable'`20=`20_value X$`09`09`09_format`20=`20f$element(3,`20"#",'omi$current_menu'$input'_\0706)`20 V X$`09`09`09if`20_format`20.nes.`20""`20.and.`20\170F#" X$`09`09`09`20`20`20then X$`09`09&0209gosub`20input$_format X$`09`09&0209if`20$status`20.eq.`20omi$_warning X$`09`09&0209`20`20`20then`20 X$`09`09&0209`09omi$cmdline_clear X$`09`09&0209`09ws`20f$fao("''ESC$'`5B''_line';''inputs$value_location'H!\1A09m Vax_size'*`20") X$`09`09&0209`09goto`20allinput$_prompt X$`09`09&0209endif X$`09`09&0209omi$cmdline_clear X$`09`09&0209_value`20=`20'_variable' X$`09`09`09endif X$`09`09endif X$`09endif X$! X$`09_blanks`20=`20inputs$max_size`20-`20f$length(_value)`20+`201 X$`09if`20f$length(_value)`20.le.`20inputs$max_size X$`09`20`20`20then`20$`20ws`20f$fao("''ESC$'`5B''_line';''inputs$value_location V'H''_value'!''_blanks'*`20") X$`09`20`20`20else`20$`20ws`20"''ESC$'`5B''_line';''inputs$value_location'H''f$ Vextract(0,\2507max_size,_value)''\5006(0`60\0A08B" X$`09endif X$`09_input`20=`20\0907+`201 X$`09if`20f$type('omi$current_menu'$input'_\0706)`20.nes.`20""`20then`20- X`09`20`20`20$`20goto`20main$_getall_inputs X$! X$`20main$end_getall_inputs: X$! X$`09if`20_sel_list`20then`20$`20omi$refresh X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$!==>`09The`20OMI`20command`20(SILENT_)DCL X$! X$`20main$execcmd_silent_dcl: X$! X$`09_silent`20=`201 X$`09goto`20dclcommand$ X$! X$`20main$execcmd_dcl: X$! X$`09_silent`20=`200 X$`09goto`20dclcommand$ X$! X$`20dclcommand$: X$! X$`09if`20(f$type(interactive_auth$'omi$current_user')`20.nes.`20""`20.or.`20- V X`09`20`20`20f$type(interactive_auth$all_users)`20.nes.`20"")`20.and.`20- X`09`20`20`20f$type(omi$option)`20.nes.`20"INTEGER" X$`09`20`20`20then X$`09`09if`20f$type(interactive_auth$'omi$current_user')`20.eqs.`20"" X$`09`09`20`20`20then`20$`20if`20.not.`20interactive_auth$all_users\2B06- X`09`09`09`20`20`20$`20goto`20interactive$_disallow X$`09`09`20`20`20else`20$`20if`20.not.`20interactive_auth$'omi$current_user'`20 Vthen`20- X`09`09`09`20`20`20$`20goto`20interactive$_disallow X$`09`09endif X$`09endif X$! X$`09if`20omi$_p1`20.eqs.`20"" X$`09`20`20`20then X$`09`09read`20/end_of_file=dclcommand$_cancelled`20sys$\1707`20omi$_p1`20- X`09`09`20`20`20/prompt="''screen$\1106_position'''questions$dcl_command':`20" V`20 X$`09`09omi$_p1`20=`20f$edit(\1107,"uncomment,trim,compress") X$`09`09if`20omi$_p1`20.eqs.`20""`20then`20$`20goto`20`20main$execcmd_dcl X$`09`09omi$_p2`20=`20f$edit(f$element(1,"`20",\21061),"trim") X$`09`09omi$_p3`20=`20f$edit(f$element(2,"`20",\21061),"trim") X$`09`09omi$_p4`20=`20f$edit(f$element(3,"`20",\21061),"trim") X$`09`09omi$_p5`20=`20f$edit(f$element(4,"`20",\21061),"trim") X$`09`09omi$_p1`20=`20f$edit(f$element(0,"`20",\2107),"trim") X$`09endif X$`09if`20_silent X$`09`20`20`20then X$`09`09assign`20/nolog`20"''main$silent_output'"`20sys$\0D06 X$`09`09assign`20/nolog`20"''main$silent_output'"`20sys$error X$`09`09goto`20dclcommand$do_it X$`09endif X$`09_window`20=`20(`20f$extract(0,3,f$edit(screen$scroll_region,"upcase"))`20. Veqs.`20"ENA") X$`09if`20_window X$`09`20`20`20then`20$`20omi$screen`20setup_scroll_region X$`09`20`20`20else`20$`20cls X$`09endif X$! X$`20dclcommand$do_it: X$! X$`09set`20message`20'omi$_\0E07' X$`09if`20f$locate("ignore=dcle",`20omi$steering)`20.lt.`20f$length(\1C0E- X`09`20`20`20then`20$`20on`20error\1008continue X$`09if`20f$locate("ignore=dclf",`20omi$steering)`20.lt.`20f$length(\1C0E- X`09`20`20`20then`20$`20on`20severe_error\1708continue X$`09'omi$_p1'`20\0A072\0A093\14094\1E095' X$`09set`20on X$`09if`20f$locate("ignore=dcle",`20omi$steering)`20.lt.`20f$length(\1C0E- X`09`20`20`20then`20$`20on`20error\1008goto`20main$_fatal X$`09if`20f$locate("ignore=dclf",`20omi$steering)`20.lt.`20f$length(\1C0E- X`09`20`20`20then`20$`20on`20severe_error\1708goto`20main$_fatal X$`09if`20_silent X$`09`20`20`20then X$`09`09_silent_status`20=`20$\0A06 X$`09`09deassign`20sys$output X$`09`09deassign`20sys$error X$`09`09deletee`20/symbol`20/local`20_silent X$`09`09omi$display_message`20f$\0A07(_silent_status) X$`09`09goto`20dclcommand$_cancelled X$`09endif X$! X$`09ws`20"" X$`20`20`09read`20/end_of_file=dclcommand$_ignore`20sys$\1407`20dummy`20- X`09`20`20`20/prompt="''ESC$'`5B?25l''questions$wait_\2506'`20" X$! X$`20dclcommand$_ignore: X$! X$`09ws`20"''ESC$'`5B?25h" X$`09if`20_window X$`09`20`20`20then`20$`20omi$screen`20erase_scroll_region X$`09`20`20`20else`20$`20omi$refresh X$`09endif X$! X$`20dclcommand$_cancelled: X$! X$`09if`20.not.`20omi$_debug`20then`20- X`09`20`20`20$`20set`20message`20/nofacility`20/nosever\0C07identification`20/n Votext X$`09omi$cmdline_clear X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_delete: X$! X$!==>`09The`20OMI`20command`20DELETE X$! X$`09if`20omi$_p1`20.eqs.`20"" X$`09`20`20`20then X$`09`09read`20/end_of_file=deletecommand$_cancelled`20sys$\1707`20omi$_p1`20- V X`09`09`20`20`20/prompt="''screen$\1106_position'_What:`20"`20 X$`09`09omi$_p1`20=`20f$edit(\1107,"uncomment,trim,compress,upcase") X$`09`09omi$cmdline_clear X$`09`09goto`20main$execcmd_delete X$`09endif X$! X$`09if`20f$length(omi$_p1)`20.ge.`203`20.and.`20\1607`20.eqs.`20f$extract(0, V\3A12,`20"TEXTAREA") X$`09`20`20`20then X$`09`09if`20'omi$current_menu'$security_level`20.lt.`203 X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20nopriv X$`09`09`09return`20omi$_warning X$`09`09endif X$`09`09gosub`20textarea$_find_ta X$`09`09if`20$status`20.ne.`20omi$_ok`20then`20$`20return`20$\2306 X$`09`09if`20_areas_found`20.gt.`201`20.and.`20omi$_p2`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20nouniqta X$`09`09`09return`20$status X$`09`09endif X$`09`09if`20omi$_p2`20.eqs.`20""`20then`20$\1809=`201 X$! X$`09`09if`20f$type`20('omi$current_menu'$ta_list'omi$_p2'_name)`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20nosuchta X$`09`09`09return`20$status X$`09`09endif X$! X$`09`09if`20.not.`20'omi$current_menu'$ta_list'omi$_p2'_keep X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20tatemp X$`09`09`09return`20$status X$`09`09endif X$! X$`09`09_textarea_file`20=`20'omi$current_menu'$ta_list'omi$_p2'_file X$`09`09if`20f$search(_textarea_file)`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20tafnf X$`09`09`09return`20$status X$`09`09endif X$! X$`09`09if`20questions$confirm X$`09`09`20`20`20then X$`09`09`09_cq`20=`20"Delete`20"`20+`20_textarea_file`20+`20"*`20?`20" X$`09`09`09omi$confirm`20"''_cq'"`20'questions$answer_no X$`09`09`09if`20.not.`20omi$confirmed`20then`20$`20return`20omi$_ok X$`09`09endif X$`09`09deletee`20/nolog`20/noconfirm`20'_textarea_file'* X$! X$`09`09_textarea`20=`20'omi$current_menu'$ta_list'omi$_p2'_name X$`09`09if`20f$type('_textarea)`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09deletee`20/symbol`20/local`20'_textarea X$`09`09endif X$! X$`09`09return`20omi$_ok X$`09endif X$! X$`09omi$signal`20omi`20ivopt,delete X$! X$`20deletecommand$_cancelled: X$! X$`09omi$cmdline_clear X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_manage: X$! X$!==>`09The`20OMI`20command`20MANAGE X$! X$`09if`20omi$_p1`20.eqs.`20"BACK" X$`09`20`20`20then X$`09`09omi$_p1`20=`20omi$manage_started_from X$`09`20`20`20else X$`09`09if`20f$edit(omi$menu_file,"upcase")`20.eqs.`20"OMI$MANAGE" X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20manage X$`09`09`09return`20omi$_ok X$`09`09endif X$`09`09omi$manage_started_from`20=`20"''omi$menu_file'" X$`09`09omi$_p1`20=`20"OMI$MANAGE" X$`09endif X$`09goto`20main$execcmd_menu X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_menu: X$! X$!==>`09The`20OMI`20command`20MENU X$! X$`09gosub`20main$perf_onexit X$`09if`20$status`20.eq.`20omi$_warning`20then`20$`20return\1B0D X$`09if`20f$edit(omi$current_menu,"upcase")`20.nes.`20"MENU" X$`09`20`20`20then X$`09`09omi$current_menu`20=`20"menu" X$`09`09gosub`20main$perf_onexit X$`09`09if`20$status`20.eq.`20omi$_warning X$`09`09`20`20`20then X$`09`09`09omi$screen`20menu X$`09`09`09return`20omi$_warning X$`09`09endif X$`09endif X$`09_ref_on_cancel`20=`200 X$! X$`20newmenu$_get: X$! X$`09if`20omi$_p1`20.nes.`20"" X$`09`20`20`20then X$`09`09omi$new_menu_file`20=`20"''omi$_p1'" X$`09`09omi$_p1`20=`20"" X$`09`20`20`20else X$`09`09read`20/end_of_file=newmenu$_ignored`20sys$command`20omi$new_menu_file V`20- X`09`09`20`20`20/prompt="''screen$\1106_position'Menu`20file:`20" X$`09`09omi$cmdline_clear X$`09`09omi$msgline_clear X$`09endif X$`09if`20omi$new_menu_file`20.eqs.`20"?" X$`09`20`20`20then X$`09`09_ref_on_cancel`20=`201 X$`09`09omi$call`20list_files`20omi$:*.mnu,omi$menu_directory\1906`20name X$`09`09goto`20newmenu$_get X$`09endif X$! X$`09omi$previous_menu_file`20=`20"''omi$\1309'" X$`09omi$menu_file`20=`20"''omi$new_\1709'" X$! X$`09omi$signal`20omi`20erasmnu X$`09omi$config`20"''omi$previous_menu_file'"`20Cleanup X$`09omi$msgline_clear X$`09omi$signal`20omi`20init X$`09omi$config`20'omi$menu_file X$`09if`20$status`20.ge.`20omi$_warning X$`09`20`20`20then X$`09`09omi$signal`20omi`20restmnu X$`09`09omi$config`20"''omi$menu_file'"`20Cleanup X$`09`09omi$msgline_clear X$`09`09omi$menu_file`20=`20"''omi$previous_\1C09'" X$`09`09omi$signal`20omi`20init X$`09`09omi$config`20'omi$menu_file X$`09endif X$`09omi$refresh X$`09return`20omi$_ok X$! X$`20newmenu$_ignored: X$! X$`09if`20_ref_on_cancel X$`09`20`20`20then`20$`20omi$refresh X$`09`20`20`20else X$`09`09omi$cmdline_clear X$`09`09omi$msgline_clear X$`09endif X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$`20main$execcmd_add: X$`20main$execcmd_modify: X$`20main$execcmd_remove: X$`20main$execcmd_rename: X$! X$!==>`09The`20OMI`20command`20...`20`20&0220`20!Preparing... X$! X$`09omi$signal`20omi`20not_yet X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X$! X$!==>`09Display`20an`20error`20message`20if`20users`20that`20don't`20have`20th Ve`20privileges`20try X$!`09to`20execute`20an`20interactive`20command`20(using`20SPAWN`20or`20DCL) X$! X$`20interactive$_disallow: X$! X$`09omi$signal`20omi`20nodclprv X$`09return`20$status X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09The`20enhanced`20textarea`20support`20in`20v1.41`20comes`20with`20some V`20extra`20commands. X$!`09This`20routines`20is`20created`20to`20find`20the`20textareas`20in`20the V`20current`20menu, X$!`09and`20their`20attributes. X$! X$`20textarea$_find_ta: X$! X$`09_input_counter`20=`200 X$`09_areas_found`20`20`20=`200 X$! X$`20textarea$_loop_ta: X$! X$`09_input_counter`20=`20\110F+`201 X$`09if`20f$type('omi$current_menu'$input'_input_counter')`20.eqs.`20""`20then V`20- X`09`20`20`20$`20goto`20textarea$end_loop_ta X$`09_format`20=`20f$element(3,`20"#",`20'omi$current_menu'$input'_input_counte Vr')`20 X$`09if`20_format`20.eqs.`20""`20.or.`20\160F#"`20then`20$`20goto`20textarea$_l Voop_ta X$`09if`20f$edit('_format'$type,`20"upcase")`20.nes.`20"TEXTAREA"`20then`20$`20 Vgoto`20textarea$_loop_ta X$`09_areas_found`20=`20\0F0D+`201 X$`09'omi$current_menu'$ta_list'_areas_found'_name`20=`20- X`09`20`20`20f$element(1,`20"#",`20'omi$current_menu'$input'_input_counter') X$! X$`09if`20f$type('_format'$keep)`20.eqs.`20"" X$`09`20`20`20then`20$`20'omi$current_menu'$ta_list'_areas_found'_keep`20=`200 V X$`09`20`20`20else`20$`20'omi$current_menu'$ta_list'_areas_found'_keep`20=`20'_ Vformat'$keep X$`09endif X$! X$`09if`20f$type('_format'$filename)`20.nes.`20"" X$`09`20`20`20then`20$`20'omi$current_menu'$ta_list'_areas_found'_file`20=`20- V X`09`09`20`20`20'_format'$filename X$`09`20`20`20else`20$`20'omi$current_menu'$ta_list'_areas_found'_file`20=`20- V X`09`09`20`20`20"ta_''omi$current_menu'$input''_input_counter'" X$`09endif X$`09'omi$current_menu'$ta_list'_areas_found'_file`20=`20- X`09`20`20`20f$parse('omi$current_menu'$ta_list'_areas_found'_file,`20"Omi$Menu V_Directory:",`20".txt") X$! X$`09goto`20textarea$_loop_ta X$! X$`20textarea$end_loop_ta: X$! X$`09if`20_areas_found`20.eq.`200 X$`09`20`20`20then X$`09`09omi$signal`20omi`20notextarea X$`09`09return`20$status X$`09endif X$! X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Find`20out`20is`20a`20securoty`20level`20is`20defined`20for`20the`20cu Vrrent`20menu.`20If`20so, X$!`09act`20upon`20it.`20If`20there's`20no`20security,`20return`20the`20default V`20value,`20which X$!`09is`20'2',`20meaning`20read`20and`20exec`20access`20for`20all`20users. X$!`09If`20the`20current`20user`20is`20the`20owner`20of`20this`20(sub)`20menu, V`20the`20security X$!`09level`20will`20allways`20be`20'3'`20(read,`20exec`20and`20write). X$! X$`20main$check_security: X$! X$`09if`20f$type('omi$current_menu'$owner)`20.nes.`20"" X$`09`20`20`20then`20$`20_owner`20=`20'omi$current_menu'$owner X$`09`20`20`20else X$`09`09if`20f$type(menu$owner)`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09_owner`20=`20menu$owner X$`09`09endif X$`09endif X$! X$`09if`20f$type('omi$current_menu'$password)`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20f$type('omi$current_menu'$ip_pintr)`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09if`20'omi$current_menu'$ip_pintr`20.eq.`203 X$`09`09`09`20`20`20then X$`09`09&0209'omi$current_menu'$security_level`20=`20-2 X$`09`09&0209omi$signal`20omi`20suspintr X$`09`09&0209return`20omi$_warning X$`09`09`09endif X$`09`09endif X$`09`09if`20'omi$current_menu'$password`20.eqs.`20"" X$`09`09`20`20`20then X$`09`09`09omi$encrypt`20"Omi$System"`20p$_key X$`09`09`09'omi$current_menu'$password`20==`20omi$encrypted X$`09`09`09deletee`20/symbol`20/global`20omi$encrypted X$`09`09endif X$`09`09_retries`20=`201 X$! X$`09`20`20`20password$get_input: X$! X$`09`09on`20control_y`20then`20$`20goto`20password$cancel_input X$`09`09set`20terminal`20/noecho X$`09`09read`20/end_of_file=password$cancel_input`20/prompt="''screen$\1106_pos Vition'P\3807:`20"`20sys$command`20_p\5107 X$`09`09omi$msgline_clear X$`09`09goto`20password$_decrypt X$! X$`09`20`20`20password$cancel_input: X$! X$`09`09'omi$current_menu'$security_level`20=`20-1 X$`09`09on`20control_y`20then`20$`20goto`20main$_interrupt X$`09`09omi$cmdline_clear X$`09`09set`20terminal`20/echo X$`09`09return`20omi$_ok X$! X$`09`20`20`20password$_decrypt: X$! X$`09`09on`20control_y`20then`20$`20goto`20main$_interrupt X$`09`09omi$cmdline_clear X$`09`09set`20terminal`20/echo X$`09`09omi$variable`20=`20"_password" X$`09`09omi$input_validate X$`09`09if`20$status`20.eq.`20omi$_error X$`09`09`20`20`20then X$`09`09`09'omi$current_menu'$security_level`20=`20-1 X$`09`09`09return`20omi$_warning X$`09`09endif X$`09`09_encryptd`20=`20'omi$current_menu'$password X$`09`09omi$decrypt`20"''_encryptd'"`20p$_key X$`09`09_decryptd`20=`20"''omi$\1207ed'" X$`09`09deletee/symbol/local`20_encryptd X$`09`09deletee/symbol/global`20omi$decrypted X$`09`09if`20_password`20.nes.`20_decryptd X$`09`09`20`20`20then X$`09`09`09'omi$current_menu'$security_level`20=`20-1 X$`09`09`09deletee/symbol/local`20_decryptd X$`09`09`09if`20_retries`20.lt.`203 X$`09`09`09`20`20`20then X$`09`09&0209_retries`20=`20\0B09+`201 X$`09`09&0209omi$signal`20omi`20ivpassw X$`09`09&0209goto`20password$get_input X$`09`09`09endif X$`09`09`09if`20f$type('omi$current_menu'$ip_pintr)`20.eqs.`20"" X$`09`09`09`20`20`20then`20$`20'omi$current_menu'$ip_pintr`20==`201 X$`09`09`09`20`20`20else`20$`20'omi$current_menu'$ip_pintr`20==`20- X`09`09&0209`20`20`20'omi$current_menu'$ip_pintr`20+`201 X$`09`09`09endif X$`09`09`09return`20omi$_warning X$`09`09endif X$`09`09deletee/symbol/local`20_decryptd X$`09`09if`20f$type('omi$current_menu'$ip_pintr)`20.nes.`20""`20then`20- X`09`09`20`20`20$`20deletee`20/symbol`20/global`20'omi$current_menu'$ip_pintr X$! X$`09`09if`20f$type('omi$current_menu'$password_level)`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09'omi$current_menu'$security_level`20=`20\2413password\2406 X$`09`09`09return`20omi$_ok X$`09`09endif X$`09endif X$! X$`09if`20f$type(_owner)`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20f$locate(omi$current_user,`20f$edit(_owner,"upcase"))`20.lt.`20- X`09`09`20`20`20f$length(f$edit(_owner,"upcase")) X$`09`09`20`20`20then X$`09`09`09'omi$current_menu'$security_level`20=`203 X$`09`09`09deletee/symbol/local`20_owner X$`09`09`09return`20omi$_ok X$`09`09endif X$`09endif X$! X$`09if`20f$type('omi$current_menu'$security)`20.eqs.`20"" X$`09`20`20`20then X$`09`09'omi$current_menu'$security_level`20=`202 X$`09`09return`20omi$_ok X$`09endif X$! X$`09_security`20=`20'omi$current_menu'$\1E08 X$! X$`09if`20f$type('_security'$'omi$current_user')`20.nes.`20"" X$`09`20`20`20then`20$`20_authorisation`20=`20f$edit('_security'$'omi$current_u Vser',"upcase") X$`09`20`20`20else`20$`20if`20f$type('_security'$all_users)`20.nes.`20""`20then V`20- X`09`09`20`20&0220$`20_authorisation`20=`20f$edit('_security'$all_users,"upcase V") X$`09endif X$! X$`09if`20f$type(_authorisation)`20.eqs.`20"" X$`09`20`20`20then X$`09`09'omi$current_menu'$security_level`20=`200 X$`09`09return`20omi$_ok X$`09endif X$! X$`09if`20f$locate("WRITE",_authorisation)`20.lt.`20f$length(\1E0F X$`09`20`20`20then X$`09`09deletee/symbol/local`20_authorisation X$`09`09'omi$current_menu'$security_level`20=`203 X$`09`09return`20omi$_ok X$`09endif X$! X$`09if`20f$locate("EXEC",_authorisation)`20.lt.`20f$length(\1E0F X$`09`20`20`20then X$`09`09deletee/symbol/local`20_authorisation X$`09`09'omi$current_menu'$security_level`20=`202 X$`09`09return`20omi$_ok X$`09endif X$! X$`09if`20f$locate("READ",_authorisation)`20.lt.`20f$length(\1E0F X$`09`20`20`20then X$`09`09deletee/symbol/local`20_authorisation X$`09`09'omi$current_menu'$security_level`20=`201 X$`09`09return`20omi$_ok X$`09endif X$! X$`09deletee/symbol/local`20_authorisation X$`09'omi$current_menu'$security_level`20=`200 X$`09return`20omi$_ok X$! X$`20security$key_validate: X$! X$`09if`20f$type('_validate_key')`20.nes.`20"INTEGER" X$`09`20`20`20then X$`09`09omi$signal`20omi`20ivkeyval X$`09`09'_validate_key'`20=`20"" X$`09`09return`20omi$_ok X$`09endif X$! X$`09if`20'_validate_key'`20.lt.`201`20.or.`20\1C11gt.`201000000 X$`09`20`20`20then X$`09`09omi$signal`20omi`20ivkeyval X$`09`09'_validate_key'`20=`20"" X$`09`09return`20omi$_warning X$`09endif X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09The`20main`20exit`20routines.`20The`20cleanup`20procedure`20is`20calle Vd`20with`20a`20parameter X$!`09that`20indicates`20whether`20or`20not`20the`20screen`20should`20be`20eras Ved.`20In`20case`20or X$!`09errors,`20we`20don't`20want`20to,`20since`20that`20would`20also`20erase V`20the`20messages. X$! X$`20main$_interrupt: X$! X$`09if`20f$type(_silent)`20.nes.`20""`20 X$`09`20`20`20then X$`09`09if`20_silent`20`20&0220&0220!`20In`20case`20the`20interrupt`20was`20dur Ving`20SILENT_DCL X$`09`09`20`20`20then X$`09`09`09deassign`20sys$output X$`09`09`09deassign`20sys$error X$`09`09endif X$`09endif X$`09omi$_cls`20=`20"NOCLS" X$`09gosub`20main$_cleanup X$`09ws`20"%OMI-S-BYEBYE,`20done!" X$`09set`20message`20'omi$_\0E07'`20`20&0220&0220!`20Just`20in`20case... X$`09if`20.not.`20omi$_debug X$`09`20`20`20then`20$`20if`20omi$_verify\1608set`20\1206 X$`09endif X$`09exit`20%X28 X$! X$`20main$_fatal: X$! X$`09if`20f$type(_silent)`20.nes.`20""`20 X$`09`20`20`20then X$`09`09if`20_silent`20`20&0220&0220!`20In`20case`20the`20error`20was`20during V`20SILENT_DCL X$`09`09`20`20`20then X$`09`09`09deassign`20sys$output X$`09`09`09deassign`20sys$error X$`09`09endif X$`09endif X$`09omi$_cls`20=`20"NOCLS" X$`09gosub`20main$_cleanup X$`09ws`20"%OMI-S-BYEBYE,`20done!" X$`09set`20message`20'omi$_\0E07'`20`20&0220&0220!`20Just`20in`20case... X$`09if`20.not.`20omi$_debug X$`09`20`20`20then`20$`20if`20omi$_verify\1608set`20\1206 X$`09endif X$`09exit`20%X2c X$! X$`20main$_exit: X$! X$`09omi$_cls`20=`20"CLS" X$`09gosub`20main$_cleanup X$`09ws`20"%OMI-S-BYEBYE,`20done!" X$`09set`20message`20'omi$_\0E07'`20`20&0220&0220!`20Workaround....`20there's V`20a`20bug`20somewhere X$`09if`20.not.`20omi$_debug X$`09`20`20`20then`20$`20if`20omi$_verify\1608set`20\1206 X$`09endif X$`09if`20f$trnlnm("omi$menu_directory")`20.eqs.`20"OMI$"`20then`20- X`09`20`20`20deassign`20omi$menu_directory X$! X$`20main$_final_bye: X$! X$`09exit`201 X$! X$`20main$otf_exit: X$! X$`09exit`201 X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09When`20this`20procedure`20initializes,`20following`20options`20are`20c Vhecked`20to X$!`09find`20the`20start`20menu.`20If`20it`20ain't`20given`20as`20a`20parameter V,`20the`20procedure X$!`09looks`20for`20the`20file`20Omi$Menu.Mnu`20in`20the`20current`20directory. V`20Next,`20a X$!`09logical`20is`20checked`20to`20find`20a`20user`20specified`20default.`20Fi Vnally,`20the X$!`09procedure`20looks`20for`20the`20file`20Omi$Menu.Mnu`20in`20Sys$Login. X$!`09The`20order`20in`20which`20this`20takes`20place`20can`20be`20modified`20u Vsing`20the`20 X$!`09'search_path'`20variable`20in`20the`20'main'`20section`20of`20the`20confi Vguration X$!`09file,`20except`20for`20the`20parameter;`20this`20will`20allways`20overrul Ve`20everything X$!`09else. X$! X$`20main$_getstart: X$! X$`09if`20options$_startmenu`20.nes.`20"" X$`09`20`20`20then X$`09`09omi$startmenu`20=`20"''f$parse(options$_\2009,,,"name")'.MNU" X$`09`09return`20omi$_ok X$`09endif X$! X$`09if`20f$trnlnm("Omi$StartMenu")`20.nes.`20"" X$`09`20`20`20then X$`09`09omi$startmenu`20=`20"''f$parse(f$trnlnm("Omi$StartMenu"),,,"name")'.MNU V" X$`09`09return`20omi$_ok X$`09endif X$! X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Look`20for`20command`20line`20parameters.`20These`20can`20be`20regular V`20options X$!`09(menu`20name,`20jump`20options),`20or`20qualifiers,`20if`20they`20start V`20with`20a`20slash. X$!`09If`20qualifiers`20are`20used,`20the`20first`20parameter`20(menu`20name) V`20is`20required. X$! X$`20main$_parse_options: X$! X$`09omi$steering`20=`20"" X$`09param$_counter`20=`200 X$`09param$_regular`20=`201 X$! X$`20params$_loop: X$! X$`09param$_counter`20=`20\110F+`201 X$`09if`20p'param$_counter`20.eqs.`20""`20then`20$`20goto`20params$end_loop X$`09if`20f$extract(0,1,p'param$_counter)`20.eqs.`20"/"`20then`20$`20goto`20par Vams$_qualeval X$`09if`20f$locate("/",`20p'param$_counter)`20.lt.`20f$length(\2011 X$`09`20`20`20then X$`09`09_this_parameter`20=`20f$element(0,`20"/",`20p'param$_counter) X$`09`09_this_qualifier`20=`20p'param$_counter`20-`20\2506parameter X$`09`09p'param$_counter`20=`20_this_parameter X$`09`09deletee`20/symbol`20/local`20_this_parameter X$`09endif X$`09if`20param$_regular`20.eq.`201`20then`20$`20options$_startmenu`20=`20p' V\3407counter X$`09if`20param$_regular`20.eq.`202`20then`20$`20options$_menuname`20`20=`20p' V\3407counter X$`09if`20param$_regular`20.eq.`203`20then`20$`20options$_jumps`20`20&0220`20= V`20p'\3407counter X$`09param$_regular`20=`20\110F+`201 X$`09if`20f$type(_this_qualifier)`20.nes.`20"" X$`09`20`20`20then X$`09`09p'param$_counter`20=`20_this_qualifier X$`09`09deletee`20/symbol`20/local`20_this_qualifier X$`09`09goto`20params$_qualeval X$`09endif X$`09goto`20params$_loop X$! X$`20params$_qualeval: X$! X$`09qual$_counter`20=`201 X$! X$`20quals$_loop: X$! X$`09_qualifier`20=`20f$element(qual$_counter,`20"/",`20p'param\1709) X$`09if`20_qualifier`20.eqs.`20"/"`20then`20$`20goto`20params$_loop X$`09qual$_name`20`20=`20f$edit(f$element(0,`20"=",`20_qualifier),"upcase") X$`09qual$_value`20=`20f$edit(f$element(1,`20"=",`20_qualifier),"upcase") X$`09if`20qual$_value`20.eqs.`20"="`20then`20$\1D0D=`20"" X$`09_value_specified`20=`20(qual$\1906`20.nes.`20"") X$! X$`09if`20f$extract(0,`202,`20qual$_name)`20.eqs.`20"NO" X$`09`20`20`20then X$`09`09qual$_name`20=`20f$extract(2,`20f$length(\230A)`20-`202,`20\110B X$`09`09_negate`20=`201 X$`09`20`20`20else`20$`20_negate`20=`200 X$`09endif X$! X$`09if`20_negate`20.and.`20_value_specified`20then`20$`20goto`20qual$notneg_er Vror X$! X$`09if`20f$length(qual$_name)`20.lt.`203`20then`20$`20goto`20qual$abkeyw_error V X$`09qual$_counter`20=`20\100E+`201 X$! X$!==>`09/`5BNO`5DDEBUG`20qualifier X$! X$`09if`20qual$_name`20.eqs.`20f$extract(0,`20f$length(\270A),`20"DEBUG") X$`09`20`20`20then X$`09`09if`20_value_specified X$`09`09`20`20`20then`20$`20omi$_debug`20=`20qual$_value X$`09`09`20`20`20else`20$`20omi$_debug`20=`20(_negate`20.eq.`200) X$`09`09endif X$`09`09if`20omi$_debug X$`09`09`20`20`20then`20$`20if`20omi$_verify\1608set`20\1206 X$`09`09endif X$`09`09goto`20quals$_loop X$`09endif X$! X$!==>`09/SUBMENU=menu-name`20qualifier X$! X$`09if`20qual$_name`20.eqs.`20f$extract(0,`20f$length(\270A),`20"SUBMENU") X$`09`20`20`20then X$`09`09if`20_negate`20then`20$`20goto`20quals$_loop X$`09`09if`20qual$_value`20.eqs.`20""`20then`20$`20goto\2106valreq_error X$`09`09options$_menuname`20`20=`20"''qual$_value'" X$`09`09goto`20quals$_loop X$`09endif X$! X$!==>`09/JUMPS=jumps`20qualifier X$! X$`09if`20qual$_name`20.eqs.`20f$extract(0,`20f$length(\270A),`20"JUMPS") X$`09`20`20`20then X$`09`09if`20_negate`20then`20$`20goto`20quals$_loop X$`09`09if`20qual$_value`20.eqs.`20""`20then`20$`20goto\2106valreq_error X$`09`09options$_jumps`20`20=`20"''qual$_value'" X$`09`09goto`20quals$_loop X$`09endif X$! X$!==>`09/VALIDATE`5B=log-file`5D X$! X$`09if`20qual$_name`20.eqs.`20f$extract(0,`20f$length(\270A),`20"VALIDATE") X$`09`20`20`20then X$`09`09if`20_negate`20then`20$`20goto`20quals$_loop X$`09`09omi$validate_mode`20=`201 X$`09`09if`20qual$_value`20.eqs.`20"" X$`09`09`20`20`20then`20$`20validate$log_file`20=`20"" X$`09`09`20`20`20else`20$`20validate$log_file`20=`20"''qual$_value'" X$`09`09endif X$`09`09omi$progress`20=`200 X$`09`09goto`20quals$_loop X$`09endif X$! X$!==>`09/BATCH`20qualifier X$! X$`09if`20qual$_name`20.eqs.`20f$extract(0,`20f$length(\270A),`20"BATCH") X$`09`20`20`20then X$`09`09if`20_negate X$`09`09`20`20`20then X$`09`09`09omi$batch_mode`20=`200 X$`09`09`09omi$progress`20=`201 X$`09`09`20`20`20else X$`09`09`09omi$batch_mode`20=`201 X$`09`09`09omi$progress`20=`200 X$`09`09endif X$`09`09goto`20quals$_loop X$`09endif X$! X$!==>`09/BACKGROUND=(BATCH`7CDETACH)`20qualifier X$! X$`09if`20qual$_name`20.eqs.`20f$extract(0,`20f$length(\270A),`20"BACKGROUND") V X$`09`20`20`20then X$`09`09if`20_negate`20then`20$`20goto`20quals$_loop X$`09`09if`20qual$_value`20.eqs.`20""`20then`20$\1C0D=`20"BATCH" X$`09`09if`20f$extract(0,`203,`20qual$_value)`20.eqs.`20"BAT"`20then`20- X`09`09`20`20`20$`20omi$background_mode`20=`20"batch" X$`09`09if`20f$extract(0,`203,`20qual$_value)`20.eqs.`20"DET"`20then`20- X`09`09`20`20`20$`20omi$background_mode`20=`20"detach" X$`09`09if`20f$type(omi$background_mode)`20.eqs.`20""`20then`20- X`09`09`20`20`20$`20goto`20qual$ivbgrmod_error X$`09`09if`20f$type(omi$batch_mode)`20.eqs.`20""`20then`20$`20\200E`20=`201 X$`09`09if`20f$type(omi$progress)`20.eqs.`20""`20then`20$`20\1E0C`20=`200 X$`09`09omi$backgr_mode`20=`201 X$`09`09goto`20quals$_loop X$`09endif X$! X$!==>`09/`5BNO`5DIGNORE=(keyword,...)`20qualifier X$! X$`09if`20qual$_name`20.eqs.`20f$extract(0,`20f$length(\270A),`20"IGNORE") X$`09`20`20`20then X$`09`09_ignores`20=`20"" X$`09`09if`20_negate`20then`20$`20goto`20quals$_loop X$`09`09if`20qual$_value`20.eqs.`20""`20then`20$`20goto\2106valreq_error X$`09`09qual$_value`20=`20f$edit(\150B,"collapse,upcase")`20-`20"("`20-`20")" X$`09`09_ign_cnt`20=`200 X$! X$`09`20ignore$_values: X$! X$`09`09_this_ign`20=`20"" X$`09`09_ignore_val`20=`20f$element(_ign_cnt,`20",",`20qual$_value) X$`09`09if`20_ignore_val`20.eqs.`20""`20.or.`20\1A13,"`20then`20- X`09`09`20`20`20$`20goto`20ignore$got_values X$`09`09if`20f$length(_ignore_val)`20.lt.`204`20then`20$`20goto`20qual$abkeyw_e Vrror X$! X$!`09`09==>`20/IGNORE=DUPLICATES X$! X$`09`09if`20f$extract(0,`204,`20_ignore_val)`20.eqs.`20"DUPL"`20then`20- X`09`09`20`20`20$`20_this_ignore`20=`20"dupl" X$! X$!`09`09==>`20/IGNORE=DCLWARNINGS X$! X$`09`09if`20f$extract(0,`204,`20_ignore_val)`20.eqs.`20"DCLE"`20then`20- X`09`09`20`20`20$`20_this_ignore`20=`20"dcle" X$! X$!`09`09==>`20/IGNORE=DCLFATALS X$! X$`09`09if`20f$extract(0,`204,`20_ignore_val)`20.eqs.`20"DCLF"`20then`20- X`09`09`20`20`20$`20_this_ignore`20=`20"dclf" X$`09`09if`20_this_ignore`20.eqs.`20""`20then`20$`20goto`20qual$ivkeyw_error X$`09`09_ignores`20=`20"''\0E08',\1706=''_this\2607'" X$`09`09_ign_cnt`20=`20\0B09+`201 X$`09`09goto`20ignore$_values X$! X$`09`20ignore$got_values: X$! X$`09`09omi$steering`20=`20"''\120C',''_ignores'" X$`09`09goto`20quals$_loop X$`09endif X$! X$!==>`09/`5BNO`5DPROGRESS`20qualifier X$! X$`09if`20qual$_name`20.eqs.`20f$extract(0,`20f$length(\270A),`20"PROGRESS") X$`09`20`20`20then X$`09`09if`20_negate X$`09`09`20`20`20then`20$`20omi$progress`20=`200 X$`09`09`20`20`20else`20$`20omi$progress`20=`201 X$`09`09endif X$`09`09goto`20quals$_loop X$`09endif X$! X$`20!`20`20&0220`20if`20qual$_name`20.eqs.`20f$extract(0,`20f$length(\270A), V`20"") X$`20!`09then X$`20!`09`20`20&0220`20goto`20quals$_loop X$`20!`20`20&0220`20endif X$! X$`09goto`20qual$ivqual_error X$! X$`20params$end_loop: X$! X$`09if`20f$type(options$_startmenu)`20.eqs.`20""`20then`20$`20\2412`20=`20"" X$`09if`20f$type(options$_menuname)`20`20.eqs.`20""`20then`20$`20\2411&0220=`20 V"" X$`09if`20f$type(options$_jumps)`20`20&0220`20.eqs.`20""`20then`20$`20\240E V&0520=`20"" X$`09return X$! X$!********\0808\1010\2020\400E X$! X$!==>`09If`20any`20errors`20in`20the`20parsing`20routine`20show`20up,`20they'r Ve`20handled`20here. X$!`09This`20is`20kept`20apart`20since`20t\1907the`20very`20first`20beginning V`20of`20the X$!`09initialision`20process,`20in`20which`20most`20of`20the`20OMI`20symbols`20 Vare`20set`20up. X$! X$`20qual$abkeyw_error: X$! X$`09_message`20=`20"ABKEYW,`20ambiguous`20qualifier`20or`20keyword`20-`20suppl Vy`20more`20characters" X$`09goto`20qual$_error X$! X$`20qual$ivqual_error: X$! X$`09_message`20=`20"IVQUAL,`20unrecognized`20qualifier`20-`20check`20validity, V`20spelling,`20and`20placement" X$`09goto`20qual$_error X$! X$`20qual$valreq_error: X$! X$`09_message`20=`20"VALREQ,`20missing`20qualifier`20or`20keyword`20value`20- V`20supply`20all`20require\1C07s" X$`09goto`20qual$_error X$! X$`20qual$ivkeyw_error: X$! X$`09_message`20=`20"IVKEYW,`20unrecognized`20keyword`20-`20check`20validity`20 Vand`20spelling X$`09qual$_name`20=`20\0D06value`20!`20Dirty.... X$`09goto`20qual$_error X$! X$`20qual$notneg_error: X$! X$`09_message`20=`20"NOTNEG,`20qualifier`20or`20keyword`20not`20negatable`20- V`20remove`20'NO'`20or`20omit`20value X$`09qual$_name`20=`20"NO''\120A'" X$`09goto`20qual$_error X$! X$`20qual$ivbgrmod_error: X$! X$`09_message`20=`20"IVBGRMOD,`20invalid`20background`20mode`20-`20specify`20BA VTCH`20or`20DETACH" X$`09qual$_name`20=`20"''\1006value'" X$`09goto`20qual$_error X$! X$`20qual$_error: X$! X$`09write`20sys$error`20"%OMI-W-''_message'" X$`09write`20sys$error`20"`20`5C''qual$_name'`5C" X$`09goto`20main$_final_bye X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Setup`20the`20environment.`20This`20is`20done`20by`20calling`20the`20s Vubprocedures X$!`09that`20will`20setup`20all`20global`20symbols,`20define`20the`20menus`20an Vd X$!`09the`20screen`20layout,`20and`20define`20some`20internally`20used`20foreig Vn X$!`09commands.`20Symbols`20defined`20in`20this`20routine`20can`20be`20local, V`20since X$!`09this`20is`20the`20master`20procedure. X$! X$`20main$_initialize: X$! X$`09if`20f$trnlnm("Omi$")`20.eqs.`20"" X$`09`20`20`20then X$`09`09_thisfile_location`20=`20- X`09`09`20`20`20f$parse(f$environment("procedure"),,,"device","no_conceal")`20+ V`20- X`09`09`20`20`20f$parse(f$environment("procedure"),,,"directory","no_conceal") V`20-`20"`5D`5B" X$`09`09define`20/nolog`20Omi$`20"''_thisfile_location'" X$`09endif X$`09omi$nodename`20=`20f$edit(f$getsyi("scsnode"),"collapse") X$`09omi$current_user`20=`20f$edit(f$getjpi(0,"username"),"collapse") X$`09omi$_ok`09=`20%X1fff3001 X$`09omi$_cancelled`20=`20%X1fff30ad X$`09omi$_warning`20`20`20=`20%X1fff30af X$`09omi$_error`20`20&0220`20=`20%X1fff30b5 X$`09ESC$`5B0,8`5D`20`20=`20%X1b X$`09BELL$`5B0,8`5D`20=`20%X7 X$`09LF$`5B0,8`5D`20`20`20=`20%Xa X$`09CR$`5B0,8`5D`20`20`20=`20%Xd X$`09FF$`5B0,8`5D`20`20`20=`20%Xc X$`09if`20.not.`20omi$_debug`20then`20- X`09`20`20`20$`20set`20message`20/nofacility`20/nosever\0C07identification`20/n Votext X$`09search`20Nla0:`20DummyStringToSetOmi$_NoMatch`20/output=Nla0: X$`09omi$_nomatch`20`20`20=`20$status X$`09set`20message`20'omi$_\0E07 X$!`09omi$_nomatch`20`20`20=`20%X08d78053 X$`09keyring$p$_key`20=`20"`01W" X$`09perf$init_exit`20=`201 X$! X$`09@Omi$:Omi$Config`20Setup X$`09if`20$status`20.eq.`20omi$_error`20then`20$`20exit`20%X2c X$! X$`09@Omi$:Omi$Screen`20Setup X$! X$`09omi$config`20`20&0220&0320:=`20"@Omi$:Omi$C\1B06Menu" X$`09omi$screen`20`20&0220&0320:=`20"@Omi$:Omi$Screen" X$`09omi$clear_screen`20:=`20"@Omi$:Omi$S\1506clear" X$`09omi$refresh`20`20&0220&0220:=`20"@Omi$:Omi$Screen`20\2207" X$`09omi$display_info`20:=`20"@Omi$:Omi$Screen`20\220C" X$! X$`09if`20omi$batch_mode X$`09`20`20`20then X X$`09`09omi$cmdline_clear`20`20`20:=`20"!" X$`09`09omi$msgline_clear`20`20`20:=`20"!" X$`09`09omi$display_message`20:=`20"write`20sys$error" X$`09`20`20`20else X$`09`09omi$cmdline_clear`20`20`20:=`20"write`20sys$output`20f$fao(""''screen$p Vrompt_position'!\1A09line_length'*`20"")" X$`09`09omi$msgline_clear`20`20`20:=`20"write`20sys$error`20f$fao(""''ESC$'`5B V''screen$line_message';\1709default_position'H!\330Elength'*`20"")" X$`09`09omi$display_message`20:=`20"write`20sys$error`20""''ESC$'`5B''screen$li Vne\3408';\1709default_position'H""+" X$`09endif X$! X$`09open`20/read`20/share=\0C06error=main$notoolbox_ini`20- X`09`20`20`20tb$init`20Omi$:Omi$ToolBox.Ini X$! X$`20main$_init_toolbox: X$! X$`09read`20/end_of_file=main$end_init_toolbox`20tb$init`20_tool X$`09_tool`20=`20f$edit(_tool,"uncomment,collapse,upcase") X$`09if`20_tool`20.eqs.`20""`20then`20$`20goto`20main$_init_toolbox X$`09if`20_tool`20.eqs.`20""`20then`20$`20goto`20main$end_init_toolbox X$`09if`20f$extract(0,1,_tool)`20.eqs.`20"`5B" X$`09`20`20`20then X$`09`09toolbox`20=`20_tool`20-`20"`5B"`20-`20"`5D" X$`09`09toolbox`20=`20f$parse(\1207,"OMI$:",".COM") X$`09`09goto`20main$_init_toolbox X$`09endif X$`09if`20toolbox`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20toolerr X$`09`09goto`20main$end_init_toolbox X$`09endif X$`09if`20.not.`20omi$_debug`20then`20- X`09`20`20`20$`20set`20message`20/nofacility`20/nosever\0C07identification`20/n Votext X$`09search`20'toolbox'`20"''_tool'$:"`20/output=nla0: X$`09if`20$status`20.eq.`20omi$_nomatch X$`09`20`20`20then X$`09`09set`20message`20'omi$_\0E07 X$`09`09omi$signal`20omi`20noroutine,_tool X$`09`09read`20/end_of_file=mit$_no_routine`20sys$command`20_dummy`20- X`09`09`20`20`20/prompt="''screen$\1106_position'''questions$wait_prompt'`20" X$`09`09omi$msgline_clear X$`09`09omi$cmdline_clear X$`09`09omi$signal`20omi`20checktoolbox X$`09`09read`20/end_of_file=mit$_no_routine`20sys$command`20_dummy`20- X`09`09`20`20`20/prompt="''screen$\1106_position'''questions$wait_prompt'`20" X$`09`09goto`20mit$_no_routine X$`09endif X$! X$`09set`20message`20'omi$_\0E07 X$`09omi$'_tool'`20:=`20"@''toolbox'`20''\1906" X$`09goto`20main$_init_toolbox X$! X$`20mit$_no_routine: X$! X$`09ws`20"" X$`09omi$msgline_clear X$`09omi$cmdline_clear X$`09goto`20main$_init_toolbox X$! X$`20main$end_init_toolbox: X$! X$`09close`20tb$init X$! X$!`20Define`20the`20valid`20internal`20commands X$!`20The`20boolean`20following`20the`20command`20indicated`20wether`20or`20not V`20this\2508 X$!`20is`20available`20in`20Otf-`20menus X$! X$`09omi$valid_commands`20=`20- X`09`20`20`20"#ADD,0#ALL,1#BACK,1#CALC,1#CLS,1#DCL,1#DELETE,1#EDIT,1#ENCRYPT,0# V"`20+`20- X`09`20`20`20"EXIT,0#EXPORT,1#HELP,1#IM\1007INCREASE,1#INFO,0#JUMP,0#"`20+`20- V X`09`20`20`20"MAIN,0#MANAGE,0#MENU,0#MODIFY,0#QUIT,0#REFRESH,1#RENAME,0#"`20+ V`20- X`09`20`20`20"REMOVE,0#RESET,1#\0606SILENT_DCL,1#SHOW,1#SPAWN,1#SUBMIT,1#" X$! X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Find`20out`20if`20any`20default`20values`20where`20defined`20for`20inp Vut`20items.`20If`20so, X$!`09set`20them. X$!`09This`20has`20to`20be`20done`20in`20this`20procedure,`20since`20the`20symb Vols`20have`20to X$!`09be`20local. X$! X$`20main$default_values: X$! X$`09assign`20sys$scratch:omi$setup_defaults._tmp1$`20sys$output X$`09show`20symbol`20/global`20*$input* X$`09deassign`20sys$output X$`09search`20sys$scratch:omi$setup_defaults._tmp1$`20'init_def$search_string V`20- X`09`20`20`20/output=sys$scratch:omi$setup_defaults._tmp$ X$`09if`20$status`20.eq.`20omi$_nomatch X$`09`20`20`20then X$`09`09deletee`20/nolog`20/noconfirm`20sys$scratch:omi$setup_defaults._tmp1$; V X$`09`09deletee`20/nolog`20/noconfirm`20sys$scratch:omi$setup_defaults._tmp$; X$`09`09return`20omi$_ok X$`09endif X$`09deletee`20/nolog`20/noconfirm`20sys$scratch:omi$setup_defaults._tmp1$; X$`09open`20/read`20omi$setup_defaults`20sys$scratch:\1F12._tmp$ X$! X$`20init$_defaults: X$! X$`09read`20/end_of_file=init$end_defaults`20omi$setup\130Evalue X$`09if`20f$element(2,`20"#",`20f$extract(0,f$length(omi$value)-1,\0D0A)`20- X`09`20`20`20.eqs.`20"#"`20.or.`20f$element(2,`20"#",`20f$extract(0,f$length(om Vi$value)-1,- X`09`20`20`20omi$value))`20.eqs.`20"" X$`09`20`20`20then X$`09`09if`20f$type`20(varreset$)`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09if`20f$extract(0,`201,`20f$element(1,"#",omi$value))`20.eqs.`20"`7B" V X$`09`09`09`20`20`20then`20$`20_value`20=`20"''f$extract(f$locate("`7D",f$eleme Vnt(1,"#",omi$value))+1,`20f$length(f$\2819,`20f$\4519'" X$`09`09`09`20`20`20else`20$`20_value`20=`20"''f$element(1,`20"#",`20omi$value) V'" X$`09`09`09endif X$`09`09`09_value`20=`20\0907-`20""" X$`09`09`09varreset$`20=`20\0C0A+`201 X$`09`09`09set`20message`20/nofacility`20/nosever\0C07identification`20/notext V X$`09`09`09if`20f$type`20('_value')`20.nes.`20""`20then`20- X`09`09`09`20`20`20$`20deletee`20/symbol`20/local`20'_value' X$`09`09`09set`20message`20'omi$_\0E07 X$`09`09endif X$`09`09goto`20init$_defaults X$`09endif X$! X$`09if`20f$extract(0,`201,`20f$element(1,"#",omi$value))`20.eqs.`20"`7B" X$`09`20`20`20then X$`09`09_value`20=`20"''f$extract(f$locate("`7D",f$element(1,"#",omi$value))+1, V`20f$length(f$\2819,`20f$\4519'" X$`09`09_block`20=`20f$extract(1,`20f$locate("`7D",`20f$element(1,"#",omi$value V))-1,`20f$\1F0E`20\200B X$`09`09_block`20=`20f$edit(\1006,"upcase")`20-`20"SEL`7C" X$! X$`09`09if`20f$type`20(varreset$)`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09varreset$`20=`20\0C0A+`201 X$`09`09`09set`20message`20/nofacility`20/nosever\0C07identification`20/notext V X$`09`09`09if`20f$type('_value')`20.nes.`20""`20then`20- X`09`09`09`20`20`20$`20deletee`20/symbol`20/local`20'_value'&0220!`20RESET`20VA VRIABLES X$`09`09`09set`20message`20'omi$_\0E07 X$`09`09endif X$! X$`09`09if`20f$type('_block'$filename)`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09_blockname`20=`20\0D06 X$`09`09`09gosub`20input$_from_file X$`09`09`09_status`20=`20$\0A06 X$`09`09`09if`20_status`20.ne.`20omi$_ok`20then`20$`20omi$wait X$`09`09`20`20`20else`20$`20_status`20=`20omi$_ok X$`09`09endif X$! X$`09`09if`20f$extract(0,4,_block)`20.nes.`20"TAG`7C"`20.and.`20_status`20.eq. V`20omi$_ok`20- X`09`09`20`20`20then`20$`20'_value'`20=`20'_block'$'f$element(2,"#",omi$value)' V X$`09`20`20`20else X$`09`09_default_value`20=`20f$element(2,`20"#",`20omi$value)`20-`20""" X$`09`09_variable`20=`20"_default_value" X$`09`09_format`20=`20f$element(3,`20"#",omi$value)`20-`20""" X$! X$`09`09if`20f$type`20(varreset$)`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09varreset$`20=`20\0C0A+`201 X$`09`09`09set`20message`20/nofacility`20/nosever\0C07identification`20/notext V X$`09`09`09if`20f$type('f$element(1,`20"#",`20omi$value)')`20.nes.`20""`20then V`20- X`09`09`09`20`20`20$`20deletee`20/symbol`20/local`20'f$element(1,`20"#",`20omi$ Vvalue)'&0220!`20RESET`20VARIABLES X$`09`09`09set`20message`20'omi$_\0E07 X$`09`09endif X$! X$`09`09if`20_format`20.nes.`20""`20.and.`20\170F#\1808'_variable'\3309 X$`09`09`20`20`20then X$`09`09`09gosub`20input$_format X$`09`09`09if`20$status`20.eq.`20omi$_warning X$`09`09`09`20`20`20then`20$`20'f$element(1,`20"#",`20omi$value)`20=`20"Invalid V`20default`20value" X$`09`09`09`20`20`20else`20$`20'f$element(1,`20"#",`20omi$value)`20=`20'_variab Vle' X$`09`09`09endif X$`09`09`20`20`20else`20$`20'f$element(1,`20"#",`20omi$value)`20=`20'_variable' V X$`09`09endif X$`09endif X$`09goto`20init$_defaults X$! X$`20init$end_defaults: X$! X$`09close`20omi$setup_defaults X$`09delete/noconfirm/nolog`20sys$scratch:omi$setup_defaults._tmp$; X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Delete`20all`20symbols`20and`20all`20logicals`20that`20were`20set`20by V`20this`20procedure, X$!`09erase`20the`20screen`20(if`20not`20called`20from`20an`20error`20routine), V`20and`20restore X$!`09all`20original`20settings. X$! X$`20main$_cleanup: X$! X$`09@Omi$:Omi$Screen`20Cleanup`20"''omi$_cls'" X$`09if`20omi$_cls`20.nes.`20"NOCLS"`20then`20$`20deletee`20/symbol`20/local`20 Vomi$display_message X$`09ws`20"%OMI-I-REMFILES,`20removing`20temporary`20files..." X$! X$`09if`20f$trnlnm("calc$_subresults")`20.nes.`20""`20then`20$`20close`20c\290F V X$`09if`20f$search("sys$scratch:calc$_subresults._tmp$")`20.nes.`20""`20then`20 V- X`09`20`20`20$`20deletee`20/nolog`20/noconfirm`20sys$scratch:calc$_subresults._ Vtmp$;* X$`09if`20f$search("sys$scratch:omi$check_otf_menu._tmp$")`20.nes.`20""`20then V`20- X`09`20`20`20$`20deletee`20/nolog`20/noconfirm`20sys$scratch:omi$check_otf_menu V._tmp$;* X$`09if`20f$search("sys$scratch:omi$import_key._tmp$")`20.nes.`20""`20then`20- V X`09`20`20`20$`20deletee`20/nolog`20/noconfirm`20sys$scratch:omi$import_key._tm Vp$;* X$`09if`20f$search("Sys$Scratch:Omi$NewCfg._Tmp$")`20.nes.`20""`20then`20- X`09`20`20`20$`20deletee`20/nolog`20/noconfirm`20Sys$Scratch:Omi$NewCfg._Tmp$;* V X$`09if`20f$type(ta$remove_files)`20.eqs.`20""`20then`20$`20goto`20cleanup$clea Vrmem X$`09_ta_counter`20=`200 X$! X$`20cleanup$delfiles: X$! X$`09_ta_file`20=`20f$element(_ta_counter,`20",",`20ta$remove_files) X$`09if`20_ta_file`20.eqs.`20""`20.or.`20\1710,"`20then`20$`20goto`20cleanup$cl Vearmem X$`09_ta_file`20=`20f$search(\1408) X$`09if`20_ta_file`20.nes.`20""`20then`20$`20delete/nolog`20/noconfirm`20'\3208 V' X$`09_ta_counter`20=`20\0E0C+`201 X$`09goto`20cleanup$delfiles X$! X$`20cleanup$clearmem: X$! X$`09ws`20"%OMI-I-CLEARMEM,`20clearing`20memory..." X$`09@Omi$:Omi$ToolBox`20Cleanup X$`09if`20f$type(omi$menu_file)`20.nes.`20""`20then`20$`20omi$config`20"''\2D0D V'"`20Cleanup X$`09@Omi$:Omi$Config`20Setup`20""`20Cleanup X$`09if`20f$type(omi$inputs)`20.nes.`20""`20then`20$`20gosub`20cleanup$missing_ Vitems X$`09if`20f$type(_thisfile_location)`20.nes.`20""`20then`20$`20deassign`20Omi$ V X$! X$`09return`20omi$_ok X$! X$`20cleanup$missing_items: X$! X$`09if`20.not.`20omi$inputs X$`09`20`20`20then X$`09`09deletee/symbol/global`20omi$inputs X$`09`09return`20omi$_ok X$`09endif X$`09assign`20sys$scratch:omi$symbol_cleanup._tmp$`20sys$output X$`09define`20sys$error`20nla0:`20!`20Added`20by`20Edward`20Vlak X$`09show`20symbol`20/global`20*$item* X$`09deassign`20sys$output X$`09deassign`20sys$error X$`09open`20/read`20omi$symbol_cleanup`20sys$scratch:\1F12._tmp$ X$! X$`20cleanup$_symbols: X$! X$`09read`20/end_of_file=cleanup$end_symbols`20omi$\0C06_\1F07\130B X$`09if`20f$locate("command#all",`20f$edit(omi$symbol,"lowercase"))`20.lt.`20- V X`09`20`20`20f$length(omi$symbol)`20then`20$`20deletee/\1706/global`20- X`09`20`20`20'f$element(0,`20"=",`20f$edit(omi$symbol,"collapse")) X$`09goto`20cleanup$_symbols X$! X$`20cleanup$end_symbols: X$! X$`09close`20omi$symbol_cleanup X$`09delete/noconfirm/nolog`20sys$scratch:omi$symbol_cleanup._tmp$; X$`09deletee/symbol/global`20omi$inputs X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E $ call unpack [.OMI-V2_3]OMI$MENU.COM;1 3328996740 "" 254 28 41 $! $ create 'f' X1`20Known_Bugs X X*`20When`20OMI$DISPLAY_INFO`20needs`20to`20display`20a`20blank`20line`20betwee Vn`20two X`20`20records,`20the`20OMI$RECORDn`20needs`20to`20contain`20at`20least`20one V`20blank. X`20`20E.g.`20when`20the`20next`20three`20lines`20need`20to`20be`20displayed: X X`20`20&0220OMI$RECORD1`20=`20"The`20first`20line" X`20`20&0220OMI$RECORD2`20=`20""&0420&0420\0808&0220!`20A`20blank`20line`20to V`20separate X`20`20&0220OMI$RECORD3`20=`20"The`20last`20line" X X`20`20the`20command`20OMI$DISPLAY`20will`20display`20only`20the`20first`20line V. X`20`20This`20can`20be`20solved`20by`20specifying`20OMI$RECORD2`20as`20"`20"`20 V(a`20blank). X X*`20When`20a`20TEXTAREA`20input`20element`20is`20defined`20with`20the`20option V`20LARGE X`20`20set`20to`20TRUE,`20the`20command`20SHOW`20TEXTAREA`20shows`20nothing`20i Vn`20certain X`20`20circumstances`20without`20warning. X X*`20When`20a`20library`20file`20is`20included`20with`20#INCLUDE,`20and`20dupli Vcate`20values X`20`20are`20encountered,`20a`20leading`20value`20can`20be`20specified`20with V`20the`20#LEADING X`20`20attribute. X`20`20However,`20when`20the`20menu`20file`20is`20validated`20with`20the`20/VAL VIDATE`20qualifier, X`20`20a`20warning`20will`20be`20displayed`20if`20the`20first`20item`20of`20two V`20duplicate`20item X`20`20names`20was`20specified`20as`20leading. X`20`20During`20run-time`20this`20is`20handled`20properly. X`20`20 X1`20Description X XOscar's`20Menu`20Interface`20is`20a`20DCL`20procedure`20that`20reads`20menu`20 Vfiles`20and Xrepresents`20the`20menu`20structure`20on`20a`20ChUI`20based`20window. X XOMI`20does`20not`20perform`20any`20actions`20on`20its`20own.`20Additional`20pr Vocedures`20are Xrequired`20to`20handle`20upon`20the`20users`20input.`20OMI`20is`20strictly`20c Vreated`20to Xcreate`20a`20standard`20user`20interface`20for`20all`20kinds`20of`20actions, V`20with`20a Xclear`20structure,`20support`20for`20different`20security`20levels`20and`20pas Vsword Xprotection. X XThe`20additional`20procedures`20that`20are`20required`20for`20any`20actions`20 Vare Xreferred`20to`20as`20OMI`20modules.`20A`20section`20in`20this`20help`20file`20 Vdescribes Xhow`20several`20commands,`20defined`20in`20OMI,`20can`20be`20used`20to`20creat Ve`20such Xprocedures. X X1`20Getting_started X XOscar's`20Menu`20Interface`20can`20be`20used`20to`20walk`20through`20pre-`20de Vfined`20menu Xstructures.`20Such`20\110A`20are`20created`20in`20.MNU`20files,`20which`20shou Vld`20be Xlocated`20in`20the`20same`20directory`20where`20OMI`20resides`20(referred`20to V`20with`20the Xlogical`20OMI$)`20or`20a`20special`20directory`20pointed`20to`20with`20the`20 V\3907 XOMI$MENU_FILES. X XTo`20start`20OMI,`20just`20type`20the`20command`20OMI`20at`20the`20DCL`20promp Vt. XOMI`20will`20start`20a`20menu`20if: X`20`20-`20the`20logical`20OMI$START_MENU`20points`20to`20a`20valid`20menu`20fi Vle`20OMI$: X`20`20&0220or`20OMI$MENU_DIRECTORY: X`20`20-`20the`20file`20OMI$MENU_DIRECTORY:\1308.MNU X`20`20-`20the`20file`20OMI$:OMI$MENU.MNU X XIf`20none`20of`20these`20are`20found,`20OMI`20prompts`20to`20specify`20a`20men Vu`20file. X XTo`20walk`20through`20the`20menu`20screens`20and`20enter`20input,`20just`20typ Ve`20the Xhighlighted`20number`20of`20your`20choice. X XCtrl/Z`20can`20always`20be`20used`20to`20go`20up`20one`20level,`20or`20to`20ca Vncel`20an Xinput`20prompt. X XThe`20commands,`20that`20are`20described`20in`20this`20HELP`20file,`20can`20be V`20entered Xat`20the`20command`20line. X XTo`20see`20some`20examples,`20start`20the`20OMI$EXAMPLE.MNU`20file,`20with`20t Vhe Xcommand`20OMI`20OMI$EXAMPLE`20from`20the`20DCL`20\2508line,`20or XMENU`20OMI$EXAMPLE`20from`20the`20OMI`20command`20line. X X1`20Usage X XOMI`20Menu's`20display`20a`20list`20of`20options`20and/or`20values`20that`20ca Vn`20be`20filled`20in, Xfurther`20called`20'elements' XTo`20select`20an`20element,`20just`20type`20the`20number`20on`20the`20command V`20line. X XOMI`20commands`20can`20also`20be`20entered`20at`20the`20\2407`20line.`20All`20 V\3A0C Xcan`20be`20found`20in`20the`20toplevel`20of`20this`20help. X XWhen`20input`20values`20need`20to`20be`20entered,`20the`20option`20with`20whic Vh`20all\3B06s Xcan`20be`20entered`20at`20once,`20will`20always`20be`20visible.`20The`20name V`20of`20the`20options Xdepends`20on`20the`20setting`20in`20the`20configuration`20file.`20By`20default V,`20this Xis`20'All`20inputs'. X XTo`20go`20back`20one`20level`20in`20the`20menu`20structure,`20you`20can`20use V`20the`20BACK`20command, Xthe`20`20keystoke,`20or`20type`20a`20'0'`20(zero),`20followed`20by`20< VReturn>. X X2`20Starting_OMI X XWhen`20OMI`20has`20been`20set`20up`20properly,`20OMI`20can`20be`20started`20fr Vom`20the`20DCL`20prompt Xwith`20the`20command`20OMI.`20If`20the`20logical`20OMI$STARTMENU`20is`20not`20 Vdefined,`20this Xwill`20display`20a`20list`20of`20all`20available`20menus`20in`20the`20director Vies`20OMI$`20and XOMI$MENU_DIRECTORY. X XSince`20version`201.4,`20OMI`20also`20reads`20command`20line`20qualifiers. X*NOTE:`20When`20qualifiers`20are`20used,`20the`20first`20parameter,`20which`20 Vrefers X`20`20&0220&0320to`20the`20menu`20file,`20is`20always`20required,`20even`20if V`20the`20logical X`20`20&0220&0320OMI$STARTMENU`20is`20defined`20and`20points`20to`20the`20menu V`20file`20that X`20`20&0220&0320should`20be`20started! X X3`20Parameters X XOMI`20supports`20three`20parameters,`20of`20which`20the`20second`20and`20third V`20are Xobsolete`20since`20version`201.4`20However,`20for`20backwards`20compatibility, V`20they Xare`20still`20supported.`20For`20description`20of`20those`20parameters,`20refe Vr`20to`20the Xtopic`20auto_mode. X XThe`20first`20parameter`20is`20the`20name`20of`20the`20menu`20file`20that`20sh Vould`20be`20started. XThis`20menu`20file`20has`20to`20be`20located`20in`20the`20OMI$`20or`20OMI$MENU V_DIRECTORY.`20If Xthe`20parameter`20is`20omitted,`20and`20the`20logical`20OMI$STARTMENU,`20a`20l Vist`20with Xavailable`20menus`20is`20presented,`20from`20which`20a`20selection`20can`20be V`20made. X X3`20Qualifiers X XQualifiers`20can`20be`20specified`20after`20the`20first`20parameter`20on`20the V`20DCL Xcommand`20line. X X/BACKGROUND`5B=mode`5D X`20/BACKGROUND=BATCH`20(default) X`20/BACKGROUND=DETACH X XStart`20an`20OMI`20module`20in`20the`20background.`20The`20first`20parameter V`20is Xnow`20an`20OMI`20module`20name`20(filename.OMI)`20in`20stead`20of`20a`20menu V`20name. XThis`20module`20should`20be`20created`20to`20run`20unattended`20(e.g.`20using V XMailboxes`20for`20communication) X XAn`20OMI`20module`20can`20run`20as`20a`20detached`20process`20(requires`20VMS V`20DETACH Xprivilege),`20or`20in`20a`20batch`20queue. X X/BATCH X`20/BATCH X`20/NOBATCH`20(default) X XStart`20OMI`20in`20Batch`20mode.`20In`20this`20mode,`20all`20output,`20written V`20to XSYS$OUTPUT,`20is`20suppressed.`20This`20also`20means`20the`20menus`20are`20not V Xdisplayed`20at`20all.`20This`20option`20is`20usefull`20when`20used`20together V Xwith`20/SUBMENU`20and`20/JUMPS. X X/DEBUG X`20/DEBUG X`20/NODEBUG`20(default) X XBy`20default,`20all`20error`20messages`20from`20DCL`20are`20suppressed`20in`20 VOMI. XIf`20an`20error`20occures`20in`20OMI,`20its`20handled`20by`20OMI`20itself.`20T Vhis`20should Xalso`20be`20the`20case`20in`20all`20OMI`20modules,`20but`20while`20these`20 V\1907`20are Xbeing`20developed,`20it`20is`20usefull`20to`20see`20all`20messages`20that`20ar Ve`20generated Xby`20VMS. XWith`20the`20/DEBUG`20qualifier,`20all`20messages`20will`20be`20displayed.`20I Vf`20the`20user Xentered`20$`20SET`20VERIFY`20before`20starting`20OMI,`20all`20verify`20output V`20is`20displayed Xas`20well. X XThis`20qualifier`20replaces`20the`20symbol`20OMI$_DEBUG,`20that`20was`20used V`20untill Xversion`201.3`20(however`20this`20symbol`20is`20still`20supported;`20if`20it's V`20set`20to`201, Xthe`20default`20for`20this`20qualifier`20is`20/DEBUG!). X X/IGNORE X`20/NOIGNORE`20(default) X`20/IGNORE=(keyword`5B,...`5D) X X`20Ignore`20specified`20warnings`20or`20errors`20during`20the`20OMI`20session. V X`20If`20you`20specify`20only`20one`20keyword,`20you`20can`20omit`20the`20paren Vtheses. X`20Possible`20keywords`20are: X X`20DUPLICATES`20`20&0220&0220When`20starting`20OMI,`20%OMI-W-DUPL`20warnings V`20are X`20`20&0220&0420\0808`20displayed`20when`20OMI`20tries`20to`20set`20a`20symbol V`20that's X`20`20&0220&0420\0808`20already`20defined.`20This`20happens`20after`20a`20cras Vh`20of X`20`20&0220&0420\0808`20the`20previous`20OMI`20session,`20when`20the`20menu`20 Vfile`20is X`20`20&0220&0420\0808`20invalid,`20or`20when`20a`20new`20OMI`20session`20is`20 Vstarted`20in X`20`20&0220&0420\0808`20a`20subprocess`20from`20within`20OMI`20(for`20OTF`20me Vnus,`20this X`20`20&0220&0420\0808`20is`20the`20only`20way`20to`20open`20a`20new`20menu`20w Vithout`20leaving X`20`20&0220&0420\0808`20the`20OFT`20context). X X`20`20&0220&0420\0808`20The`20/IGNORE=DUPLICATES`20qualifier`20overwrites`20al Vl X`20`20&0220&0420\0808`20existing`20symbols`20without`20a`20warning. X X`20DCLERRORS`20`20&0220&0320When`20a`20DCL`20command`20is`20given`20in`20the V`20menu`20file,`20or X`20`20&0220&0420\0808`20entered`20at`20the`20OMI`20prompt`20(commands`20DCL`20 V($)`20or X`20`20&0220&0420\0808`20SILENT_DCL),`20or`20when`20a`20subprocess`20is`20spawn Ved`20from X`20`20&0220&0420\0808`20the`20menu`20file`20(as`20an`20option)`20or`20using`20 Vthe`20OMI`20SPAWN X`20`20&0220&0420\0808`20command,`20OMI`20will`20catch`20its`20exit`20status`20 Vand`20act X`20`20&0220&0420\0808`20accordingly.`20It`20the`20exit`20code`20was`20an`20err Vor`20(severity X`20`20&0220&0420\0808`202),`20OMI`20crashes. X X`20`20&0220&0420\0808`20The`20/IGNORE=DCLERRORS`20qualifier`20ignores`20errors V X`20`20&0220&0420\0808`20generated`20in`20such`20circumstances. X`20 X`20`20&0220&0420\0808`20NOTE:`20This`20does`20not`20apply`20to`20DCL`20or`20SP VAWN`20action X`20`20&0220&0420\0808\1007from`20within`20OMI`20modules`20! X X`20DCLFATALS`20`20&0220&0320This`20keyword`20has`20the`20same`20effect`20\1306 V X`20`20&0220&0420\0808`20DCLERRORS`20keyword,`20but`20for`20fatal`20exit`20code Vs X`20`20&0220&0420\0808`20(severity`204). X`20`20&0220&0420\0808`20Both`20keywords`20can`20be`20given`20together`20as X`20`20&0220&0420\0808`20/IGNORE=(DCLERRORS,DCLFATALS).`20 X X/JUMPS X`20/JUMPS=option-list X XWith`20the`20/JUMPS`20qualifier,`20all`20options`20that`20are`20normally`20ent Vered`20one Xby`20one`20at`20the`20OMI`20prompt,`20can`20now`20be`20specified\2808DCL\2807 V`20as Xa`20list`20of`20options`20separated`20by`20commas.`20If`20this\2D06with\2F07 Xcontains`20OMI`20commands`20with`20parameters,`20blanks`20are`20required`20to V`20separate Xthe`20parameters`20if`20they`20should`20be`20specified.`20The`20option`20has V`20to`20be Xenclosed`20by`20double`20quotes. X X/PROGRESS X`20/PROGRESS X`20/NOPROGRESS X XThis`20qualifier`20can`20be`20used`20to`20overwrite`20the`20SHOW_PROGRESS`20el Vement Xfrom`20the`20configuration`20file.`20This`20element`20declares`20the`20default V`20for Xthis`20qualifier. X X/SUBMENU X`20/SUBMENU=submenu-name X XWith`20the`20/SUBMENU`20qualifier,`20it`20is`20possible`20to`20start`20the`20O VMI`20session Xwith`20the`20submenu`20that`20has\1506pecified`20name.`20By`20default,`20OMI V`20starts Xa`20menu`20file`20with`20the`20main`20menu,`20but`20when`20one`20ore`20more`20 Vsubmenus`20have Xnames,`20OMI`20can`20start`20in`20one`20of`20those`20menus. X X/VALIDATE X`20/VALIDATE`5B=log-file`5D X`20/NOVALIDATE`20(default) X XThis`20qualifier`20reads`20the`20menu`20file`20and`20validate\1C06syntax`20lin Ve`20by Xline.`20It`20signals`20errors`20and`20warnings`20when\1908or`20possible\2C07 Xare`20found,`20like`20calling`20non-`20existing`20submenus,`20commands`20or`20 Vmodules, Xmissing`20elements`20(e.g.`20ITEM1,`20ITEM2\07064.),`20duplicate\300Aetc. XIf`20no`20errors`20are`20warning\0D06found,`20this`20does`20not`20guarantee`20 Va`20valid Xmenu,`20since`20not`20everything`20can`20be`20checked`20especially`20when`20va Vriables Xare`20used,`20or`20logicals`20defined`20by`20an`20ON_INIT`20module),`20but`20i Vt`20finds`20the Xmost`20common`20errors. X XA`20filename`20to`20write`20all`20messages`20to`20can`20optionally`20be`20spec Vified.`20If Xomitted,`20all`20messages`20are`20written`20to`20SYS$ERROR. XThis`20qualifier`20requires`20WRITE`20privilege`20to`20the`20menu. X X2`20Auto_mode X XWhen`20all`20options`20are`20known`20to`20the`20user,`20a`20menu`20can`20also V`20be`20called Xin`20Auto`20Mode.`20This`20means,`20the`20menu`20file`20is`20specified`20as`20 Vthe`20first Xparameter`20for`20OMI,`20followed`20by`20the`20name`20of`20a`20submenu`20(refe Vr`20to`20the Xsubtopic`20'Menu_File`20Menu_Section`20Name'). XIf`20the`20menu`20file`20that`20needs`20to`20be`20called`20is`20specified`20by V`20the Xlogical`20OMI$START_MENU,`20the`20first`20parameter`20can`20be`20empty`20(""). V X XThe`20third`20parameter`20can`20be`20a`20list`20of`20inputs`20that`20needs`20t Vo`20be`20specified, Xseparated`20by`20commas.`20If`20this`20list`20contains`20OMI\2206nds`20with`20 Vblanks`20in Xit`20(e.g.`20RESET`20PASSWORD),`20that`20option`20has`20to`20be`20enclosed`20b Vy`20double`20quotes, X`20`20e.q. X`20`20$`20OMI`20MY-MENU`20SUB3`20"RESET`20PASSWORD",EXIT Xor`20 X`20`20$`20OMI`20MY-MENU`20/SUBMENU=SUB3`20/JUMPS="RESET`20PASSWORD",EXIT X XThe`20example`20above`20would`20remove`20the`20password`20of`20the`20menu`20wi Vth`20the`20name XSUB3,`20and`20exit`20the`20menu.`20However,`20OMI`20will`20prompt`20for`20the V`20current Xpassword`20when`20entering`20the`20menu`20before`20executing`20any`20command. V X XIf`20when`20of`20the`20options`20selects`20a`20TAG`20list,`20the`20Ctrl/Z`20ke Vystroke`20can Xbe`20emulated`20with`20the`20string`20'`5EZ'`20(=`20'shift-6'`20'Z'`20on`20VT V`20keyboards). X XTo`20have`20a`20look`20at`20the`20possibilities`20with`20this`20Auto`20Mode, V`20try`20starting Xthe`20example`20menu`20OMI$EXAMPLE`20with`20the`20following`20command: X X`20`20$`20OMI`20OMI$EXAMPLE`20INPUT`204,5,5,3,10,`5EZ,3,EXIT Xor X`20`20$`20OMI`20OMI$EXAMPLE`20/SUBMENU=INPUT`20/JUMPS=4,5,5,3,10,`5EZ,3,EXIT X X2`20Entering_values X XWhen`20an`20input`20element`20is`20selected,`20the`20user`20is`20either`20prom Vpted`20for`20a Xvalue,`20or`20a`20list`20is`20displayed`20from`20which`20values`20can`20be`20s Velected. X XSome`20input`20elements`20need`20to`20have`20special`20formats.`20This`20depen Vds`20on`20the Xdefinition`20in`20the`20menu`20file.`20When`20a`20wrong`20value`20is`20entered V,`20the`20error Xmessage`20tells`20what`20the`20format`20should`20be. X X3`20Tag_lists X XSome`20input`20elements`20display`20a`20list`20of`20possible`20that`20can`20be V`20tagged.`20If`20a Xtag`20element`20is`20selected,`20a`20list`20of`20possible`20values`20will`20be V`20displayed.`20 XEntering`20the`20corresponding`20numbers`20will`20cause`20the`20values`20to`20 Vbe`20selected Xand`20added`20to`20a`20list. X XWhen`20all`20required`20values`20are`20selected,`20use`20. X X3`20Select_lists X XIf`20an`20input`20element`20is`20selected,`20that`20can`20have`20one`20value V`20from`20a`20predefined Xlist,`20this`20list`20is`20displayed`20in`20a`20pop-up`20window. X XTyping`20the`20corresponding`20number,`20followed`20by`20,`20selects V`20that`20value Xand`20returns`20control`20to`20the`20menu. XThe`20`20keystroke`20cancels`20the`20selection. X XWhen`20the`20list`20is`20too`20long`20to`20fit`20on`20one`20screen,`20the`20co Vmmands`20NEXT`20and XPREVIOUS`20can`20be`20used`20to`20scroll`20through`20the`20list. X X2`20Protected_Menus X XWhen`20a`20menu`20is`20selected`20that`20is`20protected`20with`20a`20password, V`20the XPassword`20prompt`20will`20appear.`20When`20an`20invalid`20p\2D08is`20entered, V Xfor`20three`20times`20in`20a`20row,`20access`20will`20be`20denied. X XWhen`20the`20same`20menu`20is`20selected`20for`20three`20times`20in`20a`20row, V`20and`20and Xinvalid`20password`20has`20been`20entered`20for`20nine`20times,`20the`20menu V`20will Xbe`20blocked`20for`20the`20current`20user.`20An`20intrusion`20record`20is`20se Vt,`20that Xwill`20not`20disappear`20until`20the`20user`20logged`20out`20from`20the`20syst Vem. X X1`20Copyright X XThe`20software`20and`20all`20associated`20files`20remains`20the`20copyright`20 Vof`20the Xauthor`20but`20may`20be`20freely`20used`20and`20distributed`20without`20charge V`20to`20any Xother`20user,`20provided`20that`20all`20copyright`20notices`20are`20retained V`20intact. X X`20`A9`201997`20-`202004,`20Oscar`20van`20Eijk,`20Oveas`20Functionality`20Prov Vider X`20`20&0220&0420\0808support@oveas.com X XThis`20tool`20is`20delivered`20"as`20is".`20No`20warranty,`20express`20or`20im Vplied, Xis`20offered`20as`20to`20the`20suitability`20of\1306oftware`20for`20any`20purp Vose. XAny`20errors`20arising`20from`20the`20use`20of`20this`20software,`20are`20the V Xresponsibility`20of`20the`20user. X XSupport`20and`20the`20latest`20version`20is`20available`20at X`20`20&0220http://freeware.oveas.com/omi $ call unpack [.OMI-V2_3]OMI$MENU.HLP;1 - 822730997 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 26 29 41 $! $ create 'f' X1`20Menu_File X XThe`20Menu`20File`20contains`20all`20specifications`20and`20ac\0C06of`20the`20 Vmenu Xstructures.`20The`20files`20are`20built`20with`20sections,`20specified`20as`20 Va`20name Xbetween`20square`20brackets`20(`5Bsection_name`5D). X XAny`20section`20name`20can`20be`20chosen.`20The`20elements`20that`20are`20spec Vified`20in`20the Xsection,`20are`20defined`20as`20symbols,`20and`20are`20available`20during`20th Ve`20OMI Xsession. X Xe.g.`20if`20the`20following`20section`20is`20defined: X X`20`20`5BMY_SECTION`5D X`20`20&0220A_STRING&0320=`20My`20String X`20`20&0220AN_INTEGER`20=`202 X Xthe`20symbols`20MY_SECTION$A_STRING`20(with`20value`20"My`20String")`20and XMY_SECTION$AN_INTEGER`20(with`20value`202)`20are`20available`20in`20OMI. X XThese`20sections`20are`20used`20for`20defining`20and`20configuring`20the`20men Vu Xstructure.`20For`20special`20purposes,`20the`20section`20names`20'COUNTER', X'MAIN',`20'SCREEN'`20and`20'QUESTIONS',`20and`20section`20names`20starting Xwith`20'MENU_'`20are`20reserved. X X2`20Forced_EOF X XIf`20a`20menu`20file`20needs`20contain`20a`20long`20description,`20this`20can V`20be`20placed Xbehind`20the`20''`20identifier.`20This`20improves`20performance`20when`20 VOMI Xreads`20the`20menu`20file,`20since`20it`20will`20stop`20reading`20and`20close V`20the`20file Xwhen`20it`20reads`20this`20identifier,`20skipping`20all`20comments`20that`20mi Vght`20follow. X XThe`20same`20identifier`20can`20also`20be`20used`20in`20configuration`20files. V X X3`20Example X X`20`20`20!`20Comments`20are`20at`20the`20bottom`20of`20this`20file X`20`20`20`5BMENU_MENU`5D X`20`20&0220`20ITEM1`20=`20Leave`20this`20menu#command#exit X X`20`20`20!`20Pretty`20short`20menu,`20isn't`20it?! X`20`20&0220`20 X`20`20`20 X X`20`20`20The`20example`20you`20are`20reading`20now`20is`20not`20described`20in V X`20`20`20this`20HELP,`20since\1106text`20is`20still`20a`20part`20of`20the`20ex Vample. X`20`20`20OMI`20won't`20read`20this`20from`20the`20menu`20file,`20since`20the V`20end-of-file X`20`20`20was`20already`20reached. X`20`20`20Therefore,`20the`20lines`20don't`20need`20to`20start`20with`20an`20ex Vclamation`20mark. X X2`20Special_Characters X XThe`20exclamation`20mark`20(!),`20double`20quote`20(")`20and`20accolades`20( V`7B`7D)`20cannot Xbe`20used`20for`20elements`20or`20values. XAn`20exclamation`20mark`20can`20be`20used`20for`20comments. X XThe`20hash`20(#),`20the`20pipe-sign`20(`7C)`20and`20the`20combination`20of`20t Vilde`20and Xquestionmark`20(`7E?)`20cannot`20be`20used`20in`20input-`20or`20item-`20elemen Vts. X X2`20Menu_section X XThe`20name`20of`20a`20menu`20section`20always`20starts`20with`20'MENU_',`20and V`20the`20top Xmenu`20has`20to`20be`20named`20'MENU',`20so`20a`20section`20`5BMENU_MENU`5D`20 Vis`20required. X XAll`20information,`20and`20all`20elements,`20of`20the`20menu`20are`20specified V`20inside Xa`20menu`20section. X X3`20Title X`20Format:`20TITLE`20=`20title X XSepcifies`20the`20title`20as`20it`20will`20be`20displayed`20in`20the`20menu`20 Vheader. X X3`20Comment X`20Format:`20COMMENT`20=`20string`20`5B`7Bvariable`7D`5D X XAn`20informational`20comment`20line`20can`20be`20used`20to`20display`20some`20 Vinfo Xabout`20the`20current`20menu`20at`20top`20of`20the`20window.`20This`20can`20be V`20any`20string. XIf`20you`20want`20to`20include`20variables`20in`20the`20comment`20string,`20en Vclose`20them Xby`20'`7B'`20'`7D'`20(eg.`20'`7Bvariable_name`7D') X X3`20Counter X`20Format:`20COUNTER`20=`20counter_name X XYou`20can`20add`20a`20counter`20to`20a`20menu,`20which`20will`20be`20increased V`20by`201`20every Xtime`20the`20menu`20is`20called.`20Thus,`20you`20can`20have`20more`20variables V`20with`20the Xsame`20name. X XIf`20you`20want`20to`20add`20a`20counter,`20you`20have`20to`20define`20a`20`5B VCOUNTER`5D`20section, Xcontaining`20all`20counter`20names. XSeveral`20menus`20can`20share`20the`20same`20counter,`20but`20only`20ony`20 V\1607`20per Xmenu`20is`20allowed. X X4`20Example X X`20`20`5BMENU_MENU`5D X`20`20&0220counter`20=`20my\0C07 X`20`20&0220item1&0220=`20New`20value#command#increase`20refresh X`20`20&0220input1`20=`20Enter`20a`20value#var'counter$my\0A07 X X`20`20`5BCOUNTER`5D X`20`20&0220mycounter`20=`200 X X`20`20This`20examples`20shows`20how`20counters`20can`20be`20used`20to`20create V`20an`20 X`20`20array-`20like`20variable.`20If`20the`20user`20calls`20the`20menu`20three V`20times, X`20`20entering`20a`20different`20value`20every`20time,`20or`20increases`20the V`20counter X`20`20by`20selecting`20the`20'New`20value'`20option`20(which`20calls`20the`20O VMI`20command X`20`20INCREASE`20with`20the`20REFRESH`20option).`20the`20variables`20'var1', V`20'var2' X`20`20and`20'var2'`20are`20set. X`20`20The`20initial`20value`20is`20set`20to`20zero,`20but`20is`20increased`20b Vy`20every`20call, X`20`20including`20the`20first`20one. X X3`20Auto_increase X`20Format:`20AUTO_INCREASE`20=`20(TRUE`20`7C`20FALSE) X X`20`20If`20a`20submenu`20uses`20a`20counter`20from`20another`20(higher`20level V)`20menu,`20and X`20`20default`20values`20are`20used`20in`20array-`20variables,`20the`20counter V`20has`20to X`20`20be`20specified`20in`20the`20menu. X`20`20To`20prevent`20the`20counter`20from`20being`20increased`20automatically, V`20set X`20`20the`20AUTO_INCREASE`20value`20in`20the`20submenu`20to`20FALSE. X`20`20If`20this`20element`20is`20set`20to`20TRUE`20or`20omitted,`20the`20count Ver`20value X`20`20will`20be`20increased`20each`20time`20the`20menu`20is`20chosen. X X3`20Auto_refresh X`20Format:`20AUTO_REFRESH`20=`20value X XWhen`20this`20element`20is`20specified,`20it`20gives`20the`20number`20of`20sec Vonds`20s\0806 Xthat`20OMI`20waits`20for`20input`20on`20the`20OMI`20prompt`20before`20the`20me Vnu`20screen`20is Xautomatically`20refreshed.`20The`20value`20should`20between\0808`200`20and`202 V55. XWhen`20this`20elemented`20is`20omitted,`20or`20has`20value`200,`20the`20automa Vtic`20screen Xrefresh`20is`20disabled. X X X3`20All_inputs X XBy`20default,`20OMI`20will`20display`20an`20option`20that`20can`20be`20selecte Vd`20to`20enter Xall`20input`20elements`20without`20selecting`20them`20separately.`20This`20can V`20be Xdisabled`20by`20adding`20the`20ALL_INPUTS`20element`20to`20a`20menu`20section V`20with Xvalue`20'0'`20or`20FALSE. X XThis`20ement`20will`20be`20disabled`20by`20default`20when`20the`20REQUIRED_ORD VER`20element Xis`20specified`20for`20this`20menu. X X3`20Name X`20Format:`20NAME`20=`20menu_name X XA`20menu`20can`20have`20a`20name,`20that`20can`20be`20used`20to`20jump`20to`20 Vthe`20menu`20immediatly Xfrom`20any`20other`20menu`20in`20the`20structure,`20or`20from`20the`20DCL`20co Vmmand`20prompt. X XIf`20a`20menu`20name`20is`20used`20to`20start`20up`20with`20a`20specified`20su Vbmenu,`20the`20complete Xmenu`20structure`20has`20to`20be`20started`20using`20a`20parameter,`20e.g.`20i Vf`20the`20menu`20file`20is XMY_MENU.MNU,`20and`20you`20want`20to`20start`20up`20with`20the`20submenu`20w V\1108name`20'SUB2', Xyou`20have`20to`20start`20up`20with`20the`20command: X`20`20$`20OMI`20MY_MENU`20SUB2 Xeven`20if`20the`20logical`20OMI$STARTMENU`20points`20to`20MY_MENU.MNU. X X3`20On_exit X`20Format:`20ON_EXIT`20=`20omi`20module X XSpecifies`20an`20OMI`20module`20that`20should`20be`20called`20when`20the`20use Vr Xexits`20the`20current`20(sub)`20menu.`20 X XThis`20module`20has`20default`20extension`20.OMI,`20and`20contains`20DCL`20com Vmands Xthat`20will`20be`20executed`20on`20exit.`20If`20the`20module`20returns`20the V`20value XOMI$_WARNING,`20control`20will`20be`20returned`20to`20the`20current`20menu. X X X3`20On_init X`20Format:`20ON_INIT`20=`20omi`20module X XSpecifies`20an`20OMI`20module`20that`20should`20be`20called`20when`20the`20use Vr Xenters`20the`20menu.`20 X XThis`20module`20has`20default`20extention`20.OMI,`20and`20contains`20DCL`20com Vmands Xthat`20will`20be`20executed`20when`20the`20menu`20starts`20up. XIf`20the`20module`20returns`20OMI$_WARNING,`20control`20will`20not`20be`20pass Ved`20to Xthe`20selected`20menu X X3`20Owner X`20Format:`20OWNER`20=`20username`5B,\0A08,...`5D X XThis`20menu`20specifies`20one`20or`20more`20usernames`20that`20will`20be`20con Vsidered Xas`20the`20owner(s)`20of`20the`20current`20menu.`20If`20a`20top`20menu`20(`5BM VENU_MENU`5D) Xas`20an`20owner`20specified,`20that`20user`20will`20also`20be`20the`20\2C06of V`20all Xsubmenus`20that`20have`20no`20owner`20specified. X XThe`20owner`20of`20a`20menu`20will`20have`20the`20highest`20security`20level V`20by`20default. XThis`20can`20be`20overwritten`20with`20a`20security`20section. X X3`20Required_order X`20Format:`20REQUIRED_ORDER`20=`20,`5B,...`5D X XThe`20user`20can`20be`20forced`20to`20enter`20the`20input`20values`20in`20a`20 Vpredefined Xorder.`20This`20can`20be`20done`20with`20the`20REQUIRED_ORDER`20element.`20Spe Vcify Xthe`20list`20of`20values`20in`20the`20proper`20order,`20separated`20by`20comma V.s,`20as Xthe`20value`20for`20this`20element.`20When`20the`20user`20selects`20an`20input V\2808 Xwhich`20is`20found`20in`20the`20REQUIRED_ORDER`20element,`20but`20not`20as`20t Vhe`20first Xone,`20a`20warning`20message`20is`20displayed,`20telling`20the`20user`20to`20s Velect Xanother`20input`20element`20first. X XIf`20the`20selected`20element`20is`20the`20first`20one`20required,`20it`20is V`20removed Xfrom`20the`20list`20and`20the`20user`20can`20enter`20the`20input.`20When`20 V\3009is Xcompletely`20empty`20(all`20required`20inputs`20have`20been`20ente\1906`20the V Xcorrect`20order),`20no`20checks`20will`20be`20performed`20untill`20the XRESET`20ORDER`20is`20issued`20from`20the`20menu. X XUsing`20the`20REQUIRED_ORDER`20element`20will`20set`20the`20ALL_INPUTS\2008 Xto`20FALSE. X X4`20Example X X`20`20`5BMENU_INPUTS`5D X`20`20&0220`20REQUIRED_ORDER`20=`201,2,3,5 X`20`20&0220`20INPUT1&0520&0420=`20Directory#`7BSEL`7CDIRLIST`7Ddirect X`20`20&0220`20INPUT2&0520&0420=`20Filename#`7BSEL`7CFN_.direct.LIST`7Dfname X`20`20&0220`20INPUT3&0520&0420=`20Filetype#`7BSEL`7CFTYPELIST`7Dftype X`20`20&0220`20INPUT4&0520&0420=`20Comment#c\0806line X`20`20&0220`20INPUT5&0520&0420=`20Action#`7BSEL`7CACTIONLIST`7Daction X X`20`20This`20example`20forces`20the`20user`20to`20enter`20input`20element`201 V X`20`20as`20the`20first`20one.`20With`20input`201,`20a`20value`20is`20selected V`20from X`20`20a`20select`20list,`20which`20is`20required`20to`20determin`20from\2306 X`20`20select`20list`20input`202`20has`20to`20be\1E07ed. X`20`20In`20the`20example,`20input`205`20cannot`20be`20selected`20when`20the X`20`20inputs`201,`202`20and`203`20have`20not`20been`20selected`20yet. X`20`20Input`204`20is`20optional. X X X3`20Security X`20Format:`20SECURITY`20=`20security_section X XIf`20specified,`20this`20should`20point`20to`20a`20section`20with`20the`20same V`20name, Xin`20which`20userames`20can`20be`20specified,`20and`20their`20security`20level V. XFor`20more`20information,`20refer`20to`20the`20'Menu_file`20Security_section' V Xsubtopic. X X3`20Password X XThis`20element`20holds`20the`20password`20in`20encrypted`20format.`20It`20cann Vot`20be Xmodified`20using`20an`20editor;`20a`20password`20can`20only`20be`20set`20or`20 Vchanged Xwith`20the`20SET`20PASSWORD`20command`20from`20the`20menu`20prompt. X XIf`20it`20is`20usefull`20to`20add`20a`20password`20using`20the`20editor`20anyw Vay, Xthis`20can`20be`20done`20by`20specifying`20the`20password`20element`20with`20a Vn`20equals- Xsign,`20but`20without`20a`20value: X X`20`20password`20= X XThe`20password`20will`20default`20to`20'Omi$System'`20(case`20sensitive!). XThis`20can`20be`20used`20as`20a`20reminder`20to`20change`20the`20passwors`20in Vter- Xactive. X X3`20Password_level X XDefines`20the`20security`20level`20for`20all`20users`20when`20a`20password`20i Vs`20required. XThis`20is`20valid`20for`20all`20users,`20including`20the`20menu-owner. XThe`20value`20should`20be`20specified`20as`20an`20integer,`20which`20stand`20f Vor`20the Xfollowing`20security`20levels: X X`20`20`200&0320&0320&0320NONE X`20`20`201&0320&0320&0320READ X`20`20`202&0320&0320&0320EXEC X`20`20`203&0320&0320&0320WRITE X XFor`20more`20information`20about`20the`20security`20levels,`20refer`20to`20the V X'Menu_file`20Security_section'`20subtopic. XIf`20this`20element`20is`20not`20specified,`20the`20default`20security`20handl Ving Xis`20used. X X3`20Prompt X`20Format:`20PROMPT`20=`20prompt X XThe`20prompt`20element`20defines`20t\1B0Athat`20will`20show`20up`20in`20the`20 Vmenu. XEvery`20submenu`20can`20have`20its`20own`20prompt.`20If`20none`20is`20specifie Vd,`20the`20\2206 Xfrom`20the`20toplevel`20menu`20is`20used.`20If`20no`20prompt`20element`20is`20 Vfound`20at`20all, Xthe`20prompt`20from`20the`20configuration`20file`20(element`20option`20from`20 Vsection X`5BQUESTIONS`5D)`20is`20used. XThis`20last`20prompt`20will`20always`20be`20used`20if`20it`20is`20protected. X X X3`20Item X`20Format:`20ITEMn`20=`20Text`20on`20display#item`20type#value`20for`20type X XItems`20can`20be`20used`20to`20define`20the`20menu`20structure,`20and`20the`20 Vactual Xactions`20being`20taken. X XThe`20keyword`20ITEM`20has`20to`20be`20followed`20by`20an`20integer,`20startin Vg`20with X'1',`20and`20without`20gaps`20in`20the`20counting,`20so`20if`20a`20menu`20has V`20three Xitem`20elements,`20they`20have`20to`20be`20specified`20as`20ITEM1,`20ITEM2`20a Vnd`20ITEM3. X XThe`20value`20of`20items`20consists`20of`20three`20arguments,`20separated`20by V`20a`20hash`20(#). XThe`20first`20argument`20represents`20how`20the`20option`20will`20be`20display Ved`20on`20the Xwindow. X XThe`20second`20argument`20specifies`20the`20item`20type,`20which`20can`20be`20 VCALL, XCOMMAND`20or`20SUBMENU. X XThe`20meaning`20of`20the`20third`20argument`20depends`20on`20the`20item`20type V. XBoth`20CALL`20and`20COMMAND`20types`20can`20have`20dynamic`20input`20in`20the V Xthird`20argument.`20An`20example`20of`20this`20is`20given`20in`20the`20COMMAND V Xsubtopic`20below. X X4`20CALL X XThis`20item`20type`20specifies`20that`20a`20OMI`20module`20should Xbe`20executed.`20This`20differs`20from`20a`20DCL`20@`20in`20a`20way V Xthat`20it`20is`20executed`20silently,`20and`20takes`20advantage`20of`20several V XOMI`20commands`20and`20symbols. X XThe`20third`20argument`20of`20the`20item`20value`20should`20be`20the`20full`20 Vpath`20and Xname`20of`20a`20DCL`20procedure,`20without`20the`20at-sign`20('@'). XThe`20default`20file`20type`20for`20OMI`20modules`20is`20OMI. X XIf`20the`20procedure`20should`20be`20called`20with`20parameters,`20they Xcan`20be`20specified`20in`20the`20third`20argument. X XA`20CALL`20item`20type`20can`20have`20dynamic`20input.`20For`20a`20description V, Xrefer`20to`20the`20help`20topic`20of`20the`20COMMAND`20item`20type. X X***`20NOTE:`20When`20a`20OMI`20module`20is`20executed,`20all`20error, X`20`20&0220&0420&0220warning`20and`20informational`20messages`20are`20supprese Vd. X`20`20&0220&0420&0220If`20you`20don't`20want`20this,`20use`20the`20command X`20`20&0220&0420&0320$`20SET`20MESSAGE`20'OMI$_\0E07' X`20`20&0220&0420&0220in`20the`20top`20of`20the`20procedure. X X4`20COMMAND X XExecute`20an`20OMI`20command.`20The`20\0D07`20that`20should`20be`20e\3306d Xshould`20be`20specified`20in`20the`20third`20argument`20of`20the`20item`20valu Ve, Xincluding`20all`20keywords. X X5`20Dynamic_input X XDynamic`20input`20can`20be`20asked`20by`20using`20the`20string`20'`7E?'`20whic Vh Xwill`20be`20substituted`20by`20any`20value`20the`20user`20enters.`20When`20the V Xoption`20is`20selected,`20the`20prompt`20DEFAULT_PROMPT`20from`20the X`5BQUESTIONS`5D`20section`20in`20the`20configuration`20file`20is`20used`20to Xask`20the`20user`20for`20additional`20input,`20or`20another`20prompt`20if`20sp Veci- Xfied. X XThis`20can`20be`20specified`20by`20adding`20'`7Bprompt`7D'`20to`20the`20substi Vtute Xstring`20(eg`20'`7E?`7BGive`20some`20input`7D') X XDynamic`20input`20can`20also`20be`20validated`20and`20formatted`20using`20a V\1207 Xsection.`20This`20requires`20a`20prompt`20enclosed`20by`20accolades.`20After V`20the Xprompt`20(still`20between`20the`20accolades),`20the`20name`20of`20the`20format V`20section Xto`20use`20can`20be`20specified.`20The`20prompt`20and`20section`20name`20are V`20separated Xby`20a`20pipe-sign`20(`7C). X XFor`20more`20information`20about`20\1006ting`20sections,`20refer`20to\1308 Xthe`20help`20topic`20'Menu_File',`20'Format_Section' XAll`20CALL`20and`20COMMAND`20item`20types`20can`20have`20an`20unlimited`20numb Ver`20of Xdynamic`20inputs. XMore`20substitute`20string`20can`20be`20specified`20in`20the`20third`20argumen Vt. X X5`20Example X X`20`20ITEM1`20=`20Type`20a`20file#COMMAND#DCL`20TYPE`20`7E?`7BFilename:`7CFILE V_FORMAT`7D`20/PAGE X X`20`20`5BFILE_FORMAT`5D X`20`20&0220`20TYPE&0520=`20FILESPEC X`20`20&0220`20REQUIRED`20=`20TRUE X`20`20&0220`20FTYPE&0420=`20.TXT X X`20`20When`20this`20option`20is`20selected,`20the`20following`20prompt X`20`20will`20appear: X X`20`20`20Filename:`20 X X`20`20If`20the`20user`20enters`20MYFILE,`20the`20file`20\1106.TXT`20will`20be V X`20`20displayed. X X4`20SUBMENU X`20`20 XThis`20points`20to`20a`20submenu.`20The`20third`20argument`20has`20to`20contai Vn Xthe`20name`20of`20the`20menu`20section`20(without`20the`20'MENU_'`20string!). V X XYou`20can`20also`20specify`20dynamic`20menus.`20This`20is`20done`20in`20the Xthird`20argument.`20In`20stead`20of`20'menu_name',`20it`20should`20contain Xthe`20value X X`20'`7Btext`20on`20display`7Cmenu_name`7D\1B1BPrompt' X XYou`20can`20have`20as`20menus`20in`20dynamic`20menu`20lists`20as`20you`20like, V Xbut`20take`20care`20the`20total`20length`20of`20the`20record`20in`20the`20MNU V Xfile,`20including`20leading`20blanks`20and`20the`20'ITEMn`20=`20',`20is`20less V Xthan`20256`20characters`20(instead`20of`20the`20VMS`20default`20of`20512). X XAlso,`20if`20the`20list`20is`20too`20long,`20displaying`20can`20screw`20up Xthe`20window`20screen.`20This`20has`20no`20effect`20on`20the`20functionality, V Xbut`20the`20user'll`20have`20to`20enter`20the`20REFRESH`20command`20after Xselecting`20a`20menu. X X4`20Examples X X`20`201.`20`5BMENU_MENU`5D X`20`20&0220&0220ITEM1&0220=`20Go`20to`20the`20second`20Menu#SUBMENU#SECOND_MEN VU X X`20`20&0220`20`5BMENU_SECOND_MENU`5D X X`20`20`20In`20this`20example,`20the`20text`20"Go`20to`20the`20second`20Menu" V`20is X`20`20`20displayed`20for`20this`20item.`20When`20selected,`20OMI`20will`20call V X`20`20`20the`20menu`20SECOND_MENU.`20This\1706is`20described`20in`20the X`20`20`20section`20called`20MENU_SECOND_MENU. X X`20`202.`20`5BMENU_MENU`5D X`20`20&0220&0220ITEM1&0220=`20Dynamic`20Menu#SUBMENU#`7BMenu`201`7CSUB1`7D V\0D062`7CSUB2`7DWhich`20Menu: X X`20`20&0220`20`5BMENU_SUB1`5D X`20`20&0220&0220!`20Menu`20definitions... X X`20`20&0220`20`5BMENU_SUB2`5D X`20`20&0220&0220!`20Menu`20definitions... X`20 X`20`20`20Here,`20one`20item`20can`20call`20two`20different`20menus.`20Selectio Vn`20of X`20`20`20this`20item`20will`20display`20a`20list`20that`20will`20look`20like V`20this: X X`20`20&0220&0420\0808&0220+-----------+ X`20`20&0220&0420\0808&0220`7C`201>`20Menu`201`20`7C X`20`20&0220&0420\0808&0220`7C`202>`20Menu`202`20`7C X`20`20&0220&0420\0808&0220+-----------+ X X`20`20On`20the`20command`20line,`20the`20prompt`20'Which`20Menu:'`20will`20be V X`20`20displayed.`20The`20menu`20that'll`20be`20called,`20depends`20on`20the X`20`20users`20input. X X X3`20Input X XInputs`20can`20be`20used`20to`20collect`20information`20from`20th\2506,`20that V`20can Xbe`20passed`20to`20OMI`20modules. X XThe`20keyword`20INPUT`20has`20to`20be`20followed`20by`20an`20integer,`20starti Vng`20with X'1',`20and`20without`20gaps`20in`20the`20counting,`20so`20if`20a`20menu`20has V`20three Xinputs,`20they`20have`20to`20be`20specified`20as`20INPUT1,`20INPUT2`20and`20IN VPUT3. X XThe`20value`20of`20inputs`20consists`20of`20two`20to`20four`20arguments,`20sep Varated`20by`20a Xhash`20(#).`20The`20first`20argument`20represents`20how`20the`20option`20will V`20be Xdisplayed`20on`20the`20window. X XThe`20second`20argument`20specifies`20the`20a`20variable`20name.`20This`20 V\2D08 Xcan`20also`20be`20used`20to`20specify`20how`20the`20value`20is`20gathered.`20t Vhe`20input`20can`20be X'straight'`20using`20a`20'select`20list'`20or`20a`20'tag`20list' X XThe`20third`20argument`20can`20be`20a`20default`20value`20(except`20when`20usi Vng`20a Xtag`20list),`20and`20for`20straight`20inputs,`20the`20fourth`20argument`20can V Xpoint`20to`20a`20formatting`20section. X X4`20Straight_input X`20Format:`20INPUTn`20=`20Text`20on`20display#variable`20name`5B#default`20val Vue`5D`5B#format`5D X XThis`20input`20type`20just`20lets`20the`20user`20enter`20input,`20which`20will V`20be`20stored Xin`20the`20variable`20name. X XThe`20third`20argument`20is`20optional,`20and`20can`20specify`20a`20default`20 Vvalue. XThe`20fourth`20argument`20can`20point`20to`20a`20section`20in`20which`20 Xcharacteristics`20of`20the`20value`20are`20specified.`20For`20more`20informati Von, Xrefer`20to`20the`20'Menu_file`20Format_section'`20subtopic. X XIf`20a`20format`20section`20is`20used,`20but`20no`20default`20value,`20the V\1308 Xvalue`20has`20to`20be`20specified`20as`20empty,`20e.g.: X X`20`20Text`20on`20display#variable`20name##format X X4`20Select_list X`20Format:`20INPUTn`20=`20Text`20on`20display#`7BSEL`7Csellist`7Dvariable`20na Vme`5B#default`20value`5D X XIf`20the`20user`20cannot`20freely`20enter`20any`20input,`20a`20list`20with`20c Vhoices Xcan`20be`20presented,`20from`20which`20the`20user`20can`20make`20selections. X XTo`20do`20so,`20the`20second`20argument`20starts`20with`20the`20SEL`20keyword, V`20followed Xby`20the`20pipe`20sign`20and`20the`20name`20of`20a`20section`20with`20choices, V`20enclosed Xby`20acculades. X XThe`20select`20section`20contains`20a`20list`20of`20variables,`20called XVALUE1...VALUEn`20that`20will`20be`20displayed X XThe`20optional`20third`20argument`20points`20to`20the`20default`20value. X X5`20Example X X`20`20&0220`20`5BMENU_MENU`5D X`20`20&0220&0220INPUT1&0220=`20Confirm#`7BSEL`7CCONF`7Dc\1207VALUE2 X X`20`20&0220`20`5BCONF`5D X`20`20&0220&0220VALUE1`20=`20Yes X`20`20&0220&0220VALUE2`20=`20No X`20`20&0220&0220VALUE3`20=`20Cancel X`20 X X`20`20`20When`20this`20input`20element`20is`20selected,`20the`20user`20can`20 V\1706`20one X`20`20`20of`20the`20predefined`20values`20by`20entering`20'1',`20'2'`20or`20'3 V'. X`20`20`20VALUE2`20is`20specified`20as`20the`20default`20value,`20which`20means V X`20`20`20default`20is`20'No' X`20`20`20The`20window`20that`20will`20be`20displayed`20looks`20like`20this: X X`20`20&0220&0420\0808&0220+-----------+ X`20`20&0220&0420\0808&0220`7C`201>`20Yes&0420`7C X`20`20&0220&0420\0808&0220`7C`202>`20No\0C06 X`20`20&0220&0420\0808&0220`7C`203>`20Cancel`20`7C X`20`20&0220&0420\0808&0220+-----------+ X X X`20`20`20When`20this`20input`20is`20asked`20using`20the`20ALL`20command,`20the V`20current X`20`20`20value`20is`20highlighted,`20so`20if`20the`20default\2807hasn't`20been V X`20`20`20changed,`20the`20select`20window`20when`20the`20ALL`20command`20is`20 Vuser`20will X`20`20`20look`20like`20this: X X`20`20&0220&0420\0808&0220+-----------+ X`20`20&0220&0420\0808&0220`7C`201>`20Yes&0420`7C X`20`20&0220&0420\0808&0220`7C`202>`20`1B`5B7mNo`1B`5B0m\1406 X`20`20&0220&0420\0808&0220`7C`203>`20Cancel`20`7C X`20`20&0220&0420\0808&0220+-----------+ X X4`20Tag_list X`20Format:`20INPUTn`20=`20Text`20on`20display#`7BTAG`7Ctaglist`7Dvariable`20na Vme X XIf`20a`20variable`20needs`20to`20contain`20a`20list`20of`20values,`20that`20ca Vn`20be Xsearched`20in`20a`20OMI`20module`20useing`20the`20F$ELEMENT`20lexical, Xtag`20lists`20can`20be`20used`20as`20an`20input`20element. X XThis`20is`20done`20by`20specifying`20the`20keyword`20TAG,`20followed`20by`20a V Xpipe`20sign`20and`20the`20name`20of`20a`20tag`20list,`20enclosed`20by`20accola Vdes, Xin`20front`20of`20the`20variable`20name`20in`20the`20second`20argument. X XWhen`20selected,`20all`20possible`20values`20will`20be`20displayed`20on`20the V Xmenu`20screen,`20and`20the`20user`20can`20select`20all`20desired`20values, Xwhich`20will`20be`20highlighted. X XPressing`20Ctrl/Z`20will`20return`20to`20the`20menu`20screen.`20By`20then, Xall`20values`20have`20been`20stored`20in`20the`20named`20variable, Xseparated`20by`20a`20specified`20delimiter. X XThe`20layout`20of`20the`20taglist`20section`20is`20described`20in`20the X'Menu_file`20Taglist_section'`20subtopic. X XA`20tag`20list`20cannot`20have`20a`20default`20value. X X5`20Example X X`20`20&0220`20`5BMENU_MENU`5D X`20`20&0220&0220INPUT1&0220=`20Select`20days#`7BTAG`7CWEEKDAYS`7Ddaylist X X`20`20&0220`20`5BWEEKDAYS`5D X`20`20&0220&0220DELIMITER`20=`20/ X`20`20&0220&0220VALUE1\0C06=`20Monday X`20`20&0220&0220VALUE2\0C06=`20Tuesday X`20`20&0220&0220VALUE3\0C06=`20Wednesday X`20`20&0220&0220VALUE4\0C06=`20Thursday X`20`20&0220&0220VALUE5\0C06=`20Friday X`20`20&0220&0220VALUE6\0C06=`20Saturday X`20`20&0220&0220VALUE7\0C06=`20Sunday X`20 X`20`20`20If`20this`20option`20is`20selected,`20a`20list`20of`20weekdays`20will V`20be`20presented X`20`20`20in`20the`20menu`20window`20with`20all`20days`20preceded`20by`20option V`20numbers`201-7, X`20`20`20and`20option`208`20to`20reverse`20the`20current`20selection. X X`20`20`20If`20the`20user`20selects`20the`20numbers`201,`203`20and`205`20(one V`20at`20a`20time),`20the X`20`20`20value`20of`20the`20variable`20'daylist'`20will`20be X`20`20`20"Monday/Wednesday/Friday/" X X2`20Selectlist_section X XSelection`20lists`20can`20be`20used`20to`20predefine`20the`20number`20of`20opt Vions Xa`20user`20can`20choose`20from`20when`20input`20is`20required. X XThe`20name`20of`20a`20selectlist`20section`20can`20be`20freely`20choosen,`20bu Vt Xit`20must`20be`20the`20same`20in`20the`20input`20element`20where`20it's`20bein Vg`20called Xfrom`20(refer`20to`20the`20subtopic`20'Menu_file`20Menu_section`20Input`20Sele Vct_list' Xfor`20more`20information). X XThe`20selectlist`20section`20only`20contains`20numbered`20VALUE`20elements,`20 Vlike X X`20`20`20VALUE1&0220=`20any`20value X`20`20`20VALUE2&0220=`20any`20value X`20`20`20VALUE3&0220=`20any`20value X XOne`20of`20the`20options`20(the`20last`20one`20is`20recommended),`20can`20be V`20enclosed Xby`20accolades.`20This`20means,`20the`20user`20does`20not`20have`20to`20select V`20from Xthe`20list,`20but`20can`20also`20enter`20free`20input. X***`20NOTE:`20if`20this`20possibility`20is`20used,`20it`20won't`20display`20ve Vry X`20`20&0220&0420&0220nicely`20if`20the`20same`20list`20is`20used`20as`20a`20ta Vg-\1706 X`20`20&0220&0420&0220somewhere`20else. X XIn`20stead`20of`20specifying`20values,`20it`20is`20also`20possible`20to`20incl Vude`20a XFILENAME`20element.`20This`20should`20point`20to`20a`20file,`20that`20contains V`20a`20list Xof`20values,`20that`20will`20be`20defined`20as`20VALUE1,`20VALUE2,...\1306n XThe`20default`20location`20of`20the`20file`20is`20OMI$MENU_DIRECTORY,`20or`20O VMI$ Xif`20not`20found`20there. X X3`20Example X X`20`201.`20`5BSYSTEM_USERS`5D X`20`20&0220&0220VALUE1\0C06=`20RDB$REMOTE X`20`20&0220&0220VALUE2\0C06=`20RDM_MONITOR X`20`20&0220&0220VALUE3\0C06=`20SYSTEM X`20`20&0220&0220VALUE4\0C06=`20SYSTEST X`20`20&0220&0220VALUE5\0C06=`20SYSTEST_CLIG X`20`20&0220&0220VALUE6\0C06=`20UCX$FTP X`20`20&0220&0220VALUE7\0C06=`20UCX$NTP X`20`20&0220&0220VALUE8\0C06=`20UCX$REXEC X`20`20&0220&0220VALUE9\0C06=`20UCX$RSH X`20`20&0220&0220VALUE10&0520=`20UCX$SNMP X`20`20&0220&0220VALUE11&0520=`20UCX_LPD X`20`20&0220&0220VALUE12&0520=`20UCX_SMTP X`20`20&0220&0220VALUE13&0520=`20DEFAULT X`20`20&0220&0220VALUE14&0520=`20`7BOther`20user`7D X X`20`20&0220`20This`20list`20lets`20the`20user`20select`20a`20VMS`20System`20us Vername.`20However, X`20`20&0220`20if`20the`20user`20needs`20to`20select`20a`20username`20that's`20 Vnot`20in`20the`20list, X`20`20&0220`20selecting`2014`20will`20cause`20OMI`20to`20prompt`20for`20'Other V`20username'. X`20`20&0220`20The`20value`20between`20accolades`20is`20t\1F09as`20displayed`20 Vin`20the X`20`20&0220`20list,`20and`20will`20also`20be`20used`20as`20prompt`20when`20thi Vs`20option`20is X`20`20&0220`20selected. X X`20`202.`20Menu`20file: X`20`20&0220`20`5BMENU_PLANNING`5D X`20`20&0220&0320INPUT1&0220=`20Select`20a`20weekend#`7BSEL`7CWEEKENDS`7Dselect Ved_\1F07 X X`20`20&0220`20`5BWEEKENDS`5D X`20`20&0220&0320FILENAME&0220=`20''F$EXTRACT(3,3,F$TIME())'.DAT X X`20`20&0220`20File`20NOV.DAT: X`20`20&0220&0320November`201`20and`202 X`20`20&0220&0320November`208`20and`209 X`20`20&0220&0320November`2015`20and`2016 X`20`20&0220&0320November`2022`20and`2023 X`20`20&0220&0320November`2019`20and`2030 X X`20`20&0220`20This`20example`20shows`20the`20use`20for`20input`20files`20in`20 Vtag-`20or`20select`20lists. X`20`20&0220`20The`20VALUEn`20fields`20are`20filled`20dynamiccally`20with`20val Vues`20from`20the X`20`20&0220`20specified`20file.`20The`20file`20in`20this`20example`20changes V`20every`20month,`20and X`20`20&0220`20contains`20all`20dates`20for`20the`20weekends`20in`20the`20selec Vted`20month. X X`20`20&0220`20In`20stead`20of`20reading`20the`20variable`20from`20F$TIME(),`20 Vit`20s`20also`20possible X`20`20&0220`20to`20use`20another`20input`20element`20to`20get`20the`20variable V`20pointing`20to`20the X`20`20&0220`20requested`20value`20file. X X2`20TagList_section X XTag`20lists`20can`20be`20used`20to`20create`20a`20list`20of`20values`20that`20 Vcan Xbe`20examined`20useing`20the`20F$ELEMENT`20in`20OMI`20modules.`20It Xdisplays`20a`20list`20of`20possible`20values`20that`20can`20be`20tagged`20and V Xuntagged. X XThe`20name`20of`20a`20taglist`20section`20can`20be`20freely`20choosen,`20but Xit`20must`20be`20the`20same`20in`20the`20input`20element`20where`20it's`20bein Vg`20called Xfrom`20(refer`20to`20the`20subtopic`20'Menu_file`20Menu_section`20Input`20Tag_ Vlist' Xfor`20more`20information). X XAll`20options`20are`20stored`20in`20the`20taglist`20as`20VALUEn,`20where`20'n' V`20is Xan`20integer,`20starting`20with`20one. X XAnother`20required`20element`20of`20this`20section`20is`20the`20DELIMITER.`20T Vhis Xis`20used`20to`20separate`20the`20chosen`20values`20when`20stored`20in`20the V`20variable. X XOptionally,`20a`20message`20can`20be`20specified`20that`20will`20be`20displaye Vd`20on Xthe`20top`20of`20the`20window`20screen.`20This`20can`20be`20used`20to`20give V`20the`20user`20a Xsmall`20explanation`20of`20what's`20expected. X XIn`20stead`20of`20specifying`20values,`20it`20is`20also`20possible`20to`20incl Vude`20a XFILENAME`20element.`20This`20should`20point`20to`20a`20file,`20that`20contains V`20a`20list Xof`20values,`20that`20will`20be`20defined`20as`20VALUE1,`20VALUE2,...\1306n XThe`20default`20location`20of`20the`20file`20is`20OMI$MENU_DIRECTORY,`20or`20O VMI$ Xif`20not`20found`20there. X X3`20Examples X X`20`201.`20`5BWEEKDAYS`5D X`20`20&0220&0320MESSAGE&0320=`20Select`20the`20day(s)`20on`20which`20the`20job V`20should`20run X`20`20&0220&0320DELIMITER`20=`20/ X`20`20&0220&0320VALUE1\0D06=`20Monday X`20`20&0220&0320VALUE2\0D06=`20Tuesday X`20`20&0220&0320VALUE3\0D06=`20Wednesday X`20`20&0220&0320VALUE4\0D06=`20Thursday X`20`20&0220&0320VALUE5\0D06=`20Friday X`20`20&0220&0320VALUE6\0D06=`20Saturday X`20`20&0220&0320VALUE7\0D06=`20Sunday X X`20`20&0220`20This`20example`20shows`20a`20list`20of`20days`20that`20can`20be V`20tagged X X`20`202.`20Menu`20file: X`20`20&0220`20`5BMENU_PLANNING`5D X`20`20&0220&0320INPUT1&0220=`20Weekends`20to`20work#`7BTAG`7CWEEKENDS`7Dwork_w V\2407 X X`20`20&0220`20`5BWEEKENDS`5D X`20`20&0220&0320MESSAGE&0320=`20Select`20the`20weekend`20day(s)`20you`20want V`20to`20work`20this`20month X`20`20&0220&0320DELIMITER`20=`20/ X`20`20&0220&0320FILENAME&0220=`20''F$EXTRACT(3,3,F$TIME())'.DAT X X`20`20&0220`20File`20NOV.DAT: X`20`20&0220&0320Saturday`201st X`20`20&0220&0320Sunday`202nd X`20`20&0220&0320Saturday`208th X`20`20&0220&0320Sunday`209th X`20`20&0220&0320Saturday`2015th X`20`20&0220&0320Sunday`2016th X`20`20&0220&0320Saturday`2022nd X`20`20&0220&0320Sunday`2023rd X`20`20&0220&0320Saturday`2029th X`20`20&0220&0320Sunday`2030th X X`20`20&0220`20This`20example`20shows`20the`20use`20for`20input`20files`20in`20 Vtag-`20or`20select`20lists. X`20`20&0220`20The`20VALUEn`20fields`20are`20filled`20dynamiccally`20with`20val Vues`20from`20the X`20`20&0220`20specified`20file.`20The`20file`20in`20this`20example`20changes V`20every`20month,`20and X`20`20&0220`20contains`20all`20dates`20for`20the`20weekends`20in`20the`20selec Vted`20month. X X`20`20&0220`20In`20stead`20of`20reading`20the`20variable`20from`20F$TIME(),`20 Vit`20s`20also`20possible X`20`20&0220`20to`20use`20another`20input`20element`20to`20get`20the`20variable V`20pointing`20to`20the X`20`20&0220`20requested`20value`20file. X X2`20Format_section X XIf`20a`20straight`20input`20element`20(see`20subtopic`20'Menu_file`20Menu_sect Vion XInput`20Straigh_input')`20contains`20a`20fourth`20argument,`20this`20should`20 Vbe Xthe`20name`20of`20a`20format`20section. X XThis`20section`20contains`20a`20description`20of`20what`20kind`20of`20input`20 Vis Xexpected,`20and/or`20how`20the`20input`20should`20be`20formatted. X XThe`20keyword`20'type'`20is`20required`20in`20the`20format`20section.`20This V`20can Xbe`20STRING,`20FILESPEC,`20INTEGER,`20DATE`20or`20TIME. X XWhen`20arguments`20of`20any`20of`20the`20type`20described`20below,`20are`20omi Vtted, Xthey`20will`20default`20to`20'false'. X X3`20FileSpec_type X XThis`20indicates`20the`20input`20should`20be`20a`20filename,`20with`20or`20wit Vhout`20a Xdevice`20and`20directory`20specification. X XIf`20the`20input`20contains`20blanks,`20they`20will`20be`20removed,`20and`20th Ve`20file Xname`20will`20automaticcally`20be`20converted`20to`20uppercase. X XThe`20following`20keywords`20can`20be`20used`20for`20validating: X X`20`20REQUIRED&0220&0220&0220`5BTRUE`20or`20FALSE`5D X`20`20&0220&0420\0808If`20set`20to`20TRUE,`20OMI`20checks`20to`20see`20if`20th Ve`20file X`09`09exists.`20If`20not,`20an`20error`20is`20displayed. X X`20`20WILDCARDS&0220&0220`20`5BTRUE`20or`20FALSE`5D X`20`20&0220&0420\0808If`20set`20to`20true,`20OMI`20will`20allow`20wildcards`20 V('*' X`20`20&0220&0420\0808and`20'%')`20in`20the`20file`20name. X X`20`20FDEVICE&0220&0220&0320`5Bdevice`20name`5D X`20`20&0220&0420\0808Enter`20a`20default`20device`20name X X`20`20FDIRECTORY&0220&0220`5Bdirectory`20name`5D X`20`20&0220&0420\0808Enter`20a`20default`20directory`20name X X`20`20FTYPE&0220&0220&0420`20`5Bfile`20type`5D X`20`20&0220&0420\0808Enter`20a`20default`20file`20type X X3`20String_type X XThis`20indicates`20the`20input`20should`20be`20of`20the`20STRING`20type.`20An V`20invalid Xrespons`20will`20result`20in`20a`20warning`20message. X XThe`20following`20keywords`20can`20be`20used`20for`20formatting`20and`20valida Vting: X X`20`20UPCASE&0220&0220&0420`5BTRUE`20or`20FALSE`5D X`20`20&0220&0420\0808If`20set`20to`20TRUE,`20the`20input`20string`20will`20be V`20coverted X`20`20&0220&0420\0808to`20upcase. X`20`20&0220&0420\0808 X`20`20LOWERCASE&0220&0220`20`5BTRUE`20or`20FALSE`5D X`20`20&0220&0420\0808If`20set`20to`20TRUE,`20the`20input`20string`20will`20be V`20coverted X`20`20&0220&0420\0808to`20lowercase. X`20`20&0220&0420\0808 X`20`20COLLAPSE&0220&0220&0220`5BTRUE`20or`20FALSE`5D X`20`20&0220&0420\0808If`20set`20to`20TRUE,`20all`20blanks`20and`20tabls`20will V`20be`20 X`20`20&0220&0420\0808removed`20from`20the`20input`20string. X`20`20&0220&0420\0808(in`20versions`20prior`20to`20v2.3,`20the`20keyword`20BLA VNKS`20performed X`20`20&0220&0420\0808the`20same`20action.`20This`20keyword`20is`20still`20supp Vorted,`20but X`20`20&0220&0420\0808will`20be`20overwritten`20by`20the`20value`20of`20COLLAPS VE). X X`20`20MINLENGTH&0220&0220`20Mininum`20number`20of`20characters X X`20`20MAXLENGTH&0220&0220`20Maximum`20number`20of`20characters X X`20`20IVCHARS&0220&0220&0320`5Blist`20of`20invalid`20characters`5D X`20`20&0220&0420\0808Specify`20a`20list`20of`20characters`20that`20are`20not V`20allowed X`20`20&0220&0420\0808in`20the`20input`20string.`20If`20any`20if`20the`20listed V`20characters X`20`20&0220&0420\0808are`20encoutered,`20a`20warning`20message`20will`20be`20d Visplayed X X`20`20&0220&0420\0808***`20NOTE1:`20If`20this`20list`20should`20contain`20a`20 Vblank,`20i\1B08 X`20`20&0220&0420\0808\100Bbe`20enclosed`20by`20other`20characters,`20it`20can V`20NOT X`20`20&0220&0420\0808\100Bbe`20the`20first`20or`20last`20character`20of`20the V`20list. X X`20`20&0220&0420\0808***`20NOTE2:`20The`20list`20can`20not`20contain`20an`20ex Vclamation X`20`20&0220&0420\0808\100Bmark`20(!)`20or`20a`20double`20quote`20("). X X3`20Integer_type X XThis`20indicates`20the`20input`20should`20be`20of`20the`20INTEGER`20type.`20An V`20invalid Xrespons`20will`20result`20in`20a`20warning`20message. X XThe`20following`20keywords`20can`20be`20used`20for`20validating: X X`20`20MIN&0220&0220&0420&0320Lowest`20value`20allowed X`20`20MAX&0220&0220&0420&0320Highest`20value`20allowed X`20`20FLOAT&0220&0220&0420`20`5BTRUE`20or`20FALSE`5D X`20`20&0220&0420\0808Specifies`20the`20input`20value`20can`20be`20a`20floating V`20point`20 X`20`20FLOAT_POINT&0220`20`5B.`20or`20,`5D X`20`20&0220&0420\0808Specifies`20which`20character`20will`20be`20used`20as`20t Vhe X`20`20&0220&0420\0808floating`20point`20character.`20It`20overwrites`20the X`20`20&0220&0420\0808default`20value`20from`20the`20configuration`20file. X`20`20&0220&0420\0808NOTE:`20Input`20entered`20by`20the`20user,`20must`20conta Vin X`20`20&0220&0420\0808\1006the`20same`20floating`20point`20character! X X X3`20Date_type X XThis`20indicates`20the`20input`20should`20be`20of`20the`20DATE`20type.`20An`20 Vinvalid Xrespons`20will`20result`20in`20a`20warning`20message. X XThe`20following`20keyword`20can`20be`20used`20for`20formatting: X X`20`20FORMAT&0220&0220&0420`5BABSOLUTE,`20COMPARISON`20or`20DELTA`5D X`20`20&0220&0420\0808Specify`20the`20format`20to`20which`20the`20input`20will V`20be X`20`20&0220&0420\0808converted. X X3`20Time_type X XThis`20indicates`20the`20input`20should`20be`20of`20the`20TIME`20type.`20An`20 Vinvalid Xresponse`20will`20result`20in`20a`20warning`20message.`20The`20user`20res\3406 Vhas Xto`20be`20a`20valid`20time`20format`20(HH:MM`20`5BAM`7CPM`5Dor`20HH.\100A). X XThe`20following`20keywords`20can`20be`20used`20for`20formatting: X X`20`20HOURS&0220&0220&0420`20`5B12`20or`2024`5D X`20`20&0220&0420\0808Specifies`20if`20the`20time`20should`20be`20in`2012`20or V`2024`20hours X`20`20&0220&0420\0808format.`20In`2012`20hours\1407,`20the`20string`20"am"`20o Vr`20"pm" X`20`20&0220&0420\0808will`20be`20added,`20and`20the`20time`20value`20will,`20i Vf`20necessary, X`20`20&0220&0420\0808be`20converted`20(eg`2021:45`20will\1C0Eto`209:45pm, X`20`20&0220&0420\080810:15`20will`20be`20converted`20to\1B06am). X`20`20&0220&0420\0808When`20omitted,`20the`20default`20from`20the`20configurat Vion`20file X`20`20&0220&0420\0808will`20be`20used. X`20`20SEPARATOR&0220&0220`20`5Bseparator`20string`5D X`20`20&0220&0420\0808By`20default,`20a`20colon`20(:)`20will`20be`20used`20to V`20separate`20hours X`20`20&0220&0420\0808and`20minutes`20(HH:MM),`20but`20by`20using`20this`20elem Vent,`20any X`20`20&0220&0420\0808character`20string`20can`20be`20used.`20For`20user`20inpu Vt,`20only`20a X`20`20&0220&0420\0808colon`20(:)`20or`20a`20dot`20(.)`20are`20allowed. X`20`20TRZERO&0220&0220&0420`5BTRUE`20or`20FALSE`5D X`20`20&0220&0420\0808If`20set`20to`20TRUE,`20trailing`20zeros`20will`20be`20in Vcluded`20for X`20`20&0220&0420\0808the`20hours`20if`20necessary,`20eg`209:45pm`20will`20be V`20displayed X`20`20&0220&0420\0808as`2009:45pm. X`20`20UPCASE&0220&0220&0420`5BTRUE`20or`20FALSE`5D X`20`20&0220&0420\0808If`20set`20to`20true,`20the`20string`20"am"`20or`20"pm" V`20will`20be X`20`20&0220&0420\0808converted`20to`20uppercase.`20This`20element`20will`20be V`20ignored X`20`20&0220&0420\0808when`20HOURS`20is`20specified`20as`2024. X X3`20Textarea_type X XEnter`20free`20input,`20using`20a`20text`20editor.`20The`20value`20is`20both V`20stored Xin`20a`20file,`20and`20in`20the`20specified`20variable`20name.`20The`20size`20 Vof`20the Xvalue`20in`20the`20variable`20name`20is`20limited`20by`20VMS.`20This`20does`20 Vnot`20affect Xthe`20value`20stored`20in`20the`20file. X XWhen`20a`20valid`20filename`20is`20entered,`20the`20editor,`20specified`20in V`20the Xconfiguration`20file,`20will`20be`20started.`20When`20the`20no`20filename`20is V Xentered,`20a`20default`20value`20will`20be`20used.`20This`20is`20the`20\280D Xfrom`20the`20menu`20file,`20or`20a`20newly`20generated`20value`20if`20omitted. V XThe`20default`20location`20is`20OMI$MENU_DIRECTORY. X XThe`20file`20will`20only`20be`20available`20during`20the`20current`20OMI`20ses Vsion, Xand`20the`20file`20will`20be`20deleted`20when`20OMI`20exits,`20unless`20KEEP V`20is`20set`20to`20TRUE. X XThe`20following`20keywords`20can`20be`20used`20for`20formatting: X XFILENAME`09`5Bfile`20name`5D X`09`09The`20name`20of`20the`20temporary`20file`20that`20will`20be X`09`09used`20to`20create`20the`20text`20area.`20The`20default`20location X`09`09is`20OMI$MENU_DIRECTORY,`20and`20the`20default`20type`20is`20.TXT. X`09`09If`20this`20field`20is`20not`20specified,`20the`20name`20TA_menu$INPUTn V X`09`09will`20be`20used,`20where`20menu`20is`20the`20current\1406name,`20and X`09`09INPUTn`20the`20OMI`20internal`20element`20name. XKEEP`09`09`5BTRUE`20or`20FALSE`5D X`09`09If`20set`20to`20TRUE,`20the`20temporary`20file`20will`20not`20be`20remov Ved X`09`09when`20OMI`20exists,`20and`20so`20will`20be`20available`20for`20a`20futu Vre X`09`09session. XHISTORY`09`09`5BTRUE`20or`20FALSE`5D X`09`09If`20set`20to`20TRUE,`20older`20version`20of`20the`20temporary`20file X`09`09will`20also`20be`20saved,`20limited`20by`20the`20VMS`20VERSION_LIMIT. X`09`09When`20KEEP`20is`20set`20to`20FALSE`20or`20not`20specified,`20HISTORY X`09`09is`20automatically`20set`20to`20FALSE.By`20default,`20only`20the X`09`09last`20version`20will`20be`20saved`20(if`20KEEP`20is`20TRUE). XLARGE`09`09`5BTRUE`20or`20FALSE`5D X`09`09The`20size`20of`20a`20textarea`20is`20limited`20to`20255`20characters`20 Vby X`09`09default.`20With`20this`20option`20it`20is`20possible`20to`20store`20valu Ves X`09`09up`20to`201024`20characters`20in`20the`20variable.The`20maximum`20size X`09`09does`20not`20affect`20the`20value`20that`20is`20stored`20in`20the`20temp Vorary X`09`09file. X`09`09NOTE:`20setting`20this`20option`20to`20TRUE,`20can`20cause`20the`20comma Vnd X`09`09`20`20&0220&0220SHOW`20TEXTAREA`20not`20to`20show`20anything`20without V`20a`20warning!`20 X X3`20Time_type X XThis`20indicates`20the`20input`20should`20be`20of`20the`20TIME`20type.`20An`20 Vinvalid`20response`20will Xresult`20in`20a`20warning`20message.`20The`20user`20response`20has`20to`20be V`20a`20valid`20time`20format X(HH:MM`20`5BAM`7CPM`5D`20or`20HH.\110A). X XThe`20following`20keywords`20can`20be`20used`20for`20formatting: XHOURS`09`09`5B12`20or`2024`5D X`09`09Specifies`20if`20the`20time`20should`20be`20in`2012`20or`2024`20hours X`09`09format.`20In`2012`20hours`20\1406,`20the`20string`20am`20or`20pm`20will V X`09`09be`20added,`20and`20the`20time`20value`20will,`20if`20necessary,`20be X`09`09converted`20(eg`2021:45`20will`20be`20\1C0Ato`209:45pm,`2010:15 X`09`09will`20be`20converted`20to`2010:15am). X`09`09When`20omitted,`20the`20default`20from`20the`20configuration`20file X`09`09will`20be`20used. XSEPARATOR`09`5Bseparator`20string`5D X`09`09By`20default,`20a`20colon`20(:)`20will`20be`20used`20to`20separate`20hou Vrs X`09`09and`20minutes`20(HH:MM),`20but`20by`20using`20this`20element,`20any`20ch Varacter`20 X`09`09string`20can`20be`20used.`20For`20user`20input,`20only`20a`20colon`20(:) V`20or`20a`20dot X`09`09(.)`20are`20allowed. XTRZERO`09`09`5BTRUE`20or`20FALSE`5D X`09`09If`20set`20to`20TRUE,`20trailing`20zeros`20will`20be`20included`20for`20 Vthe X`09`09hours`20if`20necessary,`20eg`209:45pm`20will`20be`20displayed`20as`200 V\1D06. XUPCASE`09`09`5BTRUE`20or`20FALSE`5D X`09`09If`20set`20to`20true,`20the`20string`20am`20or`20pm`20will`20be`20conver Vted`20to X`09`09uppercase.`20This`20element`20will`20be`20ignored`20when`20HOURS`20is X`09`09specified`20as`2024. X X3`20Example X X`20`20`5BMENU_MENU`5D X`20`20&0220input1`20=`20Name`20of`20a`20.TXT`20file#FNAME#README#FNAME_FORMAT V X X`20`20`5BFNAME_FORMAT`5D X`20`20`20TYPE&0320&0320=`20STRING X`20`20`20UPCASE&0320`20=`20TRUE X`20`20`20COLLAPSE&0220=`20TRUE X`20`20`20IVCHARS&0320=`20@#$%`5E`26*().`20/?`7C`5C'`5B`5D`7B`7D+ X X2`20Security_section X XYou`20can`20specify`20any`20name`20a`20section,`20called`20by`20the`20menu`20 V\1C07`20as Xa`20security`20section. X XThis`20section`20contains`20security`20levels`20for`20all`20known`20usernames. V XThe`20use`20of`20this`20section`20overwrites`20the`20default`20highest`20level V`20for Xthe`20menu`20owner X XBy`20default,`20users`20that`20are`20not`20listed,`20have`20no`20access`20to V`20the`20menu. XThis`20can`20be`20overwritten`20with`20the`20'all_users'`20element. X XThe`20following`20security`20levels`20are`20valid: X X`20`20`20NONE&0320&0220The`20specified`20user`20has`20no`20access`20to`20the V`20menu X`20`20`20READ&0320&0220The`20user`20can`20enter`20the`20menu`20and`20see`20the V`20choices, X`20`20&0220&0420&0420but`20cannot`20execute`20any`20of`20the`20options,`20or V`20any X`20`20&0220&0420&0420command`20at`20the\0F09line.`20The`20only`20way`20to`20le Vave X`20`20&0220&0420&0420the`20menu`20is`20by`20using`20 X`20`20`20EXEC&0320&0220The`20user`20has`20full`20access`20to`20all`20menu`20el Vements`20for`20 X`20`20&0220&0420&0420execution. X`20`20`20WRITE&0320`20The`20user`20can`20make`20modifications`20to`20the`20men Vu,`20using`20the X`20`20&0220&0420&0420(RE)SET`20command. X XWhen`20no`20security`20section`20is`20used,`20EXEC`20is`20the`20default`20for V`20all`20users Xexcept`20for`20the`20owner`20(who'll`20have`20WRITE`20access) X X3`20Example X X`20`20`5BMENU_MENU`5D X`20`20`20!`20Menu`20definition X`20`20&0220SECURITY&0220=`20TOPMENU_PRIVS X X`20`20`5BTOPMENU_PRIVS`5D X`20`20&0220SYSTEM&0420=`20WRITE X`20`20&0220USER1&0420`20=`20EXEC X`20`20&0220USER2&0420`20=`20EXEC X`20`20&0220USER3&0420`20=`20READ X`20`20&0220ALL_USERS`20=`20NONE X X`20`20This`20example`20grants`20the`20highest`20security`20level`20to`20user V`20SYSTEM. X`20`20The`20users`20USER1`20and`20USER2`20both`20can`20execute`20all`20element Vs`20of`20the X`20`20menu.`20USER3`20can`20only`20read`20information. X`20`20Access`20for`20all`20other`20users`20is`20denied`20(this`20is`20the`20de Vfault`20when X`20`20using`20a`20secrity`20section). X X2`20Interactive_authorization X XUsers`20can`20be`20blocked`20from`20using`20interactive`20DCL`20with`20the`20S VPAWN`20or X`5BSILENT_`5DDCL`20command`20by`20including`20the`20section`20`5BINTERACTIVE_A VUTH`5D Xin`20the`20menu`20file.`20This`20section`20can`20contain`20user`20names`20that V`20are,`20or Xare`20not`20authorized`20to`20use`20interactive`20DCL. X XBy`20default,`20all`20users`20can`20use`20DCL.`20Users`20that`20should`20be`20 Vblocked, Xcan`20be`20included`20in`20this`20section,`20with`20value`20FALSE. X XThe`20default`20can`20by`20overwritten,`20by`20including`20the`20ALL_USERS`20w Vith Xvalue`20FALSE.`20All`20users`20are`20now`20disabled`20for`20interactive`20DCL, V`20except Xthose`20that`20are`20explicitly`20included`20with`20value`20TRUE. X XNote`20that`20this`20does`20not`20affect`20the`20`5BSILENT_`5DDCL`20and`20SPAW VN`20commands Xthat`20are`20called`20by`20menu`20items;`20they`20can`20always`20be`20executed V`20by`20all Xusers`20that`20have`20EXEC`20privilige`20to`20the`20submenu\2806contains`20the V`20items. X X3`20Example X X`20`20`5BINTERACTIVE_AUTH`5D X`20`20&0220SYSTEM&0420=`20TRUE X`20`20&0220SYSTEST&0320=`20TRUE X`20`20&0220DEVELOPER`20=`20TRUE X`20`20&0220ALL_USERS`20=`20FALSE&0320!`20Default`20is`20TRUE X X`20`20`5BMENU_MENU`5D X`20`20&0220ITEM1&0220=`20Exit#COMMAND#DCL`20LOGOUT X`20`20&0220ITEM2&0220=`20Mail#COMMAND#SPAWN`20MAIL X X`20`20When`20the`20menu`20file`20contains`20this`20section,`20the`20users`20SY VSTEM,`20SYSTEST X`20`20and`20DEVELOPER`20can`20use`20the`20commands`20`5BSILENT_`5DDCL`20and`20 VSPAWN`20at`20the`20OMI X`20`20command`20line,`20all`20other`20users`20can't. X`20`20The`20items`20that`20are`20given`20in`20the`20main`20menu\1108example`20 Vcan`20however X`20`20be`20executed`20by`20all`20users. X X2`20#INCLUDE_directive X XAn`20#INCLUDE`20directive`20can`20be`20used`20to`20load`20one`20or`20more`20li Vbrary`20menus Xinto`20the`20menu`20file. XLibrary`20menus`20are`20normal`20OMI\1506,`20but`20they`20should`20not`20have V`20a`20main Xmenu.`20All`20sections`20from`20the`20library`20menu`20are`20available`20in`20 Vthe`20menu Xthat`20includes`20the`20library. XThe`20default`20file`20type`20for`20libraries`20is`20.OML. X XThe`20#INCLUDE`20directive`20can`20be`20used`20anywhere`20in`20the`20menu`20fi Vle.`20The Xnumber`20of`20includes`20is`20unlimited,`20but`20nested\220Aare`20not`20allowe Vd X(the`20#INCLUDE`20directive`20cannot`20be`20used`20from`20within`20libraries). V X X***`20NOTE:`20OMI`20comes`20with`20one`20standard`20library,`20OMI$LIBRARY.OML V. X`20`20&0220&0420&0220It`20is`20advised`20not`20to`20edit`20this`20library,`20b Vut`20to`20create X`20`20&0220&0420&0220your`20own`20ones,`20since`20the`20library`20will`20be`20 Voverwritten X`20`20&0220&0420&0220with`20a`20new`20distribution. X X3`20#LEADING_attribute X XWhen`20including`20one`20or`20more`20standard`20libraries,`20it`20can`20happen V Xthat`20one`20of`20the`20libraries`20contains`20a`20section`20with`20values`20t Vhat Xis`20used`20in`20the`20calling`20menu`20file`20as`20well. X XTo`20prevent`20warning`20messages,`20the`20attribute`20#LEADING`20can`20be Xadded`20to`20the`20item`20that`20should`20be`20used. XThe`20order`20in`20which`20the`20files`20are`20read`20is`20not`20relevant,`20t Vhe Xitem`20that`20has`20been`20specified`20with`20#LEADING,`20will`20be`20the`20va Vlue Xthat`20is`20used.`20If`20all`20values`20are`20specified`20with`20#LEADING,`20t Vhe Xlast`20one`20will`20be`20used. X X3`20Example X X`20`20!`20The`20menu`20file`20contains: X`20`20`5BMENU_MENU`5D X`20`20&0220INPUT1&0220=`20Select`20a`20TCP`20product#`7BSEL`7CTCPPRODS`7DTCP_P VROD#VALUE1 X X`20`20`5BANOTHER_SELECT`5D X`20`20&0220VALUE1#LEADING`20=`20Set`20in`20the`20menu`20file`20 X`20`20&0220VALUE2`20=`20Also`20set`20in`20the`20menu`20file X X`20`20#INCLUDE`20MY_LIB X X`20`20!`20The`20file`20MY_LIB.OML`20contains: X`20`20`5BTCPPRODS`5D X`20`20&0220VALUE1`20=`20UCX X`20`20&0220VALUE2`20=`20WOLLONGONG X`20`20&0220VALUE3`20=`20TCPWARE X`20`20&0220VALUE4`20=`20MULTINET X`20`20&0220VALUE5`20=`20CMU/TEK X X`20`20`5BANOTHER_SELECT`5D X`20`20&0220VALUE1`20=`20Set`20in`20the`20library`20 X`20`20&0220VALUE2#LEADING`20=`20Also`20set`20in`20the`20library`20file X X`20`20The`20menu`20uses`20a`20select`20list`20that's`20not`20available`20in`20 Vth\3407file,`20but X`20`20it`20is`20in`20the`20library`20tha\1707cluded. X`20`20When`20OMI`20starts,`20the`20select`20list`20is`20initialised`20from`20t Vhe`20library,`20and X`20`20UCX`20will`20be`20the`20default`20value`20stored`20in`20the`20variable V`20TCP_PROD. X X`20`20The`20#LEADING`20settings`20cause`20the`20duplicate`20values`20to`20be V`20set`20as`20follows: X`20`20&0220`20ANOTHER_SELECT$VALUE1`20=`20"Set`20in`20the`20menu`20file" X`20`20&0220`20ANOTHER_SELECT$VALUE2`20=`20"Also`20set`20in`20the`20library" $ call unpack [.OMI-V2_3]OMI$MENU_FILE.HLP;1 - 861708355 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 76 30 41 $! $ create 'f' XABCMD`20`20&0220&0420&0220W`20ambiguous`20OMI`20command`20entered`20`5C`7ES`5C V XABORT`20`20&0220&0420&0220F`20abort`20with`20VMS`20status`20`5C`7ES`5C XBADMNU`20`20&0220&0420`20E`20top`20menu`20not`20defined`20or`20empty`20-`20inv Valid`20menu`20file XBADOPT`20`20&0220&0420`20E`20bad`20option`20-`20check`20the`20menu`20file XBGERR`20`20&0220&0420&0220E`20VMS`20error`20`7ES`20occured`20while`20starting V`20background`20process XBGSTART`20`20&0220&0420S`20module`20`7ES`20started XBUG`20`20&0220&0420&0420?`20you`20must`20provide`20some`20input...`20that's`20 Va`20bug... XCALCRES`20`20&0220&0420I`20the`20result`20of`20your`20calculation`20is`20`7ES V XCHECKTOOLBOX`20`20`20I`20check`20the`20toolbox`20command`20file XCMDNOTAV`20`20&0220&0320W`20command`20or`20option`20not`20available`20in`20on- Vthe-fly`20menus XCOUNTER`20`20&0220&0420I`20counter`20for`20this`20menu`20is`20now`20`7ES XCREMBX`20`20&0220&0420`20I`20please`20wait`20-`20creating`20mailbox XCREMBXERR`20`20&0220&0220F`20error`20in`20OMI$CREATE_MBX`20-`20cannot`20create V`20mailbox XCURORDER`20`20&0220&0320I`20options`20`7ES`20still`20have`20to`20be`20selected V XDECERR`20`20&0220&0420`20E`20cannot`20decrypt`20-`20no`20OMI`20encryption`20or V`20invalid`20key XDIVZERO`20`20&0220&0420E`20cannot`20devide`20by`20zero XENCRYPT`20`20&0220&0420S`20successfully`20encrypted`20the`20menu`20element XERASEMNU`20`20&0220&0320I`20erasing`20the`20menu`20from`20memory XERASMNU`20`20&0220&0420I`20erasing`20previous`20menu`20from`20memory XEXKEY`20`20&0220&0420&0220W`20key`20`7ES`20already`20exists XEXPKEY`20`20&0220&0420`20S`20successfully`20exported`20key`20`7ES XFIRST`20`20&0220&0420&0220W`20this`20is`20the`20first`20page`20of\1A06list XFNF`20`20&0220&0420&0420W`20file`20`5C`7ES`5C`20does`20not`20exist XGLKEYEX`20`20&0220&0420W`20key`20`7ES`20already`20exists`20at`20the`20global V`20keyring XGLKEYNF`20`20&0220&0420W`20global`20key`20`7ES`20not`20found XHIVAL`20`20&0220&0420&0220W`20value`20can't`20be`20more`20than`20`7ES XIMPKEY`20`20&0220&0420`20S`20successfully`20imported`20key`20`7ES XINCLFNF`20`20&0220&0420E`20cannot`20find`20file`20`7ES`20for`20including XINFO`20`20&0220&0420&0320I`20Oscar's`20Menu`20Interpreter,`20`A91997-2004,`20O V.`20van`20Eijk`20-`20OVEAS XINIT`20`20&0220&0420&0320I`20initializing... XINPREQ`20`20&0220&0420`20I`20input`20is`20required`20here`20-`20and`20that's V`20no`20bug XINSARG`20`20&0220&0420`20E`20invalid`20call`20of`20`7ES`20-`20insufficient`20a Vrguments XINTONLY`20`20&0220&0420W`20specify`20integers`20only XINVOPT`20`20&0220&0420`20W`20option`20is`20out`20of`20range XIVANS`20`20&0220&0420&0220W`20invalid`20answer`20-`20enter`20`7ES`20or`20`7ES V XIVCHAR`20`20&0220&0420`20W`20invalid`20character`20encoutered`20-`20`5C`7ES`5C V`20not`20allowed XIVCHOICE`20`20&0220&0320W`20please`20specify`20a`20valid`20choice XIVCMD`20`20&0220&0420&0220W`20invalid`20OMI`20command`20entered`20`5C`7ES`5C XIVDIGIT`20`20&0220&0420W`20invalid`20digit`20found`20in`20the`20calculation XIVENCR`20`20&0220&0420`20E`20invalid`20call`20of`20OMI$DECRYPT`20-\1E09string V`20encryption XIVFNAM`20`20&0220&0420`20W`20invalid`20file`20or`20device`20name`20`5C`7ES`5C V XIVFRM`20`20&0220&0420&0220W`20invalid`20format,`20specify`20`7ES`20type XIVKEY`20`20&0220&0420&0220E`20key`20`7ES`20not`20found`20at`20the`20keyring XIVKEYTYP`20`20&0220&0320W`20invalid`20key`20-`20specify`20an`20integer`20value V XIVKEYVAL`20`20&0220&0320W`20invalid`20key`20value`20-\0807should`20be`20betwee Vn`201`20and`201,000,000 XIVMODCALL`20`20&0220&0220E`20module`20`7ES`20called`20with`20insufficient`20ar Vguments XIVOPRAT`20`20&0220&0420W`20invalid`20operator`20found`20in`20the`20calculation V XIVOPT`20`20&0220&0420&0220W`20invalid`20`7ES`20option XIVORDER`20`20&0220&0420W`20invalid`20order`20-&0220select`20option(s)`20`7ES V`20first XIVPASSW`20`20&0220&0420W`20invalid`20password XIVPWD`20`20&0220&0420&0220W`20invalid`20password`20-`20access`20denied XIVSEL`20`20&0220&0420&0220W`20selection`20is`20out`20of`20range XIVSWVAL`20`20&0220&0420W`20invalid`20value`20for`20SET`20WIDTH`20-`20specify V`2080`20or`20132 XIVVALFIL`20`20&0220&0320W`20option`20is`20no`20select`20list`20or`20has`20no V`20value`20file XLAST`20`20&0220&0420&0320W`20this`20is`20the`20last`20page`20of\1906list XLDIGIT`20`20&0220&0420`20E`20operands`20cannot`20have`20more`20than`209`20digi Vts XLOWVAL`20`20&0220&0420`20W`20value`20can't`20be`20less`20than`20`7ES XMANAGE`20`20&0220&0420`20I`20you`20already`20are`20in`20the`20Management`20Men Vu XMBXALREX`20`20&0220&0320W`20invalid`20call`20of`20OMI$CREATE_MBX`20-`20mailbox V`20`7Es`20already`20created XMNUNOTFOUND`20`20&0220W`20menu`20file`20`7ES`20not`20found XMODNOTFOUND`20`20&0220E`20module`20`7ES`20not`20found XNAME`20`20&0220&0420&0320I`20the`20name`20of`20this`20menu`20is`20`5C`7ES`5C V\2A07 XNESTINCL`20`20&0220&0320W`20nested`20includes`20are`20not`20allowed XNOCFG`20`20&0220&0420&0220E`20no`20personal`20configuration`20file`20found`20- V`20key`20not`20set XNOCNTINC`20`20&0220&0320W`20this`20menu`20has`20no`20counter`20to`20increase XNOCOUNT`20`20&0220&0420W`20no`20counter`20available`20for`20this`20menu XNOCOUNTER`20`20&0220&0220I`20no`20counter`20available`20for`20this`20menu XNODCLPRV`20`20&0220&0320W`20you`20are`20not`20authorized`20for`20interactive V`20DCL XNODEF`20`20&0220&0420&0220W`20input`20is`20required`20here`20-`20there's`20no V`20default`20answer XNODELIM`20`20&0220&0420E`20error`20in`20menu`20file`20-`20no`20delimiter`20for V`20this`20taglist XNOEXPRV`20`20&0220&0420W`20you`20don't`20have`20export`20privilege XNOFRMTYPE`20`20&0220&0220E`20no`20format`20type`20specified`20for`20`7ES`20- V`20check`20menu`20file XNOHLP`20`20&0220&0420&0220W`20no`20help`20found`20for`20menu`20`7ES XNOHLPFIL`20`20&0220&0320W`20no`20helpfile`20found`20for`20this`20menu XNOIMPRV`20`20&0220&0420W`20you`20don't`20have`20import`20privilege XNOINPUT`20`20&0220&0420W`20this`20menu`20contains`20no`20input`20fields XNOKEY`20`20&0220&0420&0220E`20invalid`20call`20of`20OMI$`7ES`20-`20no`20encryp Vtion`20key`20specified XNOMATCH`20`20&0220&0420W`20no`20matches`20for`20search`20string`20`7ES XNOMENU`20`20&0220&0420`20W`20no`20menu`20specified XNOMESSAGE`20`20&0220&0220E`20no`20message`20found`20with`20identifier`20`7ES XNOMNUAUTH`20`20&0220&0220W`20you`20are`20not`20authorized`20for`20this`20menu V`20-`20exiting XNOMNUNAME`20`20&0220&0220W`20no`20name`20set`20on`20this`20menu XNOMSGFILE`20`20&0220&0220E`20no`20message`20file`20found`20for`20facility`20 V`7ES XNONAME`20`20&0220&0420`20I`20this`20menu`20has`20no`20name XNOORDER`20`20&0220&0420W`20no`20required`20order`20set`20for`20this`20menu XNOPRIV`20`20&0220&0420`20W`20you`20are`20not`20authorized`20for`20this`20menu V`20or`20function XNOPWD`20`20&0220&0420&0220W`20no`20password`20set`20on`20this`20menu XNOROUTINE`20`20&0220&0220W`20no`20routine`20found`20for`20the`20command`20`7ES V XNOSUCHITM`20`20&0220&0220W`20cannot`20find`20item`20`5C`7ES`5C`20or`20section V`20`5C`5B`7ES`5D`5C XNOSUCHNAME`20`20&0220`20W`20no`20submenu`20found`20with`20name`20`7ES XNOSUCHTA`20`20&0220&0320W`20invalid`20parameter`20-`20no`20such`20text`20area V XNOTAUTH`20`20&0220&0420W`20not`20authorized`20-`20use`20`20to`20go`20b Vack XNOTEXTAREA`20`20&0220`20W`20no`20text`20areas`20found`20in`20this`20menu XNOTMPFILE`20`20&0220&0220W`20file`20name`20required`20for`20fixed`20areas XNOTYET`20`20&0220&0420`20I`20format`20`7ES`20not`20yet`20implemented XNOT_YET`20`20&0220&0420W`20this`20command`20is`20not`20yet`20implemented XNOUNIQTA`20`20&0220&0320W`20no`20unique`20text`20area`20found`20-`20specify`20 Van`20integer XNOVALFILE`20`20&0220&0220E`20value`20file`20`7ES`20not`20found XNOVARS`20`20&0220&0420`20W`20no`20variables`20found`20for`20this`20menu XNOVMSMSG`20`20&0220&0320I`20no`20VMS`20message`20found`20for`20status`20`7ES XNOWILDCARD`20`20&0220`20W`20wildcards`20are`20not`20allowed`20in`20this`20opti Von XNO_OTF`20`20&0220&0420`20E`20no`20on-the-fly`20menu`20specified XNO_OTFINP`20`20&0220&0220E`20missing`20on-the-fly`20menu`20inputs XNO_OTFITM`20`20&0220&0220E`20missing`20on-the-fly`20menu`20items XOTFSUB`20`20&0220&0420`20E`20submenus`20not`20allowed`20in`20on-the-fly`20menu Vs XOUTOFRA`20`20&0220&0420E`20intermediate`20value`20`7ES`20is`20out`20of`20range V XOVERFLOW`20`20&0220&0320E`20screen`20overflow XPARNOTMATCH`20`20&0220W`20parentheses`20do`20not`20match XPROOUTRA`20`20&0220&0320W`20product`20`7ES`20might`20be`20out`20of`20range XPWDVERFAIL`20`20&0220`20W`20password`20verification`20failed XREADERR`20`20&0220&0420E`20error`20reading`20from`20file`20`7ES XREADMNU`20`20&0220&0420I`20reading`20menu`20file`20-`20`7ES%`20done XREMNAME`20`20&0220&0420S`20succesfully`20removed`20the`20menu`20name XREMPWD`20`20&0220&0420`20S`20succesfully`20removed`20the`20password XREQSELECTED`20`20&0220I`20all`20required`20options`20have`20been`20selected XRESETVAR`20`20&0220&0320S`20variables`20reset`20to`20default XRESTMNU`20`20&0220&0420I`20restoring`20previous`20menu XSCROVERFL`20`20&0220&0220E`20screen`20overflow`20-`20too`20many`20menu`20items V`20or`20window`20too`20small XSETKEY`20`20&0220&0420`20S`20succesfully`20set`20the`20personal`20key XSETNAME`20`20&0220&0420S`20succesfully`20changed`20the`20menu`20name XSETPWD`20`20&0220&0420`20S`20succesfully`20changed`20the`20password XSHORTPWD`20`20&0220&0320W`20password`20can`20not`20be`20shorter`20than`205`20c Vharacters XSUSPINTR`20`20&0220&0320F`20suspected`20intruder`20-`20access`20denied XTAEMPTY`20`20&0220&0420I`20text`20area`20is`20currently`20empty XTAFNF`20`20&0220&0420&0220W`20text`20area`20file`20not`20found XTALOCK`20`20&0220&0420`20W`20temporary`20file`20is`20in`20use`20-`20cannot`20c Vreate`20text`20area XTATEMP`20`20&0220&0420`20W`20text`20area`20file`20is`20temporary`20-`20cannot V`20be`20deleted XTATRUNC`20`20&0220&0420W`20text`20area`20is`20longer`20than`20`7ES`20character Vs`20-`20truncated XTOOLERR`20`20&0220&0420E`20no`20toolbox`20defined`20in`20`5COMI$:OMI$TOOLBOX.I VNI`5C XTOOLONG`20`20&0220&0420W`20string`20length`20is`20not`20allowed`20to`20be`20mo Vre`20than`20`7ES XTOOSHORT`20`20&0220&0320W`20string`20length`20is`20not`20allowed`20to`20be`20l Vess`20than`20`7ES XTOPLEVEL`20`20&0220&0320I`20you`20already`20are`20at`20the`20toplevel XTOPONLY`20`20&0220&0420W`20this`20option`20can`20only`20be`20used`20at`20the V`20top`20level`20menu XTRANERR`20`20&0220&0420E`20cannot`20translate`20input`20-`20invalid`20variable V XVALLOGERR`20`20&0220&0220F`20error`20opening`20logfile`20`7ES XVALOK`20`20&0220&0420&0220S`20no`20errors`20or`20warnings`20found XVALOPENERR`20`20&0220`20W`20value`20file`20`7ES`20is`20probably`20locked XVALRESULT`20`20&0220&0220I`20found`20`7ES`20error(s)`20a\1006warning(s) XVERSION`20`20&0220&0420I`20current`20OMI`20version`20is`20`7ES XVMSERR`20`20&0220&0420`20E`20VMS`20error`20occured`20-`20status`20was`20`7ES XWRITING`20`20&0220&0420I`20please`20wait`20-`20writing`20`7ES $ call unpack [.OMI-V2_3]OMI$MESSAGES.DAT;1 2516848736 "" 16 31 41 $! $ create 'f' X$`09goto`20start$ X$! X$!********\0808\1010\2020\400E X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220MODULE`20NAME:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220Omi$Screen.Com\1406\1A06\0C0C\1818\3008* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220CALLED`20BY:&0420&0420\0808\1010\201E* X$!*`20`20&0220==========&0420&0420\0808\1010\201E* X$!*`20`20&0220&0220Omi$Menu.Com\1206\1806\0C0C\1818\300A* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220DESCRIPTION:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220This`20module`20handles`20all`20terminal`20I/O.\2B06\3106 V\0C0C\1809* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$`20start$: X$! X$!==>`09Evaluate`20the`20parameter.`20 X$! X$`09if`20f$type(menu$title)`20.eqs.`20""`20then`20- X`09`20`20`20$`20menu$title`20=`20"Oscar's`20Menu`20Interpreter`20v''omi$versio Vn'`20-`20`A91997-2004,`20Oveas" X$! X$`09if`20p1`20.eqs.`20"CLEANUP"`20`20&0220&0220then`20$`20gosub`20screen$_eras Ve X$`09if`20p1`20.eqs.`20"CLEAR"`20`20&0220&0420then`20$`20gosub`20screen$erase_w Vindow X$`09if`20p1`20.eqs.`20"SETUP" X$`09`20`20`20then X$`09`09gosub`20screen$_values X$`09`09if`20.not.`20omi$batch_mode`20then`20$`20gosub`20screen$_initialize X$`09endif X$! X$`09if`20p1`20.eqs.`20"DISPLAY_INFO"`20then`20$`20gosub`20screen$display_infor Vmation X$`09if`20p1`20.eqs.`20"DYNAMIC_MENU"`20then`20$`20gosub`20screen$setup_dynamic V_menu X$`09if`20p1`20.eqs.`20"MENU"`20then`20`09$`20gosub`20screen$setup_window X$`09if`20p1`20.eqs.`20"SELECT_LIST"`20then`20`09$`20gosub`20screen$setup_selec Vt_list X$`09if`20p1`20.eqs.`20"TAGLIST"`20then`20`09$`20gosub`20screen$setup_tag_list V X$! X$`09if`20omi$batch_mode`20then`20$`20goto`20screen$_exit X$! X$`09if`20p1`20.eqs.`20"REFRESH" X$`09`20`20`20then X$`09`09gosub`20screen$_initialize`20 X$`09`09gosub`20screen$setup_window X$`09endif X$`09if`20p1`20.eqs.`20"SETUP_SCROLL_REGION" X$`09`20`20`20then X$`09`09gosub`20screen$erase_window X$`09`09_top`20=`20screen$line_header`20+`201`20+`20\1907window_topmargin X$`09`09_size`20=`20screen$height`20+`201`20-`20(\150E-`20\2507line_command)`20 V`20-`20_top X$`09`09ws`20"''ESC$'`5B''_top';''_size'r" X$`09endif X$`09if`20p1`20.eqs.`20"ERASE_SCROLL_REGION" X$`09`20`20`20then X$`09`09ws`20"''ESC$'`5B1;''screen$height'r" X$`09`09gosub`20screen$_initialize X$`09`09gosub`20screen$setup_window X$`09endif`09`09 X$! X$`20screen$_exit: X$! X$`09exit`20omi$_ok X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Write`20all`20menu`20items`20to`20the`20screen X$! X$`20screen$setup_window: X$! X$`09gosub`20screen$erase_window X$`09_menu`20=`20"''omi$current_menu'" X$`09if`20f$type('_menu'$title')`20.nes.`20"" X$`09`20`20`20then X$`09`09_menu_title`20=`20'_menu'$title X$`09`09_menu_title_loc`20=`20(screen$menu_width`20/`202)`20-`20- X`09`09`20`20`20(f$length(_menu_title)`20/`202)`20+`20screen$width_margin X$`09`09ws`20f$fao("''ESC$'`5B''screen$line_header';\1609width_margin'H\35087m! V\3809menu_width'*`20\56080m") X$`09`09ws`20"''ESC$'`5B''screen$line_header';''_menu_title_loc'H\31087m\1D0D'' V\49070m" X$`09endif X$! X$`09if`20f$type('_menu'$comment)`20.nes.`20"" X$`09`20`20`20then`20$`20gosub`20screen$comment_line X$`09`20`20`20else`20$`20_comment_counter`20=`200 X$`09endif X$`09_item_cnt`20=`201 X$! X$`20setup$_items: X$! X$`09if`20f$type('_menu'$item'_item_cnt')`20.eqs.`20""`20then`20$`20goto`20scre Ven$_input X$`09_item`20=`20f$element(0,`20"#",`20'_menu'$item'_item_cnt') X$`09if`20f$edit(f$element(1,`20"#",`20'_menu'$item'_item_cnt'),"upcase")`20- X`09`20`20`20.eqs.`20"SUBMENU"`20.and.`20screen$display_names X$`09`20`20`20then X$`09`09_submnu`20=`20f$element(2,`20"#",`20'_menu'$item'_item_cnt') X$`09`09if`20f$type('_submnu'$name)`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09_item`20=`20"''_item'`20("`20+`20'_submnu'$name`20+`20")" X$`09`09`20`20`20else`20$`20_item`20=\0807+&0220"`20(no`20name)" X$`09`09endif X$`09endif X$`09_line`20=`20screen$line_header`20+`20_item_cnt`20+`20\2107window_topmargin V`20+`20_comment_counter X$!`09if`20(_line`20+`201)`20.eq.`20screen$line_command`20then`20$`20goto`20set Vup$_overflow X$`09if`20_line`20.eq.`20screen$line_command`20then`20$`20goto`20setup$_overflo Vw X$`09_blank`20=`20"" X$`09if`20_item_cnt`20.lt.`2010`20then`20$`20_blank`20=`20"`20" X$`09ws`20"''ESC$'`5B''_line';''screen$default_position'H\2C081m''_blank'''_ite Vm_cnt'>\4C080m`20\1807'" X$`09_item_cnt`20=`20\0C0A+`201 X$`09goto`20setup$_items X$! X$`20screen$comment_line: X$! X$`09_line`20=`20screen$line_header`20+\1508window_topmargin`20+`201 X$`09_comment`20=`20'_menu'$\1207 X$! X$`20comment$substitute: X$! X$`09if`20f$locate("`7B",_comment)`20.eq.`20f$length(\1809 X$`09`20`20`20then X$`09`09ws`20"''ESC$'`5B''_line';''screen$default_position'H''_comment'" X$`09`09_comment_counter`20=`202 X$`09`09return X$`09endif X$! X$`09_comment1`20=`20f$extract(0,`20f$locate("`7B",\2608),`20\0B09 X$`09_comment`20=`20\0B09-\0B091 X$`09_comment_var`20=`20f$extract(0,`20f$locate("`7D",\2908)`20+`201,`20\0F09 X$`09_comment`20=`20\0B09-\0B09_var X$`09_comment_var`20=`20\0F0D-`20"`7B"`20-`20"`7D" X$! X$`09if`20f$type('_comment_var)`20.eqs.`20"" X$`09`20`20`20then`20$`20_comment`20=`20"''\0E081'***\0F0A'" X$`09`20`20`20else X$`09`09_comment_val`20=`20'\100Br X$`09`09_comment`20=`20"''\0E081''\0C09_val\0F0B'" X$`09endif`20`20&0220&0420\0808\1010\200D X$`09goto`20comment$substitute X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09If`20this`20menu`20screen`20can`20also`20read`20inputs,`20they`20are V`20written`20to`20the X$!`09screen`20in`20this`20routine.`20The`20layout`20is`20separated`20by`20a`20 Vhorizonal`20line, X$!`09and`20the`20choices`20are`20displayed`20just`20like`20the`20menu`20items. V X$! X$`20screen$_input: X$! X$`09inputs$highest_item`20==`20_item_cnt`20-`201 X$`09_input_cnt`20=`201 X$`09if`20f$type('_menu'$input'_input_cnt')`20.eqs.`20""`20then`20$`20return X$! X$`09if`20f$type('_menu'$all_inputs)`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20'_menu'$all_inputs X$`09`09`20`20`20then`20$`20omi$inputs`20==`201 X$`09`09`20`20`20else`20$`20omi$inputs`20==`200 X$`09`09endif X$`09`20`20`20else`20$`20omi$inputs`20==`201 X$`09endif X$`09_line`20=`20\0806+`201 X$!`09if`20(_line`20+`201)`20.eq.`20screen$line_command`20then`20$`20goto`20set Vup$_overflow X$`09if`20_line`20.eq.`20screen$line_command`20then`20$`20goto`20setup$_overflo Vw X$!`09_size_separator`20=`20screen$width`20-`20(2`20*\140D_margin)`20-`203 X$`09_size_separator`20=`20screen$line_length`20-`202 X$! X$`09_position`20=`20((screen$width`20/`202)`20-`203) X$`09_longest_record`20=`20f$length(questions$all_inputs) X$! X$`09if`20f$type(screen$separate_inputs)`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20(screen$separate_inputs) X$`09`09`20`20`20then X$`09`09`09ws`20f$fao("''ESC$'`5B''_line';''screen$default_position'H\2C07(0!'' V_size_separator'*q\1E08B") X$`09`09`09_line`20=`20\0806+`201 X$!`09`09`09if`20(_line`20+`201)`20.eq.`20screen$line_command`20then`20$`20goto V`20setup$_overflow X$`09`09`09if`20_line`20.eq.`20screen$line_command`20then`20$`20goto`20setup$_o Vverflow X$`09`09`09ws`20"''ESC$'`5B''_line';''_position'H\1E081;4mInputs\30080m" X$`09`09`09_line`20=`20\0806+`201 X$!`09`09`09if`20(_line`20+`201)`20.eq.`20screen$line_command`20then`20$`20goto V`20setup$_overflow X$`09`09`09if`20_line`20.eq.`20screen$line_command`20then`20$`20goto`20setup$_o Vverflow X$`09`09`09inputs$first_line`20==`20_line X$`09`09`20`20`20else`20$`20inputs$first_line`20==`20_line X$`09`09endif X$`09`20`20`20else`20$`20inputs$first_line`20==`20_line X$`09endif X$! X$`20screen$_inputs: X$! X$`09_choice`20=`20_input_cnt`20+`20_item_cnt`20-`201 X$`09_input`20=`20f$element(0,`20"#",`20'_menu'$input'_input_cnt') X$`09_blank`20=`20"" X$`09if`20_choice`20.lt.`2010`20then`20$`20_blank`20=`20"`20" X$`09ws`20"''ESC$'`5B''_line';''screen$default_position'H\2C081m''_blank'''_cho Vice'>\4A080m`20''_input'" X$`09if`20f$length(_input)`20.gt.`20_longest_record`20then`20- X`09`20`20`20$`20_longest_record`20=`20f$length(_input) X$`09_input_cnt`20=`20\0D0B+`201 X$`09if`20f$type('_menu'$input'_input_cnt')`20.eqs.`20""`20then`20$`20goto`20sc Vreen$end\2C06s X$`09_line`20=`20\0806+`201 X$!`09if`20(_line`20+`201)`20.eq.`20screen$line_command`20then`20$`20goto`20set Vup$_overflow X$`09if`20_line`20.eq.`20screen$line_command`20then`20$`20goto`20setup$_overflo Vw X$`09goto`20screen$_inputs X$! X$`20screen$end_inputs: X$! X$`09inputs$last_line`20==`20_line X$`09inputs$value_location`20==`20- X`09`20`20`20screen$default_position`20+`20_longest_record`20+`20\2C07tab X$`20`20&0220&0220`09inputs$max_size`20==`20- X`09`20`20`20(screen$width`20-`20\0F0C_margin)`20-`20inputs$value_location`20- V`201 X$`09_line`20=`20\0806+`201 X$!`09if`20(_line`20+`201)`20.eq.`20screen$line_command`20then`20$`20goto`20set Vup$_overflow X$`09if`20_line`20.eq.`20screen$line_command`20then`20$`20goto`20setup$_overflo Vw X$`09_choice`20=`20\0A08+`201 X$`09_item_cnt`20=`20_choice X$`09if`20f$type('omi$current_menu'$all_inputs)`20.eqs.`20"" X$`09`20`20`20then`20$`20_display_allinp_prompt`20=`201 X$`09`20`20`20else`20$`20_display_allinp_prompt`20=`20'omi$current_menu'$all_in Vputs X$`09endif X$`09if`20f$type('omi$current_menu'$required_order)`20.nes.`20""`20then`20- X`09`20`20`20$`20_display_allinp_prompt`20=`200 X$`09if`20_display_allinp_prompt X$`09`20`20`20then X$`09`09'_menu'$item'_item_cnt'`20==`20"''questions$all_inputs'#command#all" X$`09`09_blank`20=`20"" X$`09`09if`20_choice`20.lt.`2010`20then`20$`20_blank`20=`20"`20" X$`09`09ws`20"''ESC$'`5B''_line';''screen$default_position'H\2C081m''_blank'''_ Vchoice'>\4A080m`20''questions$all_inputs'" X$`09endif X$! X$`09_line`20=`20inputs$first_line X$! X$`20screen$value_column: X$! X$`09_input`20=`20_line`20-`20inputs$first\1406+`201 X$`09_variable`20=`20f$element(1,`20"#",`20'_menu'$input'_\0706) X$`09if`20f$extract(0,`201,`20_variable)`20.eqs.`20"`7B" X$`09`20`20`20then X$`09`09_select_list`20=`20f$extract(0,`20f$locate("`7D",`20_variable)`20+`201 V\100C X$`09`09_variable`20=`20\0C0A-`20_select_list X$`09`09_select_list`20=`20\0F0D-`20"`7B"`20-`20"`7D" X$`09endif X$! X$`09if`20f$type('_variable')`20.eqs.`20"" X$`09`20`20`20then X$`09`09if`20f$element(2,`20"#",`20'_menu'$input'_\0706)`20.eqs.`20"#"`20.or. V`20- X`09`09`20`20`20f$element(2,`20"#",`20'_menu'$input'_\0706)`20.eqs.`20"" X$`09`09`20`20`20then`20$`20_value`20=`20main$empty\1306 X$`09`09`20`20`20else`20$`20_value`20=`20f$element(2,`20"#",`20'_menu'$input'_ V\0706) X$`09`09endif X$`09`20`20`20else X$`09`09if`20'_variable'`20.eqs.`20"" X$`09`09`20`20`20then`20$`20_value`20=`20main$empty\1306 X$`09`09`20`20`20else`20$`20_value`20=`20'_variable' X$`09`09endif X$`09endif X$! X$`09_display_value`20=`20\0906 X$`09if`20f$locate("''CR$'",`20_display_value)`20.lt.`20f$length(\1E10then`20- V X`09`20`20`20$`20_display_value`20=`20f$extract(0,`20f$locate("''CR$'",`20\310E V),`20- X`09`20`20`20_display_value)`20+`20"''ESC$'(0d\0A08B" X$`09_blanks`20=`20inputs$max_size`20-`20f$length(_display_value)`20+`201 X$`09if`20f$length(_display_value)`20.le.`20inputs$max_size X$`09`20`20`20then`20$`20ws`20"''ESC$'`5B''_line';''inputs$value_location'H''_d Visplay_value'" X$`09`20`20`20else`20$`20ws`20"''ESC$'`5B''_line';''inputs$value_location'H''f$ Vextract(0,\2507max_size,_display_value)''\5806(0`60\0A08B" X$`09endif X$`09_line`20=`20\0806+`201 X$`09if`20_line`20.le.`20inputs$last\1606then`20$`20goto`20screen$value_column V X$`09return X$! X$`20setup$_overflow: X$! X$`09omi$signal`20omi`20scroverfl X$`09exit`20omi$_error X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Create`20a`20small`20window`20with`20all`20possible`20options`20of`20t Vhe`20current X$!`09selection`20list X$! X$`20screen$setup_select_list: X$! X$`09if`20f$type(list$_scroll)`20.nes.`20"" X$`09`20`20`20then X$`09`09if`20list$_scroll`20.eqs.`20"NEXT"`20.and.`20- X`09`09`20`20`20f$type(scroll$next_page)`20.eqs.`20"" X$`09`09`09then X$`09`09&0209omi$signal`20omi`20last X$`09`09&0209exit`20omi$_warning X$`09`09endif X$! X$`09`09if`20list$_scroll`20.eqs.`20"PREVIOUS"`20.and.`20- X`09`09`20`20`20f$type(scroll$previous_page)`20.eqs.`20"" X$`09`09`09then X$`09`09&0209omi$signal`20omi`20first X$`09`09&0209exit`20omi$_warning X$`09`09endif X$`09`09scroll$_start_at`20=`20\1307'list$_scroll'_page X$`09endif X$`09if`20f$type(scroll$next_page)`20.nes.`20""`20then`20- X`20`09`20`20`20$`20deletee/symbol/global`20scroll$next_page X$`09if`20f$type(scroll$previous_page)`20.nes.`20""`20then`20- X`20`09`20`20`20$`20deletee/symbol/global`20scroll$previous_page X$! X$`09_sel_opt`20=`201 X$`09_sel_size`20=`200 X$`09_subwin_pos`20=`20screen$default_position`20+`202 X$`09_available_lines`20=`20screen$line_command`20-`20(\170Cheader`20+`20- X`09`20`20`20screen$window_topmargin)`20-`204 X$! X$`20sellst$_find_longest: X$! X$`09if`20f$type('_select_list'$value'_sel_opt')`20.eqs.`20""`20then`20$`20goto V`20sellst$end_find_longest X$`09if`20f$length(('_select_list'$value'_sel_opt'`20-`20"`7B"`20-`20"`7D"))`20 V.gt.`20_sel_size`20then`20- X`09`20`20`20$`20_sel_size`20=`20f$length(('_select_list'$value'_sel_opt'`20- V`20"`7B"`20-`20"`7D")) X$`09_sel_opt`20=`20\0B09+`201 X$`09goto`20sellst$_find_longest X$! X$`20sellst$end_find_longest: X$! X$`09_columns`20=`20((_sel_opt`20-`202)`20/`20_available_lines)`20+`201 X$`09if`20f$type(scroll$_start_at)`20.eqs.`20"" X$`09`20`20`20then`20$`20_sel_opt`20=`201 X$`09`20`20`20else`20$`20_sel_opt`20=`20scroll$_start_at X$`09endif X$`09scroll$this_page`20==`20_sel_opt X$`09_sel_size`20=`20\0C0A+`204 X$`09_longest`20=`20_sel_size X$`09_sel_size`20=`20\0C0A+`206 X$`09if`20_columns`20.ne.`201`20then`20$`20_sel_size`20=`20((\2509*\190A)`20+ V`20- X`09`20`20`20((_columns`20-`201)`20*`20screen$tab))`20-`206 X$`09_sel_loc`20=`20_subwin_pos`20+`202 X$`09if`20(_sel_size`20+`20_sel_loc)`20.ge.`20(screen$line_length`20+`20- X`09`20`20`20screen$default_position)`20then`20$`20_sel_size`20=\2C08line_lengt Vh`20-`20- X`09`20`20`20(_sel_loc`20-`20screen$default_position)`20 X$`09_line`20=`20screen$line_header`20+\1508window_topmargin`20+`201 X$!`09_first_line`20=`20_line X$`09ws`20f$fao("''ESC$'`5B''_line';''_subwin_pos'H\2007(0l!''_sel_size'*qk V\1A08B") X$`09_cur_col`20=`201 X$! X$`20sellst$_setup: X$! X$`09if`20f$type('_select_list'$value'_sel_opt')`20.eqs.`20""`20then`20$`20goto V`20sellst$end_setup X$`09_this_col`20=`20_sel_loc`20+`20((_cur_col`20-`201)`20*`20(screen$tab`20+ V`20_longest)) X$`09_line`20=`20(screen$line_header`20+`20\1507window_topmargin`20+`20(_sel_op Vt`20-`20- X`09`20`20`20scroll$this_page`20+`201))`20-`20((_cur_col`20-`201)`20*`20_availa Vble_lines)`20+`201 X$`09if`20_cur_col`20.eq.`201`20then`20- X`09`20`20`20$`20ws`20f$fao("''ESC$'`5B''_line';''_subwin_pos'H\2007(0x\0A08B! V''_sel_size'*`20\2213") X$`09if`20_sel_opt`20.lt.`2010 X$`09`20`20`20then`20$`20_blank`20=`20"`20" X$`09`20`20`20else`20$`20_blank`20=`20"" X$`09endif X$`09_to_screen`20=`20'_select_list'$value'_sel_opt' X$`09if`20f$extract(0,1,_to_screen)`20.eqs.`20"`7B"`20then`20- X`09`20`20`20$`20_to_screen`20=\0D0C-`20"`7B"`20-`20"`7D" X$`09if`20f$type('_variable')`20.eqs.`20"" X$`09`20`20`20then`20$`20ws`20"''ESC$'`5B''_line';''_this_col'H\1E081m''_blank V'''_sel_opt'>\3D080m`20''_to_screen'" X$`09`20`20`20else X$`09`09if`20'_variable'`20.eqs.`20'_select_list'$value'_sel_opt'`20.and.`20_al Vl_inputs X$`09`09`20`20`20then`20$`20ws`20"''ESC$'`5B''_line';''_this_col'H\1E081m''_sel V_opt'>\34080m`20\3F087m''_to_screen''\2209" X$`09`09`20`20`20else`20$`20ws`20"''ESC$'`5B''_line';''_this_col'H\1E081m''_sel V_opt'>\34080m`20''_to_screen'" X$`09`09endif X$`09endif X$`09_sel_opt`20=`20\0B09+`201 X$`09if`20(_line`20+`203)`20.eq.`20screen$line_command X$`09`20`20`20then X$`09`09if`20_cur_col`20.eq.`201 X$`09`09`20`20`20then X$`09`09`09_line`20=`20\0806+`201 X$`09`09`09__closing_line_written__`20=`201 X$`09`09`09_line_size`20=`20_sel_size X$`09`09`09_check_next`20=`20_sel_opt`20+`201 X$`20`09`09`09if`20f$type('_select_list'$value'_sel_opt')`20.eqs.`20"" X$`09`09`09`20`20`20then`20$`20_show_next`20=`20"" X$`09`09`09`20`20`20else X$`09`09&0209_line_size`20=`20\0D0B-`206 X$`09`09&0209_show_next`20=`20"''ESC$'(B\0907`5B1mN\0B080mext>\22080q" X$`09`09`09endif X$`09`09`09if`20scroll$this_page`20.eq.`201 X$`09`09`09`20`20`20then`20$`20_show_prev`20=`20"" X$`09`09`09`20`20`20else X$`09`09&0209_line_size`20=`20\0D0B-`2010 X$`09`09&0209_show_prev`20=`20"q''ESC$'(B<\0A07`5B1mP\0B080mrevious\26080" X$`09`09`09endif X$`09`09`09ws`20f$fao("''ESC$'`5B''_line';''_subwin_pos'H\2007(0m''_show_prev'! V\3007_size'*q\1D08next'j\3508B") X$`09`09endif X$`09`09_cur_col`20=`20\0B09+`201 X$`09`09if`20(_sel_loc`20+`20((_cur_col`20-`201)`20*`20(screen$tab`20+`20_longe Vst))`20+`20- X`09`09`20`20`20_longest)`20.ge.`20(_sel_size`20+`20_subwin_pos`20) X$`09`09`20`20`20then X$`09`09`09_cur_col`20=`20\0B09-`201 X$`09`09`09if`20f$type('_select_list'$value'_sel_opt')`20.nes.`20""`20- X`09`09`09`20`20`20then`20$`20scroll$next_page`20==`20_sel_opt X$`09`09`09goto`20sellst$end_setup X$`09`09endif X$`09endif X$`09goto`20sellst$_setup X$! X$`20sellst$end_setup: X$! X$`09if`20f$type(scroll$max_on_page)`20.eqs.`20""`20.and.`20- X`09`20`20`20f$type(scroll$next_page)`20.nes.`20""`20then`20- X`09`20`20`20$`20scroll$max_on_page`20==`20_sel_opt`20-\2108this_page X$`09if`20scroll$this_page`20.ne.`201`20then`20$\1F08previou\2307==`20- X`09`20`20`20scroll$this_page`20-\1308max_on_page X$`09if`20_cur_col`20.eq.`201`20.and.`20f$type(__closing_line_written__)`20.eqs V.`20"" X$`09`20`20`20then X$`09`09_line`20=`20\0806+`201 X$`09`09_line_size`20=`20_sel_size X$`09`09if`20f$type`20(scroll$next_page)`20.eqs.`20"" X$`09`09`20`20`20then`20$`20_show_next`20=`20"" X$`09`09`20`20`20else X$`09`09`09_line_size`20=`20\0D0B-`206 X$`09`09`09_show_next`20=`20"''ESC$'(B\0906`5B1mN\1307`5B0mext>\21080q" X$`09`09endif X$`09`09if`20f$type`20(scroll$previous_page)`20.eqs.`20"" X$`09`09`20`20`20then`20$`20_show_prev`20=`20"" X$`09`09`20`20`20else X$`09`09`09_line_size`20=`20\0D0B-`2010 X$`09`09`09_show_prev`20=`20"q''ESC$'(B<\0A07`5B1mP\0B080mrevious\26080" X$`09`09endif X$! X$`09`20sellst$fill_subwin: X$! X$`09`09if`20(_line`20+`203)`20.le.`20screen$line_command`20.and.`20- X`09`09`20`20`20f$type`20(scroll$previous_page)`20.nes.`20"" X$`09`09`20`20`20then X$`09`09`09ws`20f$fao("''ESC$'`5B''_line';''_subwin_pos'H\2007(0x!''_sel_size'* V`20x\1A08B") X$`09`09`09_line`20=`20\0806+`201 X$`09`09`09goto`20sellst$fill_subwin X$`09`09endif X$`09`09ws`20f$fao("''ESC$'`5B''_line';''_subwin_pos'H\2007(0m''_show_prev'! V\3007_size'*q\1D08next'j\3508B") X$`09endif X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Create`20a`20small`20window`20with`20all`20possible`20options`20when V`20a`20dynamic`20menu X$!`09has`20been`20selected X$! X$`20screen$setup_dynamic_menu: X$! X$`09_mnu_opt`20=`201 X$`09_mnu_size`20=`200 X$! X$`20dynmnu$_find_longest: X$!`20`20&0220&0420\0808\1007 X$`09if`20f$type(_dynmenu'_mnu_opt')`20.eqs.`20""`20then`20$`20goto`20dynmnu$en Vd_find_longest X$`09if`20f$length(f$element(0,`20"`7C",`20_dynmenu'_mnu_opt'))`20.gt.`20_mnu_s Vize`20then`20- X`20`09`20`20`20$`20_mnu_size`20=`20f$length(f$element(0,`20"`7C",`20_dynmenu'_ Vmnu_opt')) X$`09_mnu_opt`20=`20\0B09+`201 X$`09goto`20dynmnu$_find_longest X$! X$`20dynmnu$end_find_longest: X$! X$`09_mnu_size`20=`20\0C0A+`204 X$`09_mnu_loc`20=`20screen$default_position`20+`202 X$`09_mnu_line`20=`20(screen$height`20-`20\100D_margin`20-`20- X`09`20`20`20screen$window_topmargin`20-`20_mnu_opt)`20/`202 X$`09_mnu_opt`20=`201 X$`09ws`20f$fao("''ESC$'`5B''_mnu_line';\0D08oc'H\2107(0l!\2407size'*qqqk\1C08B V") X$`09_mnuopt_loc`20=`20_mnu_loc`20+`202 X$! X$`20dynmnu$_setup: X$! X$`09if`20f$type(_dynmenu'_mnu_opt')`20.eqs.`20""`20then`20$`20goto`20dynmnu$en Vd_setup X$`09_line`20=`20_mnu\0C06+\0C06opt X$`09ws`20f$fao("''ESC$'`5B''_line';''_mnu_loc'H\1D07(0x\0A08B!\2007size'*`20 V`20`20\2413") X$`09ws`20"''ESC$'`5B''_line';''_mnuopt_loc'H\20081m\1906_opt'>\36080m`20",`20f V$element(0,`20"`7C",`20_dynmenu\330A) X$`09_mnu_opt`20=`20\0B09+`201 X$`09goto`20dynmnu$_setup X$! X$`20dynmnu$end_setup: X$! X$`09_line`20=`20\0806+`201 X$`09ws`20f$fao("''ESC$'`5B''_line';''_mnu_loc'H\1D07(0m!\1707size'*qqqj\1C08B" V) X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==> X$! X$`20screen$setup_tag_list: X$! X$`09_longest_record`20=`200 X$`09_position`20=`20screen$default\1A09 X$`09_tag_msg`20=`200 X$`09if`20p2`20.eqs.`20"" X$`09`20`20`20then X$`09`09gosub`20screen$erase_window X$`09`09_tag_cnt`20=`201 X$`09`20`20`20else`20$`20_tag_cnt`20=`201 X$!`09`20`20`20else`20$`20_tag_cnt`20=`20f$integer(p2) X$`09endif X$`09if`20f$type('_tagblock'$message)`20.nes.`20"" X$`09`20`20`20then X$`09`09_line`20=`20screen$line_header`20+\1508window_topmargin X$`09`09ws`20"''ESC$'`5B''_line';''_position'H\1E081m",'_tagblock'$message, V\3F090m" X$`09`09_tag_msg`20=`202 X$`09endif X$`09_line`20=`20screen$line_header`20+\1508window_topmargin`20+`20_tag_msg X$`09_back_up`20=`200 X$! X$`20screen$_tag_list: X$! X$`09_line`20=`20\0806+`201 X$`09if`20(_line`20+`202)`20.gt.`20screen$line_command X$`09`20`20`20then X$`09`09_line`20=`20\0806-`20_back_up X$`09`09_back_up`20=`200 X$`09`09_position`20=`20\0C0A+`20screen$tab`20+`20_longest_record`20+`204 X$`09`09_longest_record`20=`200 X$`09endif X$`09_back_up`20=`20\0B09+`201 X$`09_blank`20=`20"" X$`09if`20_tag_cnt`20.lt.`2010`20then`20$`20_blank`20=`20"`20" X$`09_tag_value`20=`20'_tagblock'$value'_tag_cnt'`20 X$`09if`20f$length(_tag_value)`20.gt.`20_longest_record`20then`20- X`09`20`20`20$`20_longest_record`20=`20f$length(_tag_value) X$! X$`09if`20p2`20.eqs.`20""`20.or.`20_tag_cnt`20.eq.`20p2 X$`09`20`20`20then X$`09`09if`20(f$length("''_blank'''_tag_cnt'>`20\0D07value'")`20+`20- X`09`09`20`20`20_position)`20.gt.`20(screen$default\1F09`20+`20\1A07line_length V) X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20overflow X$`09`09`09exit`20omi$_error X$`09`09endif X$`09`09if`20f$locate("''_tagdelim'''_tag_value\0D07\1906",'_taglist')`20.lt. V`20- X`09`09`20`20`20f$length('_taglist')`20.or.`20(\1B16ne.`200`20- X`09`09`20`20`20.and.`20f$locate("''_tag_value'''_tagdelim'",'_taglist')`20.eq. V`200) X$`09`09`20`20`20then`20$`20ws`20"''ESC$'`5B''_line';''_position'H\1E081m''_bla Vnk'''_tag_cnt'>\3D080m`20\48087m''_tag_value'\220A" X$`09`09`20`20`20else`20$`20ws`20"''ESC$'`5B''_line';''_position'H\1E081m''_bla Vnk'''_tag_cnt'>\3D080m`20\1707value'" X$`09`09endif X$`09endif X$`09_tag_cnt`20=`20\0B09+`201 X$! X$`09if`20f$type('_tagblock'$value'_tag_cnt')`20.eqs.`20"" X$`09`20`20`20then X$`09`09_line`20=`20\0806+`201 X$`09`09if`20(_line`20+`202)`20.gt.`20screen$line_command X$`09`09`20`20`20then X$`09`09`09_position`20=`20\0C0A+`20screen$tab`20+`20_longest_record`20+`204 X$`09`09`09_line`20=`20\0806-`20_back_up X$`09`09endif X$`09`09if`20(f$length("''_blank'''_tag_cnt'>`20''questions$reverse_tags'")`20+ V`20- X`09`09`20`20`20_position)`20.gt.`20(screen$default\1F09`20+`20\1A07line_length V) X$`09`09`20`20`20then X$`09`09`09omi$signal`20omi`20overflow X$`09`09`09exit`20omi$_error X$`09`09endif X$`09`09ws`20"''ESC$'`5B''_line';''_position'H\1E081m''_blank'''_tag_cnt'>\3D08 V0m`20''questions$reverse_tags'" X$`09`09return X$`09endif X$`09goto`20screen$_tag_list X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Display`20a`20list`20of`20information`20records`20(no`20options)`20in V`20the`20window. X$!`09The`20records`20are`20presented`20as`20'omi$\1E061,`20\0D0A2`20....' X$! X$`20screen$display_information: X$! X$`09gosub`20screen$erase_window X$`09_record_cnt`20=`201 X$! X$`20displ_info$records: X$! X$`09if`20f$type(omi$record'_\0806_cnt')`20.eqs.`20""`20then`20$`20return X$`09if`20omi$record'_\0806_cnt'`20.eqs.`20""`20then`20$`20return X$! X$`09_line`20=`20screen$line_header`20+`20_record_cnt`20+`20\2307window_topmarg Vin X$`09_record`20=`20omi$\0D06'\1507_cnt' X$`09ws`20"''ESC$'`5B''_line';''screen$default_position'H",_record X$`09omi$record'_\0806_cnt'`20=`20"" X$`09_record_cnt`20=`20\0E0C+`201 X$`09goto`20displ_info$records X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Clear`20the`20window`20in`20which`20all`20output`20and`20menu`20items V`20are`20displayed X$! X$`20screen$erase_window: X$! X$`09_line`20=`20screen$line_header`20+`201 X$! X$`20line$_clear: X$! X$`09ws`20f$fao("''ESC$'`5B''_line';''screen$default_position'H!\1C09line_lengt Vh'*`20") X$`09_line`20=`20\0806+`201 X$`09if`20_line`20.lt.`20(screen$line_command`20-`201)`20then`20$`20goto`20line V$_clear X$`09_linelength`20=`20screen$menu_width`20-`201 X$! X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Calculate`20the`20values`20for`20all`20variables`20used`20in`20this`20 Vprocedure. X$!`09The`20values`20are`20stores`20a`20globals,`20so`20they`20don't`20have`20t Vo`20be`20recalculated X$!`09each`20time`20this`20procedure`20is`20called. X$! X$`20screen$_values: X$! X$`09if`20screen$width`20.gt.`2080 X$`09`20`20`20then`20$`20screen$width`20==`20132 X$`09`20`20`20else`20$`20screen$width`20==`2080 X$`09endif X$`09_screenheight`20=`20\0F06$\1007-\100E_margin`20 X$! X$`09screen$menu_width`20`20`20==`20\1707\1206-`20(2`20*\140D_margin) X$`09screen$line_length`20`20==`20\1707menu_width`20-`202 X$`09screen$line_command`20==`20_\1806height`20-`202 X$`09screen$line_message`20==`20_\1806height X$`09screen$line_header`20`20==`20\1707height_margin X$`09screen$default_position`20==`20\1B07width_margin`20+`202 X$`09screen$prompt_position`20==`20`20"''ESC$'`5B''\2607line_command';\1709defa Vul\3E0A'H" X$`09if`20(f$extract(0,1,f$edit(screen$scrollregion_autodisable,"upcase"))`20- V X`09`20`20`20.eqs.`20"Y"`20.or.`20screen$scrollregion_autodisable`20.eq.`201) V`20- X`09`20`20`20.and.`20screen$width_margin`20.ne.`200`20then`20- X`09`20`20`20$`20screen$scroll_region`20==`20"disabled" X$! X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09This`20routine`20writes`20all`20lines`20to`20the`20screen,`20thus`20cr Veating`20the`20main X$!`09window,`20as`20specified`20in`20the`20configuration`20files.`20The`20 V\3506`20will`20later X$!`09on`20be`20filled`20with`20the`20per-menu`20items. X$! X$`20screen$_initialize: X$! X$`09_cmdline`20=`20screen$line_command`20-`201 X$`09_msgline`20=`20screen$line_message`20-`201 X$! X$`09_leftline`20`20=`20screen$width_margin&0220 X$`20`20&0220&0220`09_rightline`20=`20screen$width`20-\0F0D_margin&0220 X$! X$`09set`20terminal/width='screen$width`20' X$`09if`20screen$width_margin`20.eq.`200 X$`09`20`20`20then`20$`20_blank`20=`20"" X$`09`20`20`20else`20$`20_blank`20=`20"`20" X$`09endif X$! X$`09ws`20f$fao("''ESC$'`5B''screen$line_header';\1609width_margin'H\35087m! V\3809menu_width'*`20''_blank''\5F070m") X$`09if`20screen$width_margin`20.eq.`200`20then`20$`20goto`20line$_no\2206 X$`09ws`20"''ESC$'`5B''screen$line_command';''_leftline'H\2C07(0x\0A08B\3F22rig Vh\401A" X$`09_line`20=`20screen$line_header`20+`201 X$! X$`20line$_setup: X$! X$`09ws`20"''ESC$'`5B''_line';''_leftline'H\1E07(0x\0A08B\3114righ\321A" X$`09_line`20=`20\0806+`201 X$`09if`20_line`20.lt.`20_cmdline`20then`20$`20goto`20line$_setup X$`09goto`20line$end_setup X$! X$`20line$_nomargin: X$! X$`09ws`20f$fao("''ESC$'`5B''_cmdline';''screen$width_margin'H\2B07(0!\2109menu V_width'*q\2008B") X$`09ws`20f$fao("''ESC$'`5B''_msgline';''screen$width_margin'H\2B07(0!\2109menu V_width'*q\2008B") X$! X$`09return X$! X$`20line$end_setup: X$! X$`09_linelength`20=`20screen$menu_width`20-`201 X$! X$`09if`20f$type(menu$item1)`20.eqs.`20"" X$`09`20`20`20then X$`09`09_logo_location`20=`20(screen$width`20/`202`20)`20-`2026 X$`09`09_line`20=`20screen$line_header`20+`20((_cmdline`20-`20(\23151)`20-`204) V`20/`202) X$`09`09ws`20"''ESC$'`5B''_line';''_logo_location'H`20`20&0220&0220OOOOO\0B06 V&0220MMMM`20MM\0E09`20MMM&0520III`20III" X$`09`09_line`20=`20\0806+`201 X$`09`09ws`20"''ESC$'`5B''_line';''_logo_location'H`20`20`20O`20OO`20&0220OO`20 VO&0320&0320`20MMM`20MM\0B0B\1807II`20II`20" X$`09`09_line`20=`20\0806+`201 X$`09`09ws`20"''ESC$'`5B''_line';''_logo_location'H`20OO`20OO`20`20&0220\0A0A V`20MMMM`20MM&0320MM`20MM`20MM&0320&0320II`20II`20" X$`09`09_line`20=`20\0806+`201 X$`09`09ws`20"''ESC$'`5B''_line';''_logo_location'HOO`20OO`20`20&0220&0320\0C08 VMM&0220MM`20MM`20\0A0A&0520II`20II`20" X$`09`09_line`20=`20\0806+`201 X$`09`09ws`20"''ESC$'`5B''_line';''_logo_location'HOO`20OO`20`20&0220&0320\0C08 VMM&0320MM`20MM\0909\2206II`20II`20" X$`09`09_line`20=`20\0806+`201 X$`09`09ws`20"''ESC$'`5B''_line';''_logo_location'H`20OO`20OO`20`20&0220\0A0AMM V\0606\0906\0808&0320II`20II`20" X$`09`09_line`20=`20\0806+`201 X$`09`09ws`20"''ESC$'`5B''_line';''_logo_location'H`20`20`20O`20OO`20&0220OO`20 VO&0320&0220MM&0520\0808`20MM`20\1307II`20II`20" X$`09`09_line`20=`20\0806+`201 X$`09`09ws`20"''ESC$'`5B''_line';''_logo_location'H`20`20&0220&0220OOOOO\0B06 V`20MMM\0A07\100A\1406III`20III" X$`09endif X$! X$`09ws`20f$fao("''ESC$'`5B''_cmdline';''screen$width_margin'H\2B07(0t!''_linel Vength'*qu\1C08B") X$`09ws`20f$fao("''ESC$'`5B''_msgline';''screen$width_margin'H\2B07(0m!''_linel Vength'*qj\1C08B") X$`09return X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09 X$! X$`20screen$_erase: X$! X$`09deletee/symbol/global`20screen$menu_width X$`09deletee/symbol/global`20screen$line_command X$`09deletee/symbol/global`20screen$line_message X$`09deletee/symbol/global`20screen$line_header X$`09deletee/symbol/global`20screen$line_length X$`09deletee/symbol/global`20screen$default_position X$`09deletee/symbol/global`20screen$prompt_position X$! X$`09if`20f$type(inputs$first_line)`20.nes.`20""`20then`20- X`09`20`20`20$`20deletee/symbol/global`20inputs$first_line X$`09if`20f$type(inputs$last_line)`20.nes.`20""`20then`20- X`09`20`20`20$`20deletee/symbol/global`20inputs$last_line X$`09if`20f$type(inputs$value_location)`20.nes.`20""`20then`20- X`09`20`20`20$`20deletee/symbol/global`20inputs$value_location X$`09if`20f$type(inputs$highest_item)`20.nes.`20""`20then`20- X`09`20`20`20$`20deletee/symbol/global`20inputs$highest_item X$`09if`20f$type(inputs$max_size)`20.nes.`20""`20then`20- X`09`20`20`20$`20deletee/symbol/global`20inputs$max_size`20 X$! X$`09if`20f$type(scroll$max_on_page)`20.nes.`20""`20then`20- X`09`20`20`20$`20deletee/symbol/global`20scroll$max_on_page X$`09if`20f$type(scroll$this_page)`20.nes.`20""`20then`20- X`09`20`20`20$`20deletee/symbol/global`20scroll$this_page X$`09if`20f$type(scroll$next_page)`20.nes.`20""`20then`20- X`09`20`20`20$`20deletee/symbol/global`20scroll$next_page X$`09if`20f$type(scroll$previous_page)`20.nes.`20""`20then`20- X`09`20`20`20$`20deletee/symbol/global`20scroll$previous_page X$! X$`09if`20f$type(omi$confirmed)`20.nes.`20""`20then`20- X`09`20`20`20$`20deletee/symbol/global`20omi$confirmed X$! X$`09if`20p2`20.nes.`20"NOCLS"`20.and.`20.not.`20omi$batch_mode`20then`20- X`09`20`20`20$`20set`20terminal/width`20=`20'screen$exit_width X$! X$`09return X$! X$!********\0808\1010\2020\400E X $ call unpack [.OMI-V2_3]OMI$SCREEN.COM;1 4249888429 "" 55 32 41 $! $ create 'f' X$`09goto`20start$ X$! X$!********\0808\1010\2020\400E X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220MODULE`20NAME:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220Omi$Toolbox.Com\1506\1B06\0C0C\1818\3007* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220CALLED`20BY:&0420&0420\0808\1010\201E* X$!*`20`20&0220==========&0420&0420\0808\1010\201E* X$!*`20`20&0220&0220Omi$Menu.Com\1206\1806\0C0C\1818\300A* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!*`20`20&0220DESCRIPTION:&0420&0420\0808\1010\201C* X$!*`20`20&0220============&0420&0420\0808\1010\201C* X$!*`20`20&0220&0220Additional`20tools`20for`20OMI,`20called`20by`20the`20sever Val`20internal`20OMI`20commands.* X$!*`20`20&0220&0220These`20commands`20will`20be`20called`20whenever`20one`20of V`20the`20OMI\300Ais`20&0420* X$!*`20`20&0220&0220specified`20in`20a`20called`20module,`20returning`20the`20r Vesulting`20values`20in`20\4606* X$!*`20`20&0220&0220global`20symbols.\1506\1B06\0C0C\1818\3007* X$!*`20`20&0220&0420\0808\1010\2020\400C* X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$`20start$: X$! X$`09gosub`20'p1'$ X$`09exit`20$status X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09The`20Omi$Calc`20command;`20this\0E08`20just`20checks`20for`20existanc Ve`20of`20the X$!`09required`20parameter(s),`20then`20calls`20the`20file`20Omi$Calculator.Com V, X$!`09which`20performs`20all`20calculations X$! X$`20calc$: X$! X$`09if`20p2`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20insarg,"OMI$CALC" X$`09`09return`20omi$_warning X$`09endif X$! X$`09@omi$:omi$calculator`20"''p3'"`20"''p4\08075\10076\18077\20078'" X$`09return`20$status X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Popus`20a`20message`20box.`20The`20\1108is`20given`20as`20a`20paramete Vr.`20This X$!`09routine`20decides`20how`20wide`20the`20message`20box`20can`20be,`20breaks V`20the`20input X$!`09line`20is`20necessary,`20and`20draws`20the`20box. X$!`09After`20a`20confirm`20the`20screen`20is`20redrawn. X$! X$`20popup$: X$! X$`09_msg_length`20=`20p2 X$`09_maxlen`20=`20screen$menu_width`20/`202 X$`09_widest`20=`200 X$`09_lc`20=`201 X$`09_ec`20=`200 X$! X$`09_msg_string'_lc'`20=`20f$element(_ec,`20"`20",`20p2) X$! X$`20popup$_nextword: X$! X$`09_ec`20=`20_ec`20+`201 X$`09_next_word`20=`20f$element(_ec,`20"`20",`20p2) X$`09if`20_next_word`20.eqs.`20"`20"`20.or.`20\1A12"`20then`20- X`09`20`20`20$`20goto`20popup$end_nextword X$`09if`20(f$length(_msg_string'_lc')`20+`20\1D0Anext_word)`20+`201)`20- X`09`20`20`20.lt.`20_maxlen X$`09`20`20`20then`20$`20_msg_string'_lc'`20=\1312+`20"`20"`20+`20_next_word X$`09`20`20`20else X$`09`09if`20f$length(_msg_string'_lc')`20.gt.`20_widest`20then`20- X`09`09`20`20`20$`20_widest`20=`20f$length(_msg_string'_lc') X$`09`09_lc`20=`20_lc`20+`201 X$`09`09_msg_string'_lc'`20=`20_next_word X$`09endif X$`09goto`20popup$_nextword X$! X$`20popup$end_nextword: X$! X$`09if`20f$length(_msg_string'_lc')`20.gt.`20_widest`20then`20- X`20`09`20`20`20$`20_widest`20=`20f$length(_msg_string'_lc') X$`09_ln_count`20=`20_lc X$`09_t_width`20=`20_widest`20+`202 X$`09_lc`20=`201 X$`09_t_loc`20=`20screen$line_header`20+`20- X`09`20`20`20((screen$line_command`20-`20\160Cheader`20-`20_ln_count)`20/`202) V X$`09_m_loc`20=`20screen$default_position`20+`20(\1B07menu_width`20/`204) X$`09ws`20f$fao("''BELL$''\0808'ESC$'`5B''_t_loc';''_m_loc'H\1C07(0l!''_t_width V'*qk\1908B") X$! X$`20popup$_write: X$! X$`09_t_loc`20=`20\0907+`201 X$`09if`20_lc`20.gt.`20_ln_count`20then`20$`20goto`20popup$end_write X$`09_blank_fill`20=`20_t_width`20-`20f$length(_msg_string'_lc')`20-`202 X$`09ws`20f$fao("''ESC$'`5B''_t_loc';''_m_loc'H\1C07(0x\0A08B`20!AS!''_blank_fi Vll'*`20`20\2913",`20_msg_string'_lc') X$`09_lc`20=`20_lc`20+`201 X$`09goto`20popup$_write X$! X$`20popup$end_write: X$! X$`09ws`20f$fao("''ESC$'`5B''_t_loc';''_m_loc'H\1C07(0m!''_t_width'*qj\1908B") V X$`09_refresh`20=`201 X$`09_wait`20`20&0220=`201 X$`09_cnt`20=`200 X$! X$`20popup$check_options: X$! X$`09_opt`20=`20f$element(_cnt,`20",",`20p3) X$`09if`20_opt`20.eqs.`20","`20.or.`20\140C"`20then`20$`20goto`20popup$checked_ Voptions X$`09if`20f$extract(0,5,_opt)`20.eqs.`20"NOREF"`20then`20$`20_refresh`20=`200 X$`09if`20f$extract(0,5,_opt)`20.eqs.`20"NOWAI"`20then`20$`20_wait`20`20&0220= V`200 X$`09_cnt`20=`20_cnt`20+`201 X$`09goto`20popup$check_options X$! X$`20popup$checked_options: X$! X$`09if`20_wait`20`20&0220then`20$`20omi$wait X$`09if`20_refresh`20then`20$`20omi$\1307 X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09This`20is`20a`20small`20imported`20tool,`20written`20a`20few`20years V`20ago,`20which`20does`20what X$!`09'F$EDIT(string,"REVERSE")'`20should`20do. X$!`09It`20returns`20the`20global`20symbol`20OMI$REVERSED,`20which`20contai V\2F07 X$!`09reversed`20value`20of`20the`20complete`20input`20string. X$! X$`20reverse$: X$! X$`09inputs$`20=`20"''p2'`20''p3'`20''p4'`20''p5'`20''p6'`20''p7'`20''p8'" X$`09inputs$`20=`20f$edit(\1108,"trim") X$`09if`20inputs$`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20insarg,"OMI$REVERSE" X$`09`09return`20omi$_error X$`09endif X$! X$`09ilen$`20=`20f$length(inputs$) X$`09ipos$`20=`200 X$`09reversed$`20=`20"" X$! X$`20string$_reverse: X$! X$`09if`20ipos$`20.lt.`20ilen$ X$`09`20`20`20then X$`09`09rpos$`20=`20ilen$`20-`20ipos$ X$`09`09tmp$`20=`20f$extract(ipos$,`201,`20inputs$) X$`09`09reversed$`5Brpos$,1`5D`20:=`20"''tmp$'" X$!`09`09reversed$`5Brpos$,1`5D`20:=`20f$extract(ipos$,`201,`20inputs$) X$`09`09ipos$`20=`20\0806+`201 X$`09`09goto`20string$_reverse X$`09endif X$`09omi$reversed`20==`20f$edit(\1308$,`20"trim") X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Dump`20all`20OMI$RECORDs`20to`20a`20file X$! X$`20dump_info$: X$! X$`09if`20p2`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20insarg,"OMI$DUMP_INFO" X$`09`09return`20omi$_error X$`09endif X$! X$`09records`20=`201 X$`09if`20f$search(p2)`20.eqs.`20"" X$`09`20`20`20then`20$`20open`20/write`20/error=dinf$_fopenerr`20dumpfile`20'p2 V X$`09`20`20`20else`20$`20open`20/append`20/error=dinf$_fopenerr`20dumpfile`20'p V2 X$`09endif X$! X$`20dinf$_loop: X$! X$`09if`20f$type(omi$record'\0706s')`20.eqs.`20""`20then`20$`20goto`20dinf$end_ Vloop X$`09if`20omi$record'\0706s'`20.eqs.`20""`20then`20$`20goto`20dinf$end_loop X$`09write`20dumpfile`20omi$record'\0706s' X$`09records`20=`20\0A08+`201 X$`09goto`20dinf$_loop X$! X$`20dinf$end_loop: X$! X$`09close`20dumpfile`20 X$`09return`20omi$_ok X$! X$`20dinf$_fopenerr: X$! X$`09omi$signal`20omi`20dmp_openerr,'p2 X$`09return`20omi$_error X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Call`20another`20OMI`20module. X$! X$`20call$: X$! X$`09if`20p2`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20insarg,"OMI$CALL" X$`09`09return`20omi$_warning X$`09endif X$! X$`20!!!`09_module`20=`20f$parse(p2,,,"name")`20+\170D".omi","type") X$`09_module`20=`20p2 X$`09if`20f$parse(_module,,,"type")`20.eqs.`20"."`20.and.`20- X`09`20`20`20f$extract(f$length(_module)-1,`201,`20\0F08`20.nes.`20"."`20then V`20- X`09`20`20`20$`20_module`20=`20"''\0D07'.Omi" X$`09_smodule`20=`20_\0A06 X$`09if`20f$search(_module)`20.eqs.`20""`20then`20- X`20`09`20`20`20$`20_module`20=`20"Omi$Menu_Directory:''\2007'" X$`09if`20f$search(_module)`20.eqs.`20""`20then`20- X`20`09`20`20`20$`20_module`20=`20"Omi$:''_s\1306'" X$!`09_module`20=`20f$parse(p2,"OMI$:.OMI") X$!`09if`20f$search(_module)`20.eqs.`20""`20then`20- X`20!`09`20`20`20$`20_module`20=`20f$parse(p2,"OMI$MENU_DIRECTORY:.OMI",,,"no_c Vonceal") X$`09if`20f$search(_module)`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20modnotfound,'p2' X$`09`09return`20$status X$`09endif X$! X$`09@'_module'`20"''p3'"`20"''p4\08075\10076\18077\20078'" X$`09return`20$status X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09An`20old`20routine,`20written`20a`20few`20years`20ago,`20imported`20he Vre`20to`20support X$!`09mailboxes`20in`20OMI.`20It`20opens`20a`20temporary`20\2707`20for`20read V`20and`20write. X$!`09The`20logical`20pointing`20to`20this`20mailbox`20is`20OMI$MAILBOX.`20Ther Ve's`20also`20a X$!`09global`20symbol`20with`20the`20same`20name,`20containing`20the`20devic V\1C06`20of`20the X$!`09temporary`20mailbox`20(MBAxxx:) X$!`09Change`20in`20v1.41:`20the`20logical`20OMI$MAILBOX`20is`20still`20the`20d Vefault,`20but X$!`09using`20a`20parameter,`20another`20logical`20name`20can`20now`20be`20spec Vified. X$! X$`20create_mbx$: X$! X$`09if`20p2`20.eqs.`20"" X$`09`20`20`20then`20$`20_mailbox_name`20=`20"Omi$M\1406" X$`09`20`20`20else`20$`20_mailbox_name`20=`20p2 X$`09endif X$! X$`09if`20f$trnlnm(_mailbox_name)`20.nes.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20mbxalrex,'_mailbox_name' X$`09`09return`20omi$_warning X$`09endif X$! X$!*`20The`20second`20parameter`20is`20not`20(yet)`20supported`20since`20this V`20module`20needs X$!*`20to`20write`20to`20the`20mailbox.`20Perhaps`20this`20can`20be`20solved`20 Vin`20a`20future`20release. X$! X$!`09if`20p3`20.eqs.`20""`20then`20$`20p3`20=`20"read,write" X$`09p3`20=`20"read,write" X$! X$`09omi$signal`20omi`20crembx X$! X$`09open/write`20CrMbxSub`20Sys$Scratch:Omi_\1908._Tmp$ X$`09write`20CrMbxSub`20- X`09`20`20`20"$`20delete/nolog/noconfirm`20'f$environment(""procedure"")'" X$`09write`20CrMbxSub`20"$`20define/job`20_mbox`20mba'f$getjpi(0,""tmbu"")':" X$`09write`20CrMbxSub`20- X`09`20`20`20"$`20set`20process/resume/identification='f$getjpi(0,""owner"")'" V X$`09write`20CrMbxSub`20"$`20open/read`20mbx`20'f$trnlnm(""_mbox"")'" X$`09write`20CrMbxSub`20"$`20read`20mbx`20command" X$`09write`20CrMbxSub`20"$`20close`20mbx" X$`09write`20CrMbxSub`20"$`20'command'" X$`09close`20CrMbxSub X$! X$`09spawn/nowait/output=nl:/nolog`20@Sys$Scratch:Omi_CrMbxSub._Tmp$ X$`09set`20process/suspended/identification=0 X$`09'_mailbox_name'`20==`20f$trnlnm("_mbox") X$! X$`09_mode`20=`20"" X$`09if`20f$locate("rea",`20f$edit(p3,`20"lowercase"))`20.lt.`20f$length(p3)`20 Vthen`20- X`09`20`20`20$`20_mode`20=\0807+`20"/read" X$`09if`20f$locate("wri",`20f$edit(p3,`20"lowercase"))`20.lt.`20f$length(p3)`20 Vthen`20- X`09`20`20`20$`20_mode`20=\0807+`20"/write" X$! X$`20`09open`20'_mode'`20/share=write`20/error=crembx$_error`20- X`20`20`09&0220`20'_mailbox_name'`20f$trnlnm("_mbox") X$`20`09write`20/error=crembx$_error`20'_mailbox_name'`20"exit" X$`09omi$msgline_clear X$`09deassign/job`20_mbox X$`09if`20f$type(Omi$Open_Mailbox_List)`20.eqs.`20"" X$`09`20`20`20then`20$`20Omi$Open_Mailbox_List`20==`20"''_m\1407name'" X$`09`20`20`20else`20$`20Omi$Open_Mailbox_List`20==\1917+`20- X`09`09`20`20`20"#''_mailbox_name'" X$`09endif X$`09return`20omi$_ok X$! X$`20crembx$_error: X$! X$`09omi$msgline_clear X$`09omi$signal`20omi`20crembxerr X$`09if`20f$trnlnm('_mailbox_name')`20.nes.`20""`20then`20$`20close`20\270F X$`09deassign/job`20_mbox X$`09return`20omi$_error X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Calculate`20the`20current`20day-,`20week-`20and`20monthnumber.`20They' Vre`20returned X$!`09as`20the`20following`20global`20symbols: X$!`09`09omi$daynumber X$!`09`09omi$weeknumber X$!`09`09omi$monthnumber X$! X$`20date_info$: X$! X$`09if`20p2`20.eqs.`20""`20then`20$`20p2`20=`20"today" X$`20`20&0220&0320months$&0220=`20"+#january#31+#february#28+#march#31+#april#3 V0+#ma\2906june#30+#jul\3B06august#31+#september#30+#october#31+#nov\190Adec V\26071" X$`20`20&0220&0320year$&0420=`20f$integer(f$cvtime(p2,,"year")) X$`20`20&0220&0320imonth$&0220=`20f$integer(f$cvtime(p2,,"month")) X$`20`20&0220&0320iday$&0420=`20f$integer(f$cvtime(p2,,"day")) X$`20`20&0220&0320year$_4&0220=`20(((year$/4)*4`20.eq.\1E06)`20.and.`20\1F08100 V)*100`20.ne\2308) X$`20`20&0220&0320lyear$_4`20=`20((((year$-1)/4)*4`20.eq.`20(\1408)`20.and.`20- V X`09`20`20`20(((year$-1)/100)*100`20.ne.`20(\1808)) X$! X$`20`20&0220&0320month$_info`20=`20f$element(i\1906,"+",months$) X$`20`20&0220&0320month_of_year$`20=`20f$element(`201,`20"#",`20month$_info`20) V X$! X$`20`20&0220&0320month$_counter`20=`20i\1206 X$! X$`20d_info$count_days: X$! X$`09if`20month$_counter`20.gt.`201 X$`09`20`20`20then X$`20`20&0220&0320`09month$_counter`20=`20\110F-`201 X$`09`09month$_info`20=`20f$element(`20\1907counter,`20"+",`20months$`20) X$`20`20&0220&0320`09iday$`20=`20\0806+`20f$element(`202,`20"#",`20month$_info V`20) X$`09`09goto`20d_info$count_days X$`09endif X$! X$`20`20&0220&0320if`20year$_4`20.and.`20imonth$`20.gt.`202`20then`20iday$`20= V\0807+`201 X$! X$`09if`20f$cvtime(,,"weekday")`20.eqs.`20"Monday"`20`20&0220then`20$`20iday$_t Vmp`20=\0C06`20+`209 X$`09if`20f$cvtime(,,"weekday")`20.eqs.`20"Tuesday"`20`20`20then`20$`20iday$_tm Vp`20=\0C06`20+`208 X$`09if`20f$cvtime(,,"weekday")`20.eqs.`20"Wednesday"`20then`20$`20iday$_tmp`20 V=\0C06`20+`207 X$`09if`20f$cvtime(,,"weekday")`20.eqs.`20"Thursday"`20`20then`20$`20iday$_tmp V`20=\0C06`20+`206 X$`09if`20f$cvtime(,,"weekday")`20.eqs.`20"Friday"`20`20&0220then`20$`20iday$_t Vmp`20=\0C06`20+`205 X$`09if`20f$cvtime(,,"weekday")`20.eqs.`20"Saturday"`20`20then`20$`20iday$_tmp V`20=\0C06`20+`204 X$`09if`20f$cvtime(,,"weekday")`20.eqs.`20"Sunday"`20`20&0220then`20$`20iday$_t Vmp`20=\0C06`20+`203 X$! X$`20`20&0220&0320if`20iday$_tmp`20.lt.`207 X$`20`20&0220&0420&0220then X$`20`20&0220&0320`09iday$_tmp`20=`20\0C0A+`20365 X$`20`20&0220&0320`09if`20lyear$_4`20then`20$`20iday$_tmp`20=\0C0B+`201 X$`20`20&0220&0320endif X$`20`20&0220&0320iweek$`20=`20iday$_tmp`20/`207 X$`20`20&0220&0320if`20iday$_tmp`20.gt.`20371 X$`20`20&0220&0420&0220then X$`20`20&0220&0320`09iweek$`20=`201 X$`20`20&0220&0320`09if`20(`20iday$_tmp`20.eq.`20372`20)`20.and.`20(`20year$_4 V`20.or.`20l\0E08)`20- X`09`09`20`20`20then`20$`20iweek$`20=`2053 X$`20`20&0220&0320endif X$! X$`09if`20iday$`20`20`20.lt.`2010`20then`20$`20\1708=`20"0''iday$'" X$`09if`20iweek$`20`20.lt.`2010`20then`20$`20\1708=`20"0''\2506'" X$`09if`20imonth$`20.lt.`2010`20then`20$`20\1708=`20"0''\2507'" X$! X$`09omi$daynumber`20`20`20==`20iday$ X$`09omi$weeknumber`20`20==`20iweek$ X$`09omi$monthnumber`20==`20imonth$ X$! X$`09return`20omi$_ok X$! X$!********\0808\1010\2020\400E X X$!********\0808\1010\2020\400E X$! X$!==>`09Decrypt`20an`20encrypted`20string.`20The`20value`20will`20be`20returne Vd`20in`20the`20global X$!`09symbol`20OMI$DECRYPTED. X$! X$`20decrypt$: X$! X$`09if`20p2`20.eqs.`20"" X$`09`20`20`20then X$`09`09omi$signal`20omi`20insarg,"OMI$DECRYPT" X$`09`09return`20omi$_error X$`09endif X$s4="" X$s2="''p2'" X$rt1=- X"omi$decrypted" X$r1="(" X$r2=0 X$r3=r2+- X2 X$r4=3*r3 X$r5=r4-1 X$s5=s4 X$if`20f- X$loca- Xte("''ESC$'(",- Xs2)- X.lt.f- X$len- Xgth- X(s2) X$then X$gosub`20- X11$ X$goto`20- X18$ X$endif X$n$=0 X$gosub`20- X27$ X$if`20- X$status.eq.- Xomi$_error X$then`20return`20- Xomi$_error X$endif X$19$: X$if`20n$- X.eq.f- X$length- X(s2) X$then X$s2=- X"''s2$'" X$ver$ver=1 X$v$v=- X"t" X$goto- X`20- X18$ X$endif X$s2$`5B8*- Xn$,- X8`5D=- X(f- X$cvui- X(n$*8,- X8,s2)/- Xvac$)-oac$ X$n$=- Xn$+1 X$goto`20- X19$ X$11$: X$if`20- Xf$- Xloc- Xate- X("''ESC$'("- X,s2)- X.lt.f- X$length- X(s2) X$then X$r6=- X"%"+- X"''r5'" X$r7=- Xr1+"''r2'" X$r6=r1- X+r6 X$s2=s2- X- X-"''ESC$'''r1'B"-- X"''ESC$'''r7'"-- X"''ESC$'''r6'" X$goto`20- X11$ X$endif X$- Xver$ver=4 X$v$v="e" X$return X$18$: X$if`20- X(f$length- X(s2)*ver$ver).- Xg'v$v'.- Xf$len- Xgth- X(p2) X$then`20- Xgoto`20- X13$ X$else X$j=f$le- Xngth(s2)-1 X$ods=f$ex- Xtract- X(j,- X1,- Xs2) X$if`20- Xods- X.nes."`7E"- X.and.- Xods.- Xnes."`60"`20- Xthen`20goto`2013$ X$s2=- Xf$extract(0,- Xj,s2) X$i=0 X$16$: X$if`20- X(i/2).eq.((i+- X1)- X/2) X$then X$sl=4 X$else X$sl=5 X$endif X$s'sl'=- Xs'sl'+f$- Xextract- X(i,1,s2) X$i=i+1 X$if`20- Xi.lt.- Xj`20then`20$`20goto`20- X16$ X$omi$reverse`20- X"''s4'" X$s4=- Xomi$reversed X$delete- Xe- X/symbol- X/global`20- Xomi$reversed X$s5=f- X$extract(- X0,f$length- X(s5)- X-- X1,s5) X$if`20- Xods- X.eqs."`60"`20- Xthen`20- X$s5=f- X$extract- X(0,f- X$length(s5)- X-1,s5) X$'rt1'==s5+- Xs4 X$return