home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 February / PCWK0297.iso / lotus / english / winagent / install.dsk / TOOLKIT.LSS < prev    next >
Text File  |  1995-01-25  |  160KB  |  7,197 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502. USE "SETUPAPI"
  503. OPTION DECLARE
  504.  
  505.  
  506. PUBLIC CONST WM_COMMAND           = 273
  507. PUBLIC CONST WM_USER           = 1024
  508. PUBLIC CONST UM_PAINTMODELESS  = (WM_USER+1000)
  509. PUBLIC CONST UM_REBOOTFLAG     = (WM_USER+503)
  510. PUBLIC CONST UM_RESTARTWINDOWS = (WM_USER+504)
  511.  
  512.  
  513.  
  514. PUBLIC CONST DRIVE_REMOVABLE = 2
  515. PUBLIC CONST DRIVE_FIXED     = 3
  516. PUBLIC CONST DRIVE_REMOTE    = 4
  517.  
  518.  
  519. PUBLIC CONST SUCCESS = 1
  520. PUBLIC CONST FAILURE = 0
  521. PUBLIC CONST MANotes = 1   
  522. PUBLIC CONST MAShare = 2   
  523.  
  524.  
  525. PUBLIC CONST F_NOTHING    = 0
  526. PUBLIC CONST F_CHAPTER    = 1
  527. PUBLIC CONST F_NAME       = 2
  528. PUBLIC CONST F_INOROUT    = 4
  529. PUBLIC CONST F_DISPLAY    = 8
  530. PUBLIC CONST F_COMPLETE   = 16
  531. PUBLIC CONST F_LAPTOP     = 32
  532. PUBLIC CONST F_CUSTOM     = 64
  533. PUBLIC CONST F_TIPS       = 128
  534. PUBLIC CONST F_HELP       = 256
  535. PUBLIC CONST F_DESTDIR    = 512
  536. PUBLIC CONST F_BITMAP     = 1024
  537. PUBLIC CONST F_EXCEPTION  = 2048
  538. PUBLIC CONST F_SHARE      = 4096
  539. PUBLIC CONST F_KEYWORD    = 8192
  540. PUBLIC CONST F_DESTDIRSYM = 16384
  541.  
  542.  
  543.  
  544. DECLARE SUB PopulateCINSTALLLIST
  545. DIM CINSTALL LIST AS STRING
  546. DIM gNCINSTALL%
  547.  
  548.  
  549.  
  550. PUBLIC gAutoFile$
  551. DECLARE PUBLIC FUNCTION Lot_AutoGetProductDestDirSymbol () AS INTEGER
  552. DECLARE PUBLIC FUNCTION Lot_AutoGetBaseDirSymbol () AS STRING
  553. DECLARE PUBLIC FUNCTION Lot_GetKeyValFromResponseFile (Section$, Key$) AS STRING
  554. DECLARE PUBLIC FUNCTION Lot_AutoGetInstallType () AS STRING
  555. DECLARE PUBLIC FUNCTION Lot_AutoGetProgramGroup () AS INTEGER
  556. DECLARE PUBLIC FUNCTION Lot_AutoGetSizeOfInstall () AS INTEGER
  557. DECLARE PUBLIC FUNCTION AutoCheckForSpace () AS INTEGER
  558. DECLARE PUBLIC FUNCTION Lot_AutoGetUserInfo () AS INTEGER
  559. DECLARE PUBLIC FUNCTION Lot_AutoConfigureAutoexec () AS INTEGER
  560. DECLARE PUBLIC SUB AutoInstallReboot () 
  561. DECLARE PUBLIC FUNCTION Lot_AutoWriteOutDebugFile () AS INTEGER
  562. DECLARE PUBLIC FUNCTION Lot_AutoIsThisNetLotusApp (LotusIniPath$, ExistingCommDir$) AS INTEGER
  563. DECLARE PUBLIC FUNCTION Lot_AutoConsolidateMoveCopy () AS INTEGER
  564. DECLARE PUBLIC FUNCTION Lot_AutoConsolidateLotusAppDir (gConsolidateSize&) AS INTEGER
  565. DECLARE PUBLIC FUNCTION Lot_AutoChangeLotusAppDir () AS INTEGER
  566. DECLARE PUBLIC FUNCTION Lot_AutoSuiteAppSelect () AS INTEGER
  567. DECLARE PUBLIC FUNCTION Lot_AutoProcessNodeOptions () AS INTEGER
  568. DECLARE PUBLIC FUNCTION Lot_AutoGetSetLicenserInfo () AS INTEGER
  569.  
  570. DECLARE FUNCTION Lot_AutoCheckRSPPath (rsppath$) AS STRING
  571.  
  572.  
  573.  
  574. TYPE PRODINFO
  575.    Acronym                    AS STRING
  576.    Name                       AS STRING
  577.    Complete                   AS INTEGER
  578.    Custom                     AS INTEGER
  579.    Laptop                     AS INTEGER
  580.    SelectedType               AS STRING
  581.    UIInOrOut                  AS INTEGER
  582.    AllowUserToPickInSuite     AS INTEGER
  583.    FullSize                   AS LONG
  584.    MinSize                    AS LONG
  585.    Share                      AS INTEGER
  586.    DataLens                   AS INTEGER
  587.    SQL                        AS INTEGER
  588.    Paradox                    AS INTEGER
  589.    CDOpt                      AS STRING
  590.    CDOptSelected              AS STRING
  591.    CDOptDefaultSelected       AS STRING
  592.    NodeOpt                    AS STRING
  593.    NodeOptSelected            AS STRING
  594.    NodeOptDefaultSelected     AS STRING
  595.    Srv                        AS INTEGER
  596.    Dist                       AS INTEGER
  597.    License                    AS INTEGER
  598.    LicenseSelected            AS INTEGER
  599.    CountDirectory             AS STRING
  600.    ATM                        AS INTEGER
  601.    DirSymList                 AS STRING        
  602.    ProgManagerGroup           AS STRING
  603.    SystemFileSize             AS LONG
  604.    BillboardNumber            AS INTEGER
  605.    SHAREEXE                   AS INTEGER
  606.    Notes                      AS INTEGER
  607.    PreviousVersion            AS STRING      
  608. END TYPE
  609.  
  610. DIM Prods(gMaxNumOfProds) AS PRODINFO  
  611. DIM gCurrNumOfProds%                      
  612. DIM gCurrentProduct%                      
  613.  
  614.  
  615.  
  616. DECLARE PUBLIC FUNCTION FIsKeywordInCopyList LIB "lcomstf.dll" (ByVal szKeyword$) AS INTEGER
  617. DECLARE PUBLIC FUNCTION FGetChapterFromKeyword LIB "lcomstf.dll" (ByVal szKeyword$, ByVal szChptname$, ByVal cbChptsize%) AS INTEGER
  618. DECLARE PUBLIC FUNCTION FRemoveDir LIB "lcomstf.dll" (ByVal szDir$) AS INTEGER
  619. DECLARE PUBLIC FUNCTION FOpenInf LIB "lcomstf.dll" (ByVal szFile$,ByVal fCheck%,ByVal fCheckSyms%) AS INTEGER
  620. DECLARE PUBLIC FUNCTION LcbGetChapterCost LIB "lcomstf.dll" (ByVal szchapter$,ByVal szextra$,ByVal szcost$, ByVal szneed$) AS LONG
  621. DECLARE PUBLIC FUNCTION CbGetInfSectionKeyField LIB "lcomstf.dll" (ByVal szSect$, ByVal szKey$, ByVal iField%, ByVal szBuf$, ByVal cbBuf%) AS INTEGER
  622. DECLARE PUBLIC FUNCTION FMakeListInfSectionField LIB "lcomstf.dll" (ByVal szSym$, ByVal szSect$, ByVal iField%) AS INTEGER
  623. DECLARE PUBLIC FUNCTION FSetSymbolToListOfInfKeys LIB "lcomstf.dll" (ByVal szSym$, ByVal szSect$, ByVal fNulls%) AS INTEGER
  624. DECLARE PUBLIC FUNCTION FAddSectionFilesToCopyList LIB "lcomstf.dll" (ByVal szSect$, ByVal szSrc$, ByVal szDest$) AS INTEGER
  625. DECLARE PUBLIC FUNCTION FAddSectionKeyFileToCopyList LIB "lcomstf.dll" (ByVal szSect$, ByVal szKey$, ByVal szSrc$, ByVal szDest$) AS INTEGER
  626. DECLARE PUBLIC FUNCTION FDumpCopyListToFile LIB "lcomstf.dll" (ByVal szFile$) AS INTEGER
  627. DECLARE PUBLIC SUB      ResetCopyList LIB "lcomstf.dll" ()
  628. DECLARE PUBLIC SUB      ResetFileCosts LIB "lcomstf.dll" ()
  629. DECLARE PUBLIC FUNCTION FRemoveSectionFilesFromCopyList LIB "lcomstf.dll" (ByVal szSect$) AS INTEGER
  630. DECLARE PUBLIC FUNCTION FRemoveSectionKeyFileFromCopyList LIB "lcomstf.dll" (ByVal szSect$, ByVal szKey$) AS INTEGER
  631. DECLARE PUBLIC FUNCTION FSetBeepingMode LIB "lcomstf.dll" (ByVal mode%) AS INTEGER
  632. DECLARE PUBLIC SUB      ProSetPos LIB "lcomstf.dll" (ByVal x%, ByVal y%)
  633. DECLARE PUBLIC FUNCTION GrcCopyFilesInCopyList LIB "lcomstf.dll" (ByVal hInstance%) AS INTEGER
  634. DECLARE PUBLIC FUNCTION LcbGetCopyListCost LIB "lcomstf.dll" (ByVal szExtraList$, ByVal szCostList$, ByVal szNeedList$) AS LONG
  635. DECLARE PUBLIC FUNCTION FAddToBillboardList LIB "lcomstf.dll" (ByVal szDll$, ByVal idDlg%, ByVal szProc$, ByVal lTicks&) AS INTEGER
  636. DECLARE PUBLIC FUNCTION FClearBillboardList LIB "lcomstf.dll" () AS INTEGER
  637. DECLARE PUBLIC FUNCTION SetCopyMode LIB "lcomstf.dll" (ByVal fMode%) AS INTEGER
  638. DECLARE PUBLIC FUNCTION GetCopyMode LIB "lcomstf.dll" () AS INTEGER
  639. DECLARE PUBLIC FUNCTION SetSizeCheckMode LIB "lcomstf.dll" (ByVal scmMode%) AS INTEGER
  640. DECLARE PUBLIC FUNCTION LcbGetInfSectionSize LIB "lcomstf.dll" (ByVal szSect$)  AS LONG
  641. DECLARE PUBLIC FUNCTION FSetSilent LIB "lcomstf.dll" (ByVal mode%) AS INTEGER
  642. DECLARE PUBLIC FUNCTION ReadSerialNumber LIB "lcomstf.dll" (ByVal szSrc$,ByVal szSerial$) AS INTEGER
  643. DECLARE PUBLIC FUNCTION WriteUserRegistration LIB "lcomstf.dll" (ByVal szRi$,ByVal szUser$,ByVal szCompany$,ByVal szSerial$) AS INTEGER
  644. DECLARE PUBLIC FUNCTION ReadUserRegistration LIB "lcomstf.dll" (ByVal szRi$,ByVal szUser$,ByVal szCompany$,ByVal szSerial$) AS INTEGER
  645. DECLARE PUBLIC FUNCTION FPopulateLCB LIB "lcomstf.dll" (ByVal hDlg%,ByVal Chapter$) AS INTEGER
  646. DECLARE PUBLIC FUNCTION FSetDateOfFile LIB "lcomstf.dll" (ByVal szFile$,ByVal szDate$) AS INTEGER
  647. DECLARE PUBLIC FUNCTION FGetFirstChild LIB "lcomstf.dll" (ByVal szChapter$,ByVal szFirsthapter$, ByVal nField%) AS INTEGER
  648. DECLARE PUBLIC FUNCTION FGetFirst LIB "lcomstf.dll" (ByVal szChapter$,ByVal szFirsthapter$, ByVal nField%) AS INTEGER
  649. DECLARE PUBLIC FUNCTION FGetChapterValStr LIB "lcomstf.dll" (ByVal szChapter$,ByVal nField%, ByVal szBuf$,ByVal cbBuf%) AS INTEGER  
  650. DECLARE PUBLIC FUNCTION FGetChapterValInt LIB "lcomstf.dll" (ByVal szChapter$,ByVal nField%, lpVal%) AS INTEGER  
  651. DECLARE PUBLIC FUNCTION FGetNextSibling LIB "lcomstf.dll" (ByVal szChapter$,ByVal szNextChapter$,ByVal nField%) AS INTEGER
  652. DECLARE PUBLIC FUNCTION FGetNextChild LIB "lcomstf.dll" (ByVal szNextChildChapter$) AS INTEGER
  653. DECLARE PUBLIC FUNCTION FGetNext LIB "lcomstf.dll" (ByVal szNextChapter$) AS INTEGER
  654. DECLARE PUBLIC FUNCTION FToggleChapterFilesInCopyList LIB "lcomstf.dll" (ByVal szChapter$) AS INTEGER 
  655. DECLARE PUBLIC FUNCTION LcbGetInfChapterSize LIB "lcomstf.dll" (ByVal szChapter$)  AS LONG
  656. DECLARE PUBLIC FUNCTION FInitializeCopyList LIB "lcomstf.dll" (ByVal szChpt$, ByVal szSourcedir$, ByVal nField%) AS INTEGER 
  657. DECLARE PUBLIC FUNCTION FRefreshDestination LIB "lcomstf.dll" (ByVal lpszSym$) AS INTEGER 
  658. DECLARE PUBLIC FUNCTION FSetRestartDir LIB "lcomstf.dll" (ByVal szDir$) AS INTEGER
  659. DECLARE PUBLIC FUNCTION FRestartListEmpty LIB "lcomstf.dll" () AS INTEGER
  660. DECLARE PUBLIC FUNCTION FExitExecRestart LIB "lcomstf.dll" () AS INTEGER
  661.  
  662.  
  663.  
  664. DECLARE PUBLIC FUNCTION DriveType LIB "mscuistf.dll" (ByVal drivetype%) As INTEGER
  665. DECLARE PUBLIC FUNCTION RegisterFunction LIB "mscuistf.dll"  (ByVal sess& ,ByVal modname$, ByVal fname$) AS INTEGER
  666. DECLARE PUBLIC FUNCTION NotebookAddDlgPage LIB "mscuistf.dll" (ByVal  hDlg%,_
  667.     ByVal idNotebook%, ByVal  idDlg%, ByVal lpszDllName$, ByVal lpszDlgProc$,_
  668.     ByVal lpszTab$) AS INTEGER
  669. DECLARE PUBLIC FUNCTION FNotebookPageView LIB "mscuistf.dll" (ByVal hDlg%,_
  670.               ByVal idNotebook%, ByVal  idDlg%, ByVal fShowPage%) AS INTEGER
  671. DECLARE PUBLIC FUNCTION FNotebookTurnToPage LIB "mscuistf.dll" (ByVal hDlg%,ByVal idNotebook%,ByVal id%) AS INTEGER
  672. DECLARE PUBLIC FUNCTION NotebookGetPageHwnd LIB "mscuistf.dll" (ByVal hDlg%,ByVal idNotebook%,ByVal idPage%) AS INTEGER
  673. DECLARE PUBLIC SUB      LCBResetContent LIB "mscuistf.dll" (ByVal hDlg%)
  674. DECLARE PUBLIC SUB      LCBSetRedraw LIB "mscuistf.dll" (ByVal hDlg%, ByVal fRedraw%)
  675. DECLARE PUBLIC FUNCTION LCBGetCount LIB "mscuistf.dll" (ByVal hDlg%) AS INTEGER
  676. DECLARE PUBLIC FUNCTION LCBAddItem LIB "mscuistf.dll" (ByVal hDlg%, ByVal item$) AS INTEGER
  677. DECLARE PUBLIC FUNCTION LCBReplaceItem LIB "mscuistf.dll" (ByVal hDlg%, ByVal index%, ByVal itemnum%, ByVal item$) AS INTEGER
  678. DECLARE PUBLIC FUNCTION LCBGetItem LIB "mscuistf.dll" (ByVal hDlg%, ByVal index%, ByVal itemnum%, ByVal item$, ByVal itemmax%) AS INTEGER
  679. DECLARE PUBLIC FUNCTION LCBToggleItem LIB "mscuistf.dll" (ByVal hDlg%, ByVal index%) AS INTEGER
  680. DECLARE PUBLIC SUB      LCBSetSel LIB "mscuistf.dll" (ByVal hDlg%, ByVal index%) 
  681. DECLARE PUBLIC SUB      LCBSetTabs LIB "mscuistf.dll" (ByVal hDlg%, ByVal t1%,ByVal t2%,ByVal t3%,ByVal t4%) 
  682. DECLARE PUBLIC FUNCTION FGetDriveFreeSpaceList LIB "mscuistf.dll" (ByVal szSymbol$) AS INTEGER
  683. DECLARE PUBLIC FUNCTION FGetGroupName LIB "mscuistf.dll" (ByVal szGroupFileName$, ByVal szBuf$,ByVal cbBuf%) AS INTEGER  
  684.  
  685.  
  686.  
  687. DECLARE PUBLIC SUB      ReadInfFile (szFile$)
  688. DECLARE PUBLIC SUB      MakeListFromSectionKeys (szSymbol$, szSect$)
  689. DECLARE PUBLIC SUB      MakeListFromSectionDate (szSym$, szSect$)
  690. DECLARE PUBLIC SUB      MakeListFromSectionFilename (szSym$, szSect$)
  691. DECLARE PUBLIC SUB      MakeListFromSectionSize (szSym$, szSect$)
  692. DECLARE PUBLIC SUB      MakeListFromSectionVersion (szSym$, szSect$)
  693. DECLARE PUBLIC FUNCTION SetSilentMode (mode%) AS INTEGER
  694. DECLARE PUBLIC FUNCTION SetBeepingMode (mode%) AS INTEGER
  695. DECLARE PUBLIC FUNCTION GetSectionKeyDate (szSect$, szKey$) AS STRING
  696. DECLARE PUBLIC FUNCTION GetSectionKeyFilename (szSect$, szKey$) AS STRING
  697. DECLARE PUBLIC FUNCTION GetSectionKeySize (szSect$, szKey$) AS LONG
  698. DECLARE PUBLIC FUNCTION GetSectionKeyVersion (szSect$, szKey$) AS STRING
  699. DECLARE PUBLIC SUB      RemoveDir (szDir$, cmo%)
  700. DECLARE PUBLIC SUB      DumpCopyList (szFile$)
  701. DECLARE PUBLIC SUB      ClearCopyList
  702. DECLARE PUBLIC FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) AS LONG
  703. DECLARE PUBLIC SUB      CopyFilesInCopyList
  704. DECLARE PUBLIC SUB      AddSectionFilesToCopyList (szSect$, szSrc$, szDest$)
  705. DECLARE PUBLIC SUB      AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$)
  706. DECLARE PUBLIC SUB      AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&)
  707. DECLARE PUBLIC SUB      AddBlankToBillboardList (lTicks&)
  708. DECLARE PUBLIC SUB      ClearBillboardList
  709. DECLARE PUBLIC SUB      SetCopyGaugePosition (x%, y%)
  710. DECLARE PUBLIC SUB      SetRestartDir(szDir$)
  711. DECLARE PUBLIC FUNCTION RestartListEmpty AS INTEGER
  712. DECLARE PUBLIC FUNCTION ExitExecRestart AS INTEGER
  713.  
  714.  
  715.  
  716. DECLARE PUBLIC FUNCTION GetAbsPathFromIni(szFile$,szSect$,szKey$,nullflag%,invalidpathflag%) AS STRING
  717. DECLARE PUBLIC FUNCTION MakePath (szDir$, szFile$) AS STRING
  718. DECLARE PUBLIC SUB      ShowPathError (nMsg%, nDescription%, szPath$)
  719. DECLARE PUBLIC SUB      ShowPathErrorNoDlgExit (nMsg%, nDescription%, szPath$)
  720. DECLARE PUBLIC FUNCTION IsPathWritable (szPath$) AS INTEGER
  721. DECLARE PUBLIC FUNCTION ValidatePath (szPath$) AS INTEGER
  722. DECLARE PUBLIC FUNCTION RegisterCallback (ReturnStr$, FuncName$) AS INTEGER
  723. DECLARE PUBLIC FUNCTION PopupModalDlg (Dlg%, HelpID&) AS STRING
  724. DECLARE PUBLIC FUNCTION PopupModelessDlg (Dlg%, HelpID&) AS STRING
  725. DECLARE PUBLIC FUNCTION SelectDriveCombo (ComboID$, path$) AS INTEGER
  726. DECLARE PUBLIC FUNCTION CheckForSpace (dlgId%) AS INTEGER
  727. DECLARE PUBLIC SUB      QUIT
  728. DECLARE PUBLIC FUNCTION Lot_WriteToRiFile (ripath$) AS INTEGER
  729. DECLARE PUBLIC FUNCTION Lot_ReadDefaultsfromRi (default_ripath$) AS INTEGER
  730. DECLARE PUBLIC FUNCTION Lot_TrimEndSlash (path$) AS STRING
  731. DECLARE PUBLIC FUNCTION Lot_AreShareToolsSupported () AS INTEGER
  732. DECLARE PUBLIC FUNCTION Lot_CallSharedTool (func$) AS INTEGER
  733. DECLARE PUBLIC FUNCTION GetNotesPathfromLotusIni() AS STRING
  734. DECLARE PUBLIC FUNCTION IsNotesInPath() AS INTEGER
  735. DECLARE PUBLIC FUNCTION IsShareInAUTOEXEC() AS INTEGER
  736. DECLARE PUBLIC FUNCTION ModifyAutoexec(modflag%,directmod%,backup$) AS STRING
  737. DECLARE PUBLIC FUNCTION GetBootDrive() AS STRING
  738. DECLARE PUBLIC FUNCTION Lot_GetLotusNotesDataPath() AS STRING
  739. DECLARE PUBLIC FUNCTION Lot_GetORACLEHomePath() AS STRING
  740. DECLARE PUBLIC FUNCTION Lot_GetLotusNotesPrgPath() AS STRING
  741.  
  742. DECLARE PUBLIC SUB      DL_SetOraclePath
  743. DECLARE PUBLIC SUB      DL_SetNotesDataPath
  744. DECLARE PUBLIC FUNCTION TrimNetlotusapp (ByVal path$) AS STRING
  745.  
  746.  
  747.  
  748.  
  749. DECLARE PUBLIC FUNCTION Lot_GetLocalHardDrive (ProdSize&,DefaultDir$) AS STRING
  750. DECLARE PUBLIC FUNCTION Lot_GetNetHardDrive (ProdSize&,DefaultDir$) AS STRING
  751. DECLARE PUBLIC FUNCTION Lot_GetAllHardDrive(ProdSize&,DefaultDir$) AS STRING
  752. DECLARE PUBLIC FUNCTION Lot_Dir  (szDir$) AS STRING
  753. DECLARE PUBLIC FUNCTION Lot_GetChapterFromKeyword (szKeyword$) AS STRING
  754. DECLARE PUBLIC FUNCTION Lot_CallProductFunctions (func_name$, BYVAL direction$, always%, back$, parms$) AS STRING
  755. DECLARE PUBLIC FUNCTION Lot_CallOneProductFunction (prodno%, func_name$, BYVAL direction$, always%, parms$) AS STRING
  756. DECLARE PUBLIC FUNCTION Lot_CheckPath (path$) AS INTEGER
  757. DECLARE PUBLIC FUNCTION Lot_GetInfSectionSize (szSect$)  AS LONG
  758. DECLARE PUBLIC SUB      Lot_RemoveSectionFilesFromCopyList (szSect$)
  759. DECLARE PUBLIC SUB      Lot_RemoveSectionKeyFileFromCopyList (szSect$, szKey$)
  760. DECLARE PUBLIC FUNCTION Lot_SetDateOfFile (szFile$, szDate$) AS INTEGER
  761. DECLARE PUBLIC FUNCTION Lot_GetFirst (szChapt$, nFlag%) AS STRING
  762. DECLARE PUBLIC FUNCTION Lot_GetNext () AS STRING
  763. DECLARE PUBLIC FUNCTION Lot_GetNthFieldFromIniString (szLine$, iField%, sp$) AS STRING
  764. DECLARE PUBLIC FUNCTION Lot_AddPagetoNotebook (hDlg%,  Notebookid%, Dlgid%,Tabstring$) AS INTEGER
  765. DECLARE PUBLIC FUNCTION Lot_NotebookPageView (hDlg%,  Notebookid%, Dlgid%, fShowPage%) AS INTEGER
  766. DECLARE PUBLIC SUB      Lot_TurnToPage (hDlg%,Notebookid%, pageid%) 
  767. DECLARE PUBLIC FUNCTION Lot_GetPagehandle  (hDlg%,Notebookid%,Pageid%) AS INTEGER
  768. DECLARE PUBLIC SUB      Lot_LCBResetContent     (hDlg%)
  769. DECLARE PUBLIC SUB      Lot_LCBSetRedraw        (hDlg%, fRedraw%)
  770. DECLARE PUBLIC FUNCTION Lot_LCBGetCount    (hDlg%) AS INTEGER
  771. DECLARE PUBLIC FUNCTION Lot_LCBAddItem     (hDlg%, item$) AS INTEGER
  772. DECLARE PUBLIC FUNCTION Lot_LCBReplaceItem (hDlg%, index%, itemnum%, item$) AS INTEGER
  773. DECLARE PUBLIC FUNCTION Lot_LCBGetItem     (hDlg%, index%, itemnum%) AS STRING
  774. DECLARE PUBLIC FUNCTION Lot_LCBToggleItem  (hDlg%, index%) AS INTEGER
  775. DECLARE PUBLIC SUB      Lot_LCBSetSel           (hDlg%, index%)
  776. DECLARE PUBLIC SUB      Lot_LCBSetTabs           (hDlg%, t1%,t2%,t3%,t4%)
  777. DECLARE PUBLIC FUNCTION Lot_GetFirstChild (szChapt$, nFlag%) AS STRING
  778. DECLARE PUBLIC FUNCTION Lot_GetChapterValStr (szChapter$, nField%) AS STRING  
  779. DECLARE PUBLIC FUNCTION Lot_GetChapterValInt (szChapter$,nField%) AS INTEGER  
  780. DECLARE PUBLIC FUNCTION Lot_GetNextSibling (szChapter$,nField%) AS STRING
  781. DECLARE PUBLIC FUNCTION Lot_GetNextChild () AS STRING
  782. DECLARE PUBLIC FUNCTION Lot_GetInfChapterSize (szChapter$)  AS LONG
  783. DECLARE PUBLIC SUB      Lot_ToggleChapterFilesInCopyList (szChapter$)  
  784. DECLARE PUBLIC FUNCTION Lot_SetChapterFilesInCopyListInOrOut (szChapter$, InOrOut%)  AS INTEGER
  785. DECLARE PUBLIC SUB      Lot_InitializeCopyList (chpt$, nField%) 
  786. DECLARE PUBLIC SUB      Lot_RefreshDestination (symbol$) 
  787. DECLARE PUBLIC SUB      Lot_GetDriveFreeSpaceList (szSymbol$)
  788. DECLARE PUBLIC FUNCTION Lot_GetSharedToolsSize() AS INTEGER
  789. DECLARE PUBLIC FUNCTION Lot_MakeSizeString (size AS LONG) AS STRING
  790. DECLARE PUBLIC FUNCTION Lot_ExtractDriveLetter (destdir$) AS STRING
  791. DECLARE PUBLIC FUNCTION Lot_ExtractDirectory (destdir$) AS STRING
  792. DECLARE PUBLIC FUNCTION Lot_GetGroupName ( szGroupFileName$) AS STRING  
  793. DECLARE PUBLIC FUNCTION Lot_IsTheFeatureInstalled(s$) AS INTEGER
  794. DECLARE PUBLIC FUNCTION Lot_WhereIsFeature(prodno%, featureId$, filetolookfor$) AS STRING
  795. DECLARE PUBLIC SUB Lot_InitializeWinWinsysSym () 
  796. DECLARE PUBLIC SUB Lot_InitializeEXTRA ()
  797. DECLARE PUBLIC FUNCTION Lot_IsDestVerNewerOrEqual(DestinationPath$,SourceVer1&,SourceVer2&,SourceVer3&,SourceVer4&) AS INTEGER
  798.  
  799.  
  800.  
  801. DECLARE PUBLIC SUB Reg_RegisterProductNames(Acronym$,Full_Name$)
  802. DECLARE PUBLIC SUB Reg_SetSupportedInstallTypes(ProdNo%,Complete%,Custom%,Laptop%) 
  803. DECLARE PUBLIC SUB Reg_SetSelectedInstallType(ProdNo%,TypeSelected$) 
  804. DECLARE PUBLIC SUB Reg_SetProdSizes(ProdNo%,FullSize&,MinSize&) 
  805. DECLARE PUBLIC SUB Reg_SetUIInOrOut(ProdNo%,Flag%) 
  806. DECLARE PUBLIC SUB Reg_SetAllowUserToPickInSuite(ProdNo%,Flag%) 
  807. DECLARE PUBLIC SUB Reg_SetShareFlags(ProdNo%,Share%,DLens%,SQL%,Paradox%)
  808. DECLARE PUBLIC SUB Reg_SetCDOption(ProdNo%,Inst%,CDOptStr$)
  809. DECLARE PUBLIC SUB Reg_SetCDOptionSelected(ProdNo%,Inst%,Selection%)
  810. DECLARE PUBLIC SUB Reg_ReSetCDOptionSelected(ProdNo%,Inst%,Selection%)
  811. DECLARE PUBLIC SUB Reg_ReSetCDOptionSelectedToDefault(ProdNo%,Inst%)
  812. DECLARE PUBLIC SUB Reg_ReSetAllCDOptsSelToDefaults(ProdNo%)
  813. DECLARE PUBLIC SUB Reg_SetNodeOption(ProdNo%,Inst%,NodeOptStr$) 
  814. DECLARE PUBLIC SUB Reg_SetNodeOptionSelected(ProdNo%,Inst%,Selection%)
  815. DECLARE PUBLIC SUB Reg_ReSetNodeOptionSelected(ProdNo%,Inst%,Selection%)
  816. DECLARE PUBLIC SUB Reg_ReSetNodeOptionSelectedToDefault(ProdNo%,Inst%)
  817. DECLARE PUBLIC SUB Reg_ReSetAllNodeOptsSelToDefaults(ProdNo%)
  818. DECLARE PUBLIC SUB Reg_SetSrvSupport(ProdNo%,SrvFlag%) 
  819. DECLARE PUBLIC SUB Reg_SetDistSupport(ProdNo%,DistFlag%) 
  820. DECLARE PUBLIC SUB Reg_SetLicenseSupport(ProdNo%,LicFlag%) 
  821. DECLARE PUBLIC SUB Reg_SetLicenseSelected(ProdNo%,LicFlag%) 
  822. DECLARE PUBLIC SUB Reg_SetCountDirectory(ProdNo%,CountDir$) 
  823. DECLARE PUBLIC SUB Reg_SetATMSupport(ProdNo%,ATMFlag%) 
  824. DECLARE PUBLIC SUB Reg_SetProgManagerGroup(ProdNo%,GroupName$) 
  825. DECLARE PUBLIC SUB Reg_SetSystemFileSize(ProdNo%,Size&)
  826. DECLARE PUBLIC SUB Reg_SetBillboardNumber(ProdNo%,BBNum%) 
  827. DECLARE PUBLIC SUB Reg_SetSHAREEXESupport(ProdNo%,Flag%) 
  828. DECLARE PUBLIC SUB Reg_SetNotesSupport(ProdNo%,Flag%) 
  829. DECLARE PUBLIC SUB Reg_SetPreviousVersion(ProdNo%,prev$) 
  830.  
  831.  
  832.  
  833. DECLARE PUBLIC FUNCTION Reg_GetNumberOfProducts() AS INTEGER
  834. DECLARE PUBLIC FUNCTION Reg_GetProductNo(ProdAcronym$)  AS INTEGER 
  835. DECLARE PUBLIC FUNCTION Reg_GetProductAcronym(ProdNo%)  AS STRING 
  836. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForFullInstall(ProdNo%) AS INTEGER
  837. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForCustInstall(ProdNo%) AS INTEGER
  838. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForMinInstall(ProdNo%) AS INTEGER
  839. DECLARE PUBLIC FUNCTION Reg_GetProdSelectedInstallType(ProdNo%) AS STRING
  840. DECLARE PUBLIC FUNCTION Reg_GetProdFullSize(ProdNo%) AS LONG
  841. DECLARE PUBLIC FUNCTION Reg_GetProdMinSize(ProdNo%) AS LONG
  842. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForShare(ProdNo%) AS INTEGER
  843. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForDataLens(ProdNo%) AS INTEGER
  844. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForSQL(ProdNo%) AS INTEGER
  845. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForParadox(ProdNo%) AS INTEGER
  846. DECLARE PUBLIC FUNCTION Reg_GetCDOptionStr(ProdNo%,Inst%) AS STRING
  847. DECLARE PUBLIC FUNCTION Reg_GetNodeOptionStr(ProdNo%,Inst%) AS STRING
  848. DECLARE PUBLIC FUNCTION Reg_GetNumOfCDOptions(ProdNo%) AS INTEGER
  849. DECLARE PUBLIC FUNCTION Reg_GetNumOfNodeOptions(ProdNo%) AS INTEGER
  850. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForSrv(ProdNo%) AS INTEGER
  851. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForDist(ProdNo%) AS INTEGER
  852. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForLicense(ProdNo%) AS INTEGER
  853. DECLARE PUBLIC FUNCTION Reg_IsLicenseSelected(ProdNo%) AS INTEGER
  854. DECLARE PUBLIC FUNCTION Reg_GetCountDirectory(ProdNo%)   AS STRING
  855. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForATM(ProdNo%) AS INTEGER
  856. DECLARE PUBLIC FUNCTION Reg_GetDirSymbolList(ProdNo%)   AS STRING
  857. DECLARE PUBLIC FUNCTION Reg_GetProgManagerGroupName(ProdNo%)   AS STRING
  858. DECLARE PUBLIC FUNCTION Reg_GetNumOfDirectories(ProdNo%) AS INTEGER
  859. DECLARE PUBLIC FUNCTION Reg_GetSystemFileSize(ProdNo%) AS LONG
  860. DECLARE PUBLIC FUNCTION Reg_IsCDOptionSelected(ProdNo%,Inst%) AS STRING
  861. DECLARE PUBLIC FUNCTION Reg_IsCDOptionDefaultSelected(ProdNo%,Inst%) AS STRING
  862. DECLARE PUBLIC FUNCTION Reg_IsNodeOptionSelected(ProdNo%,Inst%) AS STRING
  863. DECLARE PUBLIC FUNCTION Reg_IsNodeOptionDefaultSelected(ProdNo%,Inst%) AS STRING
  864. DECLARE PUBLIC FUNCTION Reg_GetBillboardNumber(ProdNo%)   AS INTEGER
  865. DECLARE PUBLIC FUNCTION Reg_GetProductName(ProdNo%)  AS STRING 
  866. DECLARE PUBLIC FUNCTION Reg_GetUIInOrOut(ProdNo%)  AS INTEGER
  867. DECLARE PUBLIC FUNCTION Reg_GetAllowUserToPickInSuite(ProdNo%)  AS INTEGER
  868. DECLARE PUBLIC FUNCTION Reg_GetSHAREEXESupport(ProdNo%) AS INTEGER
  869. DECLARE PUBLIC FUNCTION Reg_GetNotesSupport(ProdNo%) AS INTEGER
  870. DECLARE PUBLIC FUNCTION Reg_GetPreviousVersion(ProdNo%)   AS STRING
  871.  
  872. DECLARE PUBLIC FUNCTION Lot_GetCurrentProduct() AS INTEGER
  873. DECLARE PUBLIC SUB      Lot_SetCurrentProduct(ProdNo%) 
  874. DECLARE PUBLIC FUNCTION Lot_GetInstallDir() AS STRING
  875. DECLARE PUBLIC FUNCTION Lot_GetTheRealProdDir(prodno%) AS STRING
  876. DECLARE PUBLIC FUNCTION Lot_Readserialnumber () AS INTEGER
  877. DECLARE PUBLIC FUNCTION Lot_SaveFeaturesInstaledInInstallIni() AS INTEGER
  878. DECLARE PUBLIC FUNCTION Lot_SaveTheNodeOptionsInInstallIni() AS INTEGER
  879. DECLARE PUBLIC FUNCTION Lot_IsTheNodeOptionsAvailToNode(prodNum%,OptName$) AS INTEGER
  880. DECLARE PUBLIC FUNCTION Lot_IsAnyNodeOptAvailToNode()AS INTEGER
  881. DECLARE PUBLIC FUNCTION Lot_AreNodeOptAvailToNodeForProd(prodNum%) AS INTEGER
  882. DECLARE PUBLIC FUNCTION Lot_GetNumOfNodeOptAvailToNodeForProd(prodNum%) AS INTEGER
  883. DECLARE PUBLIC FUNCTION Lot_AreAnyNodeOptAvailToSrv() AS INTEGER
  884.  
  885. DECLARE PUBLIC FUNCTION Lot_SaveTheCDOptionsInInstallIni() AS INTEGER
  886. DECLARE PUBLIC FUNCTION Lot_IsTheCDOptionsAvailToNode(prodNum%,OptName$) AS INTEGER
  887. DECLARE PUBLIC FUNCTION Lot_IsAnyCDOptAvailToNode()AS INTEGER
  888. DECLARE PUBLIC FUNCTION Lot_AreCDOptAvailToNodeForProd(prodNum%) AS INTEGER
  889. DECLARE PUBLIC FUNCTION Lot_GetNumOfCDOptAvailToNodeForProd(prodNum%) AS INTEGER
  890. DECLARE PUBLIC FUNCTION Lot_AreAnyCDOptAvailToSrv() AS INTEGER
  891.  
  892.  
  893.  
  894.  
  895. DECLARE SUB DisplayWhenSpaceIsTight(szCost$,szNeed$)
  896. DECLARE FUNCTION Lot_GetLastFeatureNumber() AS INTEGER
  897. DECLARE FUNCTION Lot_GetLastNodeOptNumber(s$) AS INTEGER
  898. DECLARE FUNCTION Lot_GetLastCDOptNumber(s$) AS INTEGER
  899.  
  900.  
  901.  
  902. PUBLIC gEndStatementEncountered% 
  903.  
  904.  
  905.  
  906. SUB INITIALIZE
  907.  
  908.  
  909.  
  910.  gCurrNumOfProds% = 0
  911.  gCurrentProduct% = 1
  912. END SUB
  913.  
  914. PUBLIC FUNCTION Lot_GetSharedToolsSize() AS INTEGER
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.    DIM CurrChpt$, SharedID$, ShareSize&
  922.  
  923.    CurrChpt$ = Lot_GetFirst("", F_SHARE+F_INOROUT) 
  924.    WHILE (CurrChpt$ <> "")
  925.       SharedID$ = Lot_GetChapterValStr(CurrChpt$, F_SHARE)   
  926.       IF SharedID$="IVCPROGRAM" OR _
  927.          SharedID$="CONTAINERFILEPROGRAM" OR _
  928.          SharedID$="DATALENSPROGRAM" OR _
  929.          SharedID$="DATALENSDATA" OR _
  930.          SharedID$="DIALOGEDITORPROGRAM" OR _
  931.          SharedID$="DESKTOP" OR _
  932.          SharedID$="DOCUMENTFILEFILTERSPROGRAM" OR _
  933.          SharedID$="DOCUMENTFILEFILTERSFILTER" OR _
  934.          SharedID$="GRAMMARCHECKERPROGRAM" OR _
  935.          SharedID$="GRAMMARCHECKERDATA" OR _
  936.          SharedID$="GRAPHICFILEFILTERSPROGRAM" OR _
  937.          SharedID$="HYPHENATIONPROGRAM" OR _
  938.          SharedID$="HYPHENATIONDATA" OR _
  939.          SharedID$="ICONPALETTEPROGRAM" OR _
  940.          SharedID$="INFOBOXPROGRAM" OR _
  941.          SharedID$="SCRIPTPROGRAM" OR _
  942.          SharedID$="MULTIMEDIAPROGRAM" OR _
  943.          SharedID$="MULTIMEDIADATA" OR _
  944.          SharedID$="SPELLCHECKERPROGRAM" OR _
  945.          SharedID$="SPELLCHECKERDATA" OR _
  946.          SharedID$="SPELLCHECKERUSER" OR _
  947.          SharedID$="STATUSBARPROGRAM" OR _
  948.          SharedID$="THESAURUSPROGRAM" OR _
  949.          SharedID$="THESAURUSDATA" OR _
  950.          SharedID$="TOOLSPROGRAM" OR _
  951.          SharedID$="TOOLSDATA" OR _
  952.          SharedID$="USERNAMESERVICESPROGRAM" OR _
  953.          SharedID$="FILTERS" OR _
  954.          SharedID$="EXCELFLT" THEN
  955.          
  956.             ShareSize& = ShareSize&+Lot_GetInfChapterSize(CurrChpt$)
  957.  
  958.       END IF
  959.  
  960.       CurrChpt$ = Lot_GetNext() 
  961.  
  962.    WEND
  963.  
  964.    Lot_GetSharedToolsSize = INT(ShareSize&/1024)
  965.  
  966.  
  967.  
  968.  
  969.  
  970. END FUNCTION
  971.  
  972.  
  973.  
  974. PUBLIC FUNCTION GetAbsPathFromIni(szFile$,szSect$,szKey$,nullflag%,invalidpathflag%) AS STRING
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.   DIM rstring$, rv%, errText$
  987.  
  988.    GetAbsPathFromIni = ""
  989.    rstring$ = GetIniKeyString(szFile$, szSect$, szKey$)
  990.    If rstring$ <> "" Then
  991.  
  992.       rv% = Lot_CleanPath(rstring$)
  993.  
  994.       
  995.       errText$ =  LEFT$(szFile$, INSTR(szFile$, CHR$(0)))  
  996.       if rv% <> 0 Then
  997.          GetAbsPathFromIni = rstring$
  998.       elseif invalidpathflag% <> FALSE then
  999.  
  1000.          ErrorMsg SID_ERR_GETINIKEYSTRING, errText$
  1001.          ERROR STFQUIT
  1002.  
  1003.       end if 
  1004.  
  1005.    elseif nullflag% <> FALSE then
  1006.  
  1007.       ErrorMsg SID_ERR_GETINIKEYSTRING, errText$
  1008.       ERROR STFQUIT
  1009.  
  1010.    else
  1011.       GetAbsPathFromIni = ""
  1012.    end if 
  1013.  
  1014. END FUNCTION
  1015.  
  1016. PUBLIC FUNCTION MakePath (szDir$, szFile$) AS STRING
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.    DIM sz$
  1027.  
  1028.    IF szDir$ = "" THEN
  1029.       sz$ = szFile$
  1030.    ELSEIF szFile$ = "" THEN
  1031.       sz$ = szDir$
  1032.    ELSEIF LEN(szFile$) > 12 THEN
  1033.       IF LEN(szFile$) = 13 AND RIGHT$(szFile$,1) = "\" THEN
  1034.       sz$ = szDir$ + szFile$
  1035.       ELSE    
  1036.       sz$ = ""
  1037.       END IF
  1038.    ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  1039.       sz$ = szDir$ + szFile$
  1040.    ELSE
  1041.       sz$ = szDir$ + "\" + szFile$
  1042.    END IF
  1043.  
  1044.    IF sz$ <> "" THEN
  1045.       MakePath = LCASE$(sz$)
  1046.    ELSE
  1047.       MakePath = sz$
  1048.    END IF
  1049.  
  1050.     
  1051.  
  1052. END FUNCTION
  1053.  
  1054. PUBLIC FUNCTION Lot_MakeSizeString(size&) AS STRING
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.    Lot_MakeSizeString = STR$(size&) + gStrK$
  1062. END FUNCTION
  1063.  
  1064.  
  1065. PUBLIC FUNCTION Lot_ExtractDriveLetter(destdir$) AS STRING
  1066.  
  1067.  
  1068.  
  1069.  
  1070.  
  1071.  
  1072.   Lot_ExtractDriveLetter = LCASE$(MID$(destdir$, 1, 1))
  1073. END FUNCTION
  1074.  
  1075.  
  1076. PUBLIC FUNCTION Lot_ExtractDirectory(destdir$) AS STRING
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.   Lot_ExtractDirectory = LCASE$(MID$(destdir$, 3))
  1084. END FUNCTION
  1085.  
  1086.  
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104. PUBLIC SUB ShowPathError (nMsg%, nDescription%, szPath$)
  1105.    DIM sz$
  1106.  
  1107.    sz$ = CHR$(10) + CHR$(10) + "     " + szPath$
  1108.  
  1109.    IF nDescription% <> 0 THEN
  1110.       sz$ = sz$ + CHR$(10) + CHR$(10) + LdString(nDescription%)
  1111.    END IF
  1112.  
  1113.    ErrorMsg nMsg%, sz$
  1114.  
  1115. END SUB
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135. PUBLIC SUB ShowPathErrorNoDlgExit (nMsg%, nDescription%, szPath$)
  1136.  
  1137.    ShowPathError nMsg%, nDescription%, szPath$
  1138.    SetListItem "__LASTSTATUS", 1, "Q"
  1139.  
  1140. END SUB
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159. PUBLIC FUNCTION IsPathWritable (szPath$) AS INTEGER
  1160.  
  1161.    DIM sz$, cb%, i%, j%
  1162.  
  1163.    
  1164.    IsPathWritable = 0
  1165.    sz$ = szPath$
  1166.    IF Lot_CheckPath(sz$) <> FALSE THEN
  1167.  
  1168.       
  1169.       IF cb% > 3 AND RIGHT$(sz$,1) = "\" THEN
  1170.          cb% = LEN(sz$)
  1171.          sz$ = MID$(sz$,1,(cb%-1))
  1172.       END IF
  1173.  
  1174.       
  1175.       DO
  1176.          
  1177.          IF LEN(sz$) <= 3 OR DoesDirExist(sz$) = 1 THEN
  1178.             IsPathWritable = IsDirWritable(sz$)
  1179.             EXIT DO
  1180.          END IF
  1181.  
  1182.          
  1183.          i% = INSTR(sz$,"\")
  1184.          IF i% = 0 THEN EXIT DO
  1185.          DO
  1186.             j% = INSTR((i%+1),sz$,"\")
  1187.             IF j% = 0 THEN
  1188.                IF i% = 3 THEN
  1189.                   sz$ = MID$(sz$,1,3)        
  1190.                ELSE
  1191.                   sz$ = MID$(sz$,1,(i%-1))   
  1192.                END IF
  1193.                EXIT DO
  1194.             END IF
  1195.             i% = j%
  1196.          LOOP
  1197.       LOOP
  1198.    END IF
  1199.  
  1200. END FUNCTION
  1201.  
  1202.  
  1203.  
  1204.  
  1205.  
  1206.  
  1207.  
  1208.  
  1209.  
  1210.  
  1211.  
  1212.  
  1213.  
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221. PUBLIC FUNCTION ValidatePath (szPath$) AS INTEGER
  1222.  
  1223.    DIM cch%, difflen%
  1224.  
  1225.    ValidatePath = FALSE
  1226.    cch% = LEN(szPath$)
  1227.    difflen% = cch% + CINT(GetSymbolValue(SYM_DOSMAXPATHDIFF$))
  1228.  
  1229.    
  1230.    IF (MID$(szPath$,2,1) = ":" AND IsDriveValid(szPath$) = FALSE) THEN
  1231.       ShowPathError SID_DRV_NOTEXIST, 0, MID$(szPath$,1,2)
  1232.  
  1233.    
  1234.    ELSEIF (cch% = 2) OR (cch% = 3 AND MID$(szPath$,3,1) = "\") THEN
  1235.       ShowPathError SID_ERR_DIRSYNTAX, SID_ERR_DIRROOTDESCR, szPath$
  1236.  
  1237.    
  1238.    ELSEIF Lot_CheckPath(szPath$) = FALSE THEN
  1239.       ShowPathError SID_ERR_DIRSYNTAX, SID_ERR_DIRSYNTAXDESCR, szPath$
  1240.  
  1241.    
  1242.    ELSEIF IsPathWritable(szPath$) = FALSE THEN
  1243.       ShowPathError SID_DIR_READONLY, 0, szPath$
  1244.  
  1245.    
  1246.    ELSEIF difflen% > 65 THEN
  1247.       
  1248.       ShowPathError SID_ERR_PATHLEN, SID_ERR_PATHLEN_DESCR, _
  1249.                     STR$(65 - CINT(GetSymbolValue(SYM_DOSMAXPATHDIFF$)))+LdString(SID_ERR_PATHLEN_CHARS)
  1250.  
  1251.    
  1252.    ELSE
  1253.       ValidatePath = TRUE
  1254.    END IF 
  1255.  
  1256. END FUNCTION
  1257.  
  1258. PUBLIC FUNCTION Lot_Dir  (szDir$) AS STRING
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265.     DIM DirRet$
  1266.  
  1267.     DirRet$ = Dir$(szDir$)
  1268.     Lot_Dir = DirRet$
  1269. END FUNCTION
  1270.  
  1271. PUBLIC FUNCTION Lot_GetLocalHardDrive(ProdSize&,DefaultDir$) AS STRING
  1272.  
  1273.  
  1274.  
  1275.  
  1276.  
  1277.  
  1278.  
  1279.  
  1280.    DIM Length%, count%, lDrive$, SpaceAvail&
  1281.  
  1282.    Lot_GetLocalHardDrive = ""
  1283.    GetLocalHardDrivesList SYM_LOCALHARDDRIVES$
  1284.    Length% = GetListLength(SYM_LOCALHARDDRIVES$)
  1285.    FOR count% = 1 TO Length%
  1286.       lDrive$     = GetListItem(SYM_LOCALHARDDRIVES$, count%)
  1287.       SpaceAvail& = GetFreeSpaceForDrive(lDrive$)
  1288.       lDrive$     = lDrive$ + ":\" + DefaultDir$
  1289.       IF SpaceAvail& > ProdSize& AND IsDirWritable(lDrive$) THEN
  1290.          Lot_GetLocalHardDrive = LCASE$(lDrive$)
  1291.          EXIT FUNCTION
  1292.       END IF
  1293.    NEXT
  1294.  
  1295. END FUNCTION
  1296.  
  1297. PUBLIC FUNCTION Lot_GetNetHardDrive(ProdSize&,DefaultDir$) AS STRING
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.    DIM Length%, count%, lDrive$, SpaceAvail&
  1307.  
  1308.    Lot_GetNetHardDrive = ""
  1309.    GetNetworkDrivesList SYM_NETHARDDRIVES$
  1310.    Length% = GetListLength(SYM_NETHARDDRIVES$)
  1311.    FOR count% = 1 TO Length%
  1312.       lDrive$     = GetListItem(SYM_NETHARDDRIVES$, count%)
  1313.       SpaceAvail& = GetFreeSpaceForDrive(lDrive$)
  1314.       lDrive$     = lDrive$ + ":\" + DefaultDir$
  1315.       IF SpaceAvail& > ProdSize& AND IsDirWritable(lDrive$) THEN
  1316.          Lot_GetNetHardDrive = LCASE$(lDrive$)
  1317.          EXIT FUNCTION
  1318.       END IF
  1319.    NEXT
  1320.  
  1321. END FUNCTION
  1322.  
  1323. PUBLIC FUNCTION Lot_GetAllHardDrive(ProdSize&,DefaultDir$) AS STRING
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333.  
  1334.    DIM   drv$
  1335.  
  1336.    drv$ = Lot_GetLocalHardDrive(ProdSize&, DefaultDir$)
  1337.    IF drv$ <> "" THEN
  1338.       Lot_GetAllHardDrive = drv$
  1339.    ELSE
  1340.       Lot_GetAllHardDrive = Lot_GetNetHardDrive(ProdSize&, DefaultDir$)
  1341.    END IF
  1342.  
  1343. END FUNCTION
  1344.  
  1345. PUBLIC FUNCTION Lot_GetChapterFromKeyword (szKeyword$) AS STRING
  1346.  
  1347.  
  1348.  
  1349.  
  1350.  
  1351.  
  1352.     DIM g_strbuf$
  1353.  
  1354.     g_strbuf$ = string(256,0)
  1355.     If FGetChapterFromKeyword(szKeyword$, g_strbuf$, 256) = 0 Then
  1356.        Lot_GetChapterFromKeyword = ""
  1357.     Else
  1358.        Lot_GetChapterFromKeyword = LEFT$(g_strbuf$, INSTR(g_strbuf$,CHR$(0))-1)
  1359.     End If
  1360. END FUNCTION
  1361.  
  1362. PUBLIC Lot_CallExec_RC as String
  1363.  
  1364. PUBLIC FUNCTION Lot_CallProductFunctions (func_name$, BYVAL direction$, always%, back$, parms$) AS STRING
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.   DIM n%, i%, lname$, prodcall$, notused%, incr%
  1375.  
  1376.   Lot_CallProductFunctions = ""
  1377.   n% = Reg_GetNumberOfProducts()
  1378.   If direction$ = gBACK Then
  1379.         i% = n%
  1380.         incr% = 1
  1381.   Else
  1382.         i% = 1
  1383.         incr% = -1
  1384.   End If
  1385.   WHILE (i%  >= 1 AND i% <= n%)
  1386.  
  1387.      lname$ = Reg_GetProductAcronym(i%)
  1388.      If lname$ <> "" AND (always% <> FALSE OR Prods(i%).UIInOrOut <> FALSE) Then
  1389.             
  1390.             
  1391.             
  1392.              
  1393.             
  1394.         If parms$ <> "" Then
  1395.            prodcall$ = "Lot_CallExec_RC$  = " & func_name$ & lname$ & "(" & i% & "," & |"| & GetSymbolValue(SYM_NETWORK) & |"| & "," & |"| & direction$ & |"| &  "," & parms$ & ")"
  1396.         Else
  1397.            prodcall$ = "Lot_CallExec_RC$  = " & func_name$ & lname$ & "(" & i% & "," & |"| &  GetSymbolValue(SYM_NETWORK) & |"| & "," & |"| & direction$ & |"| & ")"
  1398.         End If
  1399.          
  1400.             
  1401.             
  1402.             
  1403.             
  1404.             
  1405.             
  1406.             
  1407.             
  1408.  
  1409.           gEndStatementEncountered% = FALSE
  1410.         EXECUTE(|USE "| & lname$ & |" : | & prodcall$)
  1411.  
  1412.           
  1413.           
  1414.         
  1415.           
  1416.  
  1417.           IF gEndStatementEncountered% = TRUE THEN
  1418.               END                                           
  1419.           END IF
  1420.  
  1421.         direction$ = Lot_CallExec_RC$
  1422.         If direction$ = gBACK Then
  1423.            incr% = -1
  1424.         Else
  1425.            incr% = 1
  1426.         End If
  1427.      End If
  1428.  
  1429.      If direction$ = gBACK AND back$ = gALLPRODUCTS then
  1430.            Lot_CallProductFunctions = direction$
  1431.            Exit Function
  1432.      End If
  1433.  
  1434.      i% = i% + incr%
  1435.   WEND
  1436.  
  1437.   Lot_CallProductFunctions = direction$
  1438.  
  1439. END FUNCTION
  1440.  
  1441. PUBLIC FUNCTION Lot_CallOneProductFunction (prodno%, func_name$, BYVAL direction$, always%, parms$) AS STRING
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.   DIM lname$, prodcall$, notused%
  1449.  
  1450.   Lot_CallOneProductFunction = ""
  1451.   lname$ = Reg_GetProductAcronym(prodno%)
  1452.   If lname$ <> "" Then
  1453.      
  1454.      
  1455.      
  1456.      
  1457.      
  1458.      If parms$ <> "" Then
  1459.         prodcall$ = "Lot_CallExec_RC$  = " & func_name$ & lname$ & "(" & prodno% & "," & |"| & GetSymbolValue(SYM_NETWORK) & |"| & "," & |"| & direction$ & |"| & "," & parms$ & ")"
  1460.      Else
  1461.         prodcall$ = "Lot_CallExec_RC$  = " & func_name$ & lname$ & "(" & prodno% & "," & |"| &  GetSymbolValue(SYM_NETWORK) & |"| & "," & |"| & direction$ & |"| & ")"
  1462.      End If
  1463.  
  1464.          
  1465.             
  1466.             
  1467.             
  1468.             
  1469.             
  1470.             
  1471.             
  1472.             
  1473.             
  1474.        gEndStatementEncountered% = FALSE        
  1475.  
  1476.       EXECUTE(|USE "| & lname$ & |" : | & prodcall$)
  1477.     
  1478.  
  1479.        IF gEndStatementEncountered% = TRUE THEN
  1480.               END                                           
  1481.        END IF
  1482.  
  1483.      Lot_CallOneProductFunction = Lot_CallExec_RC$
  1484.  
  1485.  
  1486.   End If
  1487.  
  1488.  
  1489. END FUNCTION
  1490.  
  1491.  
  1492. PUBLIC FUNCTION Lot_CheckPath (path$) AS INTEGER
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.    DIM ldrive$
  1500.  
  1501.    Lot_CheckPath = FALSE
  1502.    IF path$ <> "" THEN
  1503.       ldrive$ = Lot_ExtractDriveLetter(path$)
  1504.        IF IsDriveValid(ldrive$) <> FALSE AND Lot_CleanPath(path$) <> FALSE THEN 
  1505.            Lot_CheckPath = TRUE
  1506.        END IF
  1507.    END IF
  1508.  
  1509. END FUNCTION
  1510.  
  1511. PUBLIC FUNCTION Lot_GetFirst (szChapt$, nFlag%) AS STRING
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.   DIM g_strbuf$, Length%
  1519.  
  1520.   g_strbuf$ = string(256,0)
  1521.   if FGetFirst(szChapt$,g_strbuf$,nFlag%) = 0 then
  1522.         Lot_GetFirst = ""     
  1523.   else
  1524.      Length% = len(g_strbuf$) 
  1525.      Lot_GetFirst = LEFT$ (g_strbuf$, INSTR (g_strbuf$, CHR$(0)) -1)  
  1526.  end if
  1527.  
  1528.  
  1529. END FUNCTION
  1530.  
  1531.  
  1532. PUBLIC FUNCTION Lot_GetNext () AS STRING
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539.       DIM g_strbuf$, Length%
  1540.   
  1541.     g_strbuf$ = string(256,0)
  1542.     if FGetNext(g_strbuf$) = 0 then
  1543.        Lot_GetNext = ""     
  1544.     else
  1545.        Length% = len(g_strbuf$)
  1546.        Lot_GetNext = LEFT$ (g_strbuf$, INSTR (g_strbuf$, CHR$(0)) - 1) 
  1547.      end if
  1548.  
  1549. END FUNCTION
  1550.  
  1551.  
  1552. PUBLIC FUNCTION Lot_SetDateOfFile (szFile$, szDate$) AS INTEGER
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.   if FSetDateOfFile(szFile$,szDate$) = 0 then
  1560.       Lot_SetDateOfFile = 0     
  1561.   else
  1562.      Lot_SetDateOfFile = 1
  1563.   end if
  1564.  
  1565.  
  1566. END FUNCTION
  1567.  
  1568.  
  1569. PUBLIC SUB Lot_RemoveSectionFilesFromCopyList (szSect$) 
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.  
  1577.     IF FRemoveSectionFilesFromCopyList (szSect$) = 0 THEN
  1578.         ErrorMsg SID_ERR_LOT_RSFFCL, ""
  1579.         ERROR STFQUIT
  1580.     END IF
  1581. END SUB
  1582.  
  1583.  
  1584. PUBLIC SUB Lot_RemoveSectionKeyFileFromCopyList (szSect$, szKey$) 
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591.  
  1592.     IF FRemoveSectionKeyFileFromCopyList (szSect$, szKey$) = 0 THEN
  1593.         ErrorMsg SID_ERR_LOT_RSKFFCL, ""
  1594.         ERROR STFQUIT
  1595.     END IF
  1596. END SUB
  1597.  
  1598.  
  1599. PUBLIC FUNCTION Lot_GetInfSectionSize (szSect$)  AS LONG
  1600.  
  1601.  
  1602.  
  1603.  
  1604.  
  1605.  
  1606.     Lot_GetInfSectionSize = LcbGetInfSectionSize(szSect$)
  1607. END FUNCTION
  1608.  
  1609.  
  1610.  
  1611.  
  1612. PUBLIC FUNCTION Lot_GetNthFieldFromIniString (szLine$, iField%, sp$)  AS STRING
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.     DIM szStart$, i%, iNew%
  1620.  
  1621.     IF sp$ = "" THEN
  1622.     sp$ = ","
  1623.     END IF
  1624.     IF iField% < 1 THEN
  1625.         ErrorMsg SID_ERR_LOT_GNFFIS, ""
  1626.         ERROR STFQUIT
  1627.     END IF
  1628.     szStart$ = szLine$
  1629.     IF iField% <> 1 THEN
  1630.         FOR i% = 2 TO iField% STEP 1
  1631.             iNew% = INSTR(szStart$, sp$)
  1632.             IF iNew% = 0 THEN
  1633.                 Lot_GetNthFieldFromIniString = ""
  1634.                 GOTO GNFFIS_END
  1635.             END IF
  1636.             szStart$ = MID$(szStart$, (iNew% + 1),100)
  1637.         NEXT
  1638.     END IF
  1639.  
  1640.     iNew% = INSTR(szStart$, sp$)
  1641.     IF iNew% <> 0 THEN
  1642.         szStart$ = MID$(szStart$, 1, (iNew% - 1))
  1643.     END IF
  1644.  
  1645.     
  1646.     
  1647.     
  1648.      Lot_GetNthFieldFromIniString = LTRIM$(RTRIM$(szStart$))
  1649.  
  1650. GNFFIS_END:
  1651.  
  1652. END FUNCTION
  1653.  
  1654.  
  1655.  
  1656. PUBLIC FUNCTION Lot_AddPagetoNotebook (hDlg%,  Notebookid%,Dlgid%, Tabstring$)   AS INTEGER
  1657.  
  1658.  
  1659.  
  1660.  
  1661.  
  1662.  
  1663.     Lot_AddPagetoNotebook = NotebookAddDlgPage(hDlg%,  Notebookid%,Dlgid%, "mscuistf.dll","FNameOrgDlgProc",Tabstring$) 
  1664.     IF Lot_AddPagetoNotebook = 0 THEN
  1665.        ErrorMsg 0, "Error creating notebook page"
  1666.       ERROR STFQUIT
  1667.     END IF
  1668. END FUNCTION
  1669.  
  1670.  
  1671. PUBLIC FUNCTION Lot_NotebookPageView (hDlg%,  Notebookid%, Dlgid%, fShowPage%) AS INTEGER
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.    Lot_NotebookPageView = FNotebookPageView (hDlg%,  Notebookid%, Dlgid%, fShowPage%)
  1679.    IF Lot_NotebookPageView = 0 THEN
  1680.       ErrorMsg 0, "Error viewing notebook page"
  1681.       ERROR STFQUIT
  1682.    END IF
  1683. END FUNCTION
  1684.  
  1685.  
  1686. PUBLIC SUB Lot_TurnToPage (hDlg%,Notebookid%, pageid%) 
  1687.  
  1688.  
  1689.  
  1690.  
  1691.  
  1692.  
  1693.     IF  FNotebookTurnToPage(hDlg%,Notebookid%, pageid%) <> 1 THEN
  1694.        ErrorMsg 0, "Error turning notebook page"
  1695.       ERROR STFQUIT
  1696.     END IF
  1697. END SUB
  1698.  
  1699.  
  1700. PUBLIC FUNCTION Lot_GetPagehandle  (hDlg%,Notebookid%,Pageid%) AS INTEGER
  1701.  
  1702.  
  1703.  
  1704.  
  1705.  
  1706.  
  1707.     Lot_GetPagehandle = NotebookGetPageHwnd(hDlg%,Notebookid%,Pageid%) 
  1708.     IF Lot_GetPagehandle = 0 THEN
  1709.        ErrorMsg 0, "Error getting the notebook page handle"
  1710.            ERROR STFQUIT
  1711.     END IF
  1712. END FUNCTION
  1713.  
  1714.  
  1715. PUBLIC SUB Lot_LCBResetContent(hDlg%)
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.   LCBResetContent hDlg%
  1723. END SUB
  1724.  
  1725.  
  1726. PUBLIC SUB Lot_LCBSetRedraw (hDlg%, fRedraw%)
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.   LCBSetRedraw hDlg%, fRedraw%
  1734. END SUB
  1735.  
  1736.  
  1737. PUBLIC FUNCTION Lot_LCBGetCount (hDlg%) AS INTEGER
  1738.  
  1739.  
  1740.  
  1741.  
  1742.  
  1743.  
  1744.  
  1745.  
  1746.    Lot_LCBGetCount = LCBGetCount(hDlg%)
  1747.  
  1748. END FUNCTION
  1749.  
  1750.  
  1751. PUBLIC FUNCTION Lot_LCBAddItem (hDlg%, item$) AS INTEGER
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.  
  1758.      DIM rc%
  1759.  
  1760.    rc% = LCBAddItem (hDlg%, item$)
  1761.    If (rc% = 0) Then
  1762.       ErrorMsg 0, "Could not Add Item: "+item$+" to LCB on DLG: "+STR$(hDlg%)
  1763.       ERROR STFQUIT
  1764.    End If
  1765.    Lot_LCBAddItem= rc%
  1766.  
  1767. END FUNCTION
  1768.  
  1769.  
  1770. PUBLIC FUNCTION Lot_LCBReplaceItem (hDlg%, index%, itemnum%, item$) AS INTEGER
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777.    DIM rc%
  1778.  
  1779.    rc% = LCBReplaceItem (hDlg%, index%, itemnum%, item$)
  1780.    Lot_LCBReplaceItem = rc%
  1781.  
  1782. END FUNCTION
  1783.  
  1784.  
  1785. PUBLIC FUNCTION Lot_LCBGetItem (hDlg%, index%, itemnum%) AS STRING
  1786.  
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792. DIM rc%
  1793. DIM szValue As String : szValue = String$(cbSymValMax, 0)
  1794.  
  1795.          rc% = LCBGetItem (hDlg%, index%, itemnum%, szValue$, cbSymValMax)
  1796.          Lot_LCBGetItem = LEFT$( szValue$, INSTR( szValue$, CHR$(0)) -1)
  1797.  
  1798. END FUNCTION
  1799.  
  1800.  
  1801. PUBLIC FUNCTION Lot_LCBToggleItem  (hDlg%, index%) AS INTEGER
  1802.  
  1803.  
  1804.  
  1805.  
  1806.  
  1807.  
  1808.    DIM rc%
  1809.  
  1810.    rc% = LCBToggleItem (hDlg%, index%)
  1811.    Lot_LCBToggleItem = rc%
  1812.  
  1813. END FUNCTION
  1814.  
  1815.  
  1816.  
  1817. PUBLIC SUB Lot_LCBSetSel (hDlg%, index%)
  1818.  
  1819.  
  1820.   LCBSetSel hDlg%, index%
  1821. END SUB
  1822.  
  1823.  
  1824.  
  1825. PUBLIC SUB Lot_LCBSetTabs (hDlg%, t1%, t2%, t3%, t4%)
  1826.  
  1827.  
  1828.   LCBSetTabs hDlg%, t1%, t2%, t3%, t4%
  1829. END SUB
  1830.  
  1831.  
  1832.  
  1833. PUBLIC FUNCTION Lot_GetFirstChild (szChapt$, nFlag%) AS STRING
  1834.  
  1835.  
  1836.  
  1837.  
  1838.  
  1839.  
  1840. DIM szValue As String : szValue = String$(cbSymValMax, 0)
  1841.  
  1842.     if FGetFirstChild(szChapt$, szValue$, nFlag%) = 0 then
  1843.        Lot_GetFirstChild = ""     
  1844.     else
  1845.          Lot_GetFirstChild = LEFT$( szValue$, INSTR (szValue$, CHR$(0)) -1) 
  1846.     end if
  1847.  
  1848. END FUNCTION
  1849.  
  1850.  
  1851. PUBLIC FUNCTION Lot_GetGroupName ( szGroupFileName$) AS STRING  
  1852.  
  1853.  
  1854.  
  1855.  
  1856.  
  1857.  
  1858.    DIM szValue As String : szValue = String$(cbSymValMax, 0)
  1859.  
  1860.    IF FGetGroupName(szGroupFileName$, szValue$, cbSymValMax) = 0 THEN
  1861.       Lot_GetGroupName = ""
  1862.    ELSE
  1863.       Lot_GetGroupName = LEFT$(szValue$, INSTR(szValue$, CHR$(0)) - 1)
  1864.    END IF
  1865.  
  1866. END FUNCTION
  1867.  
  1868.  
  1869. PUBLIC FUNCTION Lot_GetChapterValStr (szChapter$, nField%)  AS STRING 
  1870.  
  1871.  
  1872.  
  1873.  
  1874.  
  1875.  
  1876.    DIM szValue As String : szValue = String$(cbSymValMax, 0)
  1877.  
  1878.    IF FGetChapterValStr(szChapter$, nField%, szValue$, cbSymValMax) = 0 THEN
  1879.       Lot_GetChapterValStr = ""
  1880.    ELSE
  1881.       Lot_GetChapterValStr = LEFT$(szValue$, INSTR(szValue$, CHR$(0)) - 1)
  1882.    END IF
  1883.  
  1884. END FUNCTION
  1885.  
  1886.  
  1887. PUBLIC FUNCTION Lot_GetChapterValInt (szChapter$,nField%) AS INTEGER  
  1888.  
  1889.  
  1890.  
  1891.  
  1892.  
  1893.  
  1894.    DIM lpVal%
  1895.    
  1896.    if FGetChapterValInt(szChapter$, nField%,lpVal%) = 0 then
  1897.        Lot_GetChapterValInt = -1     
  1898.    else
  1899.       Lot_GetChapterValInt = lpVal%
  1900.    end if
  1901.  
  1902. END FUNCTION
  1903.  
  1904.  
  1905. PUBLIC FUNCTION Lot_GetNextSibling (szChapter$,nField%) AS STRING
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912. DIM szValue As String : szValue = String$(cbSymValMax, 0)
  1913.  
  1914.     if FGetNextSibling(szChapter$, szValue$,nField%) = 0 then
  1915.        Lot_GetNextSibling = ""     
  1916.     else
  1917.        Lot_GetNextSibling = LEFT$( szValue$, INSTR (szValue$, CHR$(0)) -1) 
  1918.     end if
  1919.  
  1920. END FUNCTION
  1921.  
  1922.  
  1923. PUBLIC FUNCTION Lot_GetNextChild () AS STRING
  1924.  
  1925.  
  1926.  
  1927.  
  1928.  
  1929.  
  1930.    DIM g_strbuf$, Length%
  1931.  
  1932.    g_strbuf$ = string(256,0)
  1933.    if FGetNextChild(g_strbuf$) = 0 then
  1934.       Lot_GetNextChild = ""     
  1935.    else
  1936.       Length% = len(g_strbuf$)
  1937.       Lot_GetNextChild = LEFT$(g_strbuf$, INSTR (g_strbuf$, CHR$(0)) -1) 
  1938.     end if
  1939.  
  1940. END FUNCTION
  1941.  
  1942.  
  1943. PUBLIC FUNCTION Lot_GetInfChapterSize (szChapter$)  AS LONG
  1944.  
  1945.  
  1946.  
  1947.  
  1948.  
  1949.  
  1950.    DIM size&
  1951.  
  1952.    size&= LcbGetInfChapterSize(szChapter$)
  1953.    if size& = -1 then
  1954.      Lot_GetInfChapterSize = -1     
  1955.    else
  1956.      Lot_GetInfChapterSize = size&
  1957.    end if
  1958.  
  1959. END FUNCTION
  1960.  
  1961.  
  1962. PUBLIC SUB Lot_ToggleChapterFilesInCopyList (szChapter$)  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970.    If FToggleChapterFilesInCopylist(szChapter$) = 0 Then
  1971.       ERROR STFTOGGLE
  1972.    End If
  1973.  
  1974. END SUB
  1975.  
  1976.  
  1977.  
  1978.  
  1979. PUBLIC FUNCTION Lot_SetChapterFilesInCopyListInOrOut (szChapter$, InOrOut%) AS INTEGER
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.  
  1987.  
  1988.  
  1989.  
  1990.  
  1991.  
  1992. DIM curinorout%, FeatureToFind$
  1993.  
  1994.    If szChapter$ = "" Then
  1995.       Lot_SetChapterFilesInCopyListInOrOut  = 0
  1996.       Exit FUNCTION
  1997.    End If
  1998.  
  1999.    curinorout% = Lot_GetChapterValInt(szChapter$, F_INOROUT)
  2000.    
  2001.    If InOrOut% = curinorout% Then
  2002.       Lot_SetChapterFilesInCopyListInOrOut  = InOrOut%
  2003.       Exit FUNCTION
  2004.    End If
  2005.  
  2006.    
  2007.    If  InOrOut% = 1 THEN
  2008.       Lot_SetChapterFilesInCopyListInOrOut = 1
  2009.  
  2010.       
  2011.       If GetSymbolValue("NETWORK") = gNODE Then
  2012.          FeatureToFind$ = Lot_GetChapterValStr(szChapter$, F_KEYWORD)
  2013.          If Lot_IsTheFeatureInstalled(FeatureToFind$) = FALSE Then
  2014.             Lot_SetChapterFilesInCopyListInOrOut = 0
  2015.             Exit Function
  2016.          End If
  2017.       End If
  2018.  
  2019.       If FToggleChapterFilesInCopylist(szChapter$) = 0 Then
  2020.          Lot_SetChapterFilesInCopyListInOrOut = 0
  2021.       End If
  2022.  
  2023.    
  2024.    Else
  2025.       Lot_SetChapterFilesInCopyListInOrOut = 0
  2026.       If FToggleChapterFilesInCopylist(szChapter$) = 0 Then
  2027.          Lot_SetChapterFilesInCopyListInOrOut = 1
  2028.       End If
  2029.    End If
  2030.  
  2031. END FUNCTION
  2032.  
  2033.  
  2034.  
  2035.  
  2036. PUBLIC SUB Lot_InitializeCopyList (szChpt$, nField%) 
  2037.  
  2038.  
  2039.  
  2040.  
  2041.  
  2042.  
  2043.    if FInitializeCopyList(szChpt$, GetSymbolValue(SYM_STF_SRCDIR$), nField%) = 0 then
  2044.       ErrorMsg 0, "Error initializing the copylist: " + szChpt$
  2045.       ERROR STFQUIT
  2046.    end if
  2047. END SUB
  2048.  
  2049.  
  2050. PUBLIC SUB Lot_InitializeWinWinsysSym () 
  2051.  
  2052.  
  2053.  
  2054. DIM systemDir$
  2055.  
  2056.    
  2057.    SetSymbolValue SYM_WINDIR$, GetWindowsDir()
  2058.  
  2059.    
  2060.    systemDir$ = GetWindowsSysDir()
  2061.  
  2062.    
  2063.    IF(IsDirWritable(systemDir$)) = 1 THEN
  2064.       SetSymbolValue SYM_WINSYSDIR$, systemDir$
  2065.    ELSE
  2066.       SetSymbolValue SYM_WINSYSDIR$, GetWindowsDir()
  2067.    END IF
  2068. END SUB
  2069.  
  2070.  
  2071. PUBLIC SUB Lot_InitializeEXTRA
  2072.     DIM drv$, drvno%, i%
  2073.    
  2074.    
  2075.    If GetListLength(gEXTRA) = 0 Then
  2076.       drv$ = Lot_ExtractDriveLetter(GetWindowsDir())
  2077.       drvno% = ASC(drv$) - ASC("a") + 1
  2078.       FOR i% = 1 to 26
  2079.          If i% = drvno% Then
  2080.             AddlistItem gEXTRA, "200000"
  2081.          Else
  2082.             AddlistItem gEXTRA, ""
  2083.          End If
  2084.       NEXT
  2085.    End If
  2086. END SUB
  2087.  
  2088.  
  2089.  
  2090.  
  2091. PUBLIC SUB Lot_RefreshDestination (symbol$) 
  2092.  
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.    if FRefreshDestination(symbol$) = FALSE THEN
  2099.       ErrorMsg 0, "Lot_RefreshDestination error: " + symbol$
  2100.       ERROR STFQUIT
  2101.    end if
  2102. END SUB
  2103.  
  2104.  
  2105. PUBLIC SUB Lot_GetDriveFreeSpaceList (szSymbol$)
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.    if FGetDriveFreeSpaceList(szSymbol$) = FALSE THEN
  2113.       ErrorMsg SID_ERR_LOT_GDFSL, ""
  2114.       ERROR STFQUIT
  2115.    end if
  2116. END SUB
  2117.  
  2118.  
  2119. PUBLIC FUNCTION PopupModelessDlg (Dlg%, HelpID&) AS STRING
  2120.  
  2121.  
  2122.  
  2123.  
  2124.  
  2125.    DIM cuidll$, szWnd$, notused$, notused1%
  2126.  
  2127.    cuidll$ = GetSymbolValue(SYM_CUIDLL$)
  2128.    
  2129.    notused$ = UIStartDlg(cuidll$, Dlg%, "FNameOrgDlgProc", 0, "")
  2130.  
  2131.    
  2132.    szWnd$ = GetSymbolValue(SYM_WNDHANDLE$)
  2133.    notused1% = SendMessage(VAL(szWnd$),UM_PAINTMODELESS,0,0)
  2134. END FUNCTION
  2135.  
  2136. PUBLIC FUNCTION PopupModalDlg (Dlg%, HelpID&) AS STRING
  2137.  
  2138.  
  2139.  
  2140.  
  2141.  
  2142.     DIM cuidll$, sz$, cdir$, notused%
  2143.  
  2144.     cuidll$ = GetSymbolValue(SYM_CUIDLL$)
  2145.     If GetSymbolValue(SYM_AUTOMATIONINST$) <> gTRUE$ Then
  2146.      while (TRUE)
  2147.            
  2148.            sz$ = UIStartDlg(cuidll$, Dlg%, "FNameOrgDlgProc", 0, "")
  2149.  
  2150.       SELECT CASE sz$
  2151.     case "IDC_EXIT"
  2152.             notused% = FRemoveSymbol("IDC_TEXT")
  2153.             QUIT
  2154.             SetListItem "__DLG_ID", 1, STR(Dlg%)
  2155.            case "IDC_CANCEL" 
  2156.               GOTO END_POPUP_WHILE
  2157.           case "IDC_CONTINUE" 
  2158.               GOTO END_POPUP_WHILE
  2159.         case "IDC_OK" 
  2160.               GOTO END_POPUP_WHILE
  2161.         case "IDC_MENU"
  2162.               GOTO END_POPUP_WHILE
  2163.           case "IDC_BACK"
  2164.               GOTO END_POPUP_WHILE
  2165.           case "IDC_HELP"
  2166.             cdir$ = CURDIR$ + "\" + gINSTALLHLP$
  2167.               notused% = WinHelp(HwndFrame(), cdir$, HELP_CONTEXT, HelpID&)
  2168.             SetListItem "RETFROMHELP", 1, "T"
  2169.              case "HELPKEY" 
  2170.             cdir$ = CURDIR$ + "\" + gINSTALLHLP$
  2171.               notused% = WinHelp(HwndFrame(), cdir$, HELP_CONTEXT, HelpID&)
  2172.             SetListItem "RETFROMHELP", 1, "T"
  2173.         END SELECT
  2174.     wend
  2175. END_POPUP_WHILE:
  2176.     PopupModalDlg = MID$(sz$,5,LEN(sz$)-4)
  2177.     UIPop 1
  2178.   End If
  2179.  
  2180. END FUNCTION
  2181.  
  2182. PUBLIC FUNCTION RegisterCallback (ModName$, FuncName$) AS INTEGER
  2183.  
  2184.  
  2185.  
  2186.  
  2187.  
  2188.   DIM rc%, automation$
  2189.  
  2190.   automation$ = GetSymbolValue(SYM_AUTOMATIONINST$)
  2191.   If  automation$ <> gTRUE$ Then
  2192.     RemoveSymbol(SYM_CALLBACK$)
  2193.     AddListItem SYM_CALLBACK$, FuncName$
  2194.     rc% = RegisterFunction(LSI_INFO(4),ModName$,FuncName$)
  2195.     If rc% = -4 Then
  2196.       ErrorMsg 0, "Maximum Number of Callbacks exceeded"
  2197.     End If
  2198.   End If
  2199. END FUNCTION
  2200.  
  2201.  
  2202.  
  2203.  
  2204.  
  2205.  
  2206.  
  2207.  
  2208.  
  2209.  
  2210.  
  2211.  
  2212.  
  2213.  
  2214.  
  2215.  
  2216. PUBLIC FUNCTION SelectDriveCombo (ComboID$, path$) AS INTEGER
  2217.    DIM n%, i%, drv$
  2218.  
  2219.    n% = GetListLength(ComboID$)
  2220.    SelectDriveCombo = 1
  2221.    drv$ = Lot_ExtractDriveLetter(path$)
  2222.    For i% = 1 to n%
  2223.       If drv$ = LCASE$(MID(GetListItem(ComboID$, i%), 1, 1)) Then
  2224.          AddListItem SYM_UPDATELIST$, ComboID$ 
  2225.          AddListItem SYM_UPDATELIST$, ComboID$ & "," & i%
  2226.          SelectDriveCombo = i%
  2227.          EXIT FUNCTION
  2228.       End If
  2229.    Next
  2230. END FUNCTION
  2231.  
  2232. PUBLIC FUNCTION CheckForSpace(dlgId%) AS INTEGER
  2233.  
  2234.  
  2235.  
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  
  2243.      DIM lTicks&, lcb&, lNew&, i%, lcbNeed&, dr$, s$, helpId&, rc$
  2244.     DIM notused1$, curcursor%
  2245.  
  2246.    
  2247.    CheckForSpace = SUCCESS
  2248.    lTicks&       = GetTickCount()
  2249.    lcb&          = LcbGetChapterCost("", "", SYM_COST$, SYM_NEEDED$)
  2250.    IF lcb& = CLNG(0) THEN
  2251.       DO 
  2252.          lNew& = GetTickCount()
  2253.       LOOP UNTIL (lNew& - lTicks&) > 2000
  2254.       DisplayWhenSpaceIsTight SYM_COST$, SYM_NEEDED$
  2255.       GOTO ENDCHECK
  2256.    END IF
  2257.    
  2258.    curcursor% = ShowWaitCursor()
  2259.    SetListItem "IDC_BMP", 1, STR$(IDD_MAXSCAN_BMP) 
  2260.    notused1$ = PopupModelessDlg(DB_CHECKSPACE, DB_CHECKSPACE)
  2261.    lcb& = GetCopyListCost (gEXTRA, SYM_COST$, SYM_NEEDED$)
  2262.    UIPOP 1     
  2263.    RestoreCursor curcursor%
  2264.    IF lcb& = CLNG(0) THEN
  2265.       DisplayWhenSpaceIsTight SYM_COST$, SYM_NEEDED$
  2266.       GOTO ENDCHECK
  2267.    END IF
  2268.  
  2269.    
  2270.    CheckForSpace = FAILURE
  2271.    RemoveSymbol "IDC_LIST1"
  2272.    FOR i% = 1 TO 26
  2273.       lcbNeed& = CLNG(GetListItem(SYM_NEEDED$, i%))
  2274.       IF  lcbNeed& > 0 THEN
  2275.          dr$ = CHR$(ASC("A")+i%-1) + ":" + CHR$(9)
  2276.          s$  = dr$ & ((lcbNeed& \ 1024) + 4)
  2277.          AddlistItem "IDC_LIST1", s$ + gStrK$
  2278.       END IF
  2279.    NEXT
  2280.  
  2281.    SetListItem "SETTABS1",1,"50"
  2282.    SetListItem "NORMALFONT", 1, STR$(IDC_TEXT1)
  2283.    SetListItem "NORMALFONT", 2, STR$(IDC_TEXT2)
  2284.    SetListItem "NORMALFONT", 3, STR$(IDC_TEXT3)
  2285.  
  2286.    helpId& = dlgId%
  2287.    rc$ = PopupModalDlg (dlgId%, helpId&)
  2288.  
  2289. ENDCHECK:
  2290.  
  2291.    RemoveSymbol(SYM_COST$)
  2292.    RemoveSymbol(SYM_NEEDED$)
  2293.  
  2294. END FUNCTION
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314. SUB DisplayWhenSpaceIsTight(szCost$,szNeed$)
  2315.    DIM i%, lcbCost&, lcbNeed&, sz$, notused%
  2316.  
  2317.    FOR i% = 1 TO 26
  2318.       lcbCost& =  CLNG(GetListItem(szCost$, i%)) \ 10
  2319.       lcbNeed& = -CLNG(GetListItem(szNeed$, i%))
  2320.       IF lcbCost& > lcbNeed& THEN
  2321.          sz$ = LdString(SID_WARN_DISKSPACE1) + _
  2322.                LdString(SID_WARN_DISKSPACE2) + _
  2323.                LdString(SID_WARN_DISKSPACE3)
  2324.          
  2325.          notused% = DoMsgBox(sz$,LdString(SID_TKT_STD_TITLE),MB_OK+MB_ICONINFORMATION)
  2326.          EXIT FOR
  2327.       END IF
  2328.    NEXT
  2329.  
  2330. END SUB
  2331.  
  2332.  
  2333.  
  2334.  
  2335.  
  2336. PUBLIC SUB ReadInfFile (szFile$) 
  2337.  
  2338.  
  2339.  
  2340.  
  2341.     IF FOpenInf(szFile$, 1, 0) = 0 THEN
  2342.         ErrorMsg SID_ERR_READINFFILE, ""
  2343.         ERROR STFQUIT
  2344.     END IF
  2345. END SUB
  2346.  
  2347. PUBLIC SUB MakeListFromSectionKeys(szSymbol$, szSect$) 
  2348.  
  2349.  
  2350.  
  2351.  
  2352.  
  2353.     IF FSetSymbolToListOfInfKeys(szSymbol$, szSect$, 1) = 0 THEN
  2354.         ErrorMsg SID_ERR_MAKELISTFROMSECTIONKEYS, ""
  2355.         ERROR STFQUIT
  2356.     END IF
  2357. END SUB
  2358.  
  2359. PUBLIC SUB MakeListFromSectionDate (szSym$, szSect$) 
  2360.  
  2361.  
  2362.  
  2363.  
  2364.  
  2365.  
  2366.  
  2367.     IF FMakeListInfSectionField(szSym$, szSect$, 5) = 0 THEN
  2368.         ErrorMsg SID_ERR_MAKELISTFROMSECTIONDATE, ""
  2369.         ERROR STFQUIT
  2370.     END IF
  2371. END SUB
  2372.  
  2373. PUBLIC SUB MakeListFromSectionFilename (szSym$, szSect$) 
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  
  2381.     IF FMakeListInfSectionField(szSym$, szSect$, 1) = 0 THEN
  2382.         ErrorMsg SID_ERR_MAKELISTFROMSECTIONFILENAME, ""
  2383.         ERROR STFQUIT
  2384.     END IF
  2385. END SUB
  2386.  
  2387. PUBLIC SUB MakeListFromSectionSize (szSym$, szSect$) 
  2388.  
  2389.  
  2390.  
  2391.  
  2392.  
  2393.  
  2394.  
  2395.     IF FMakeListInfSectionField(szSym$, szSect$, 15) = 0 THEN
  2396.         ErrorMsg SID_ERR_MAKELISTFROMSECTIONSIZE, ""
  2397.         ERROR STFQUIT
  2398.     END IF
  2399. END SUB
  2400.  
  2401. PUBLIC SUB MakeListFromSectionVersion (szSym$, szSect$) 
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.     IF FMakeListInfSectionField(szSym$, szSect$, 19) = 0 THEN
  2410.         ErrorMsg SID_ERR_MAKELISTFROMSECTIONVERSION, ""
  2411.         ERROR STFQUIT
  2412.     END IF
  2413. END SUB
  2414.  
  2415. PUBLIC FUNCTION SetSilentMode (mode%)  AS INTEGER
  2416.  
  2417.  
  2418.  
  2419.  
  2420.  
  2421.  
  2422.     SetSilentMode = FSetSilent(mode%)
  2423. END FUNCTION
  2424.  
  2425. PUBLIC FUNCTION SetBeepingMode (mode%)  AS INTEGER
  2426.  
  2427.  
  2428.  
  2429.  
  2430.  
  2431.  
  2432.     SetBeepingMode = FSetBeepingMode(mode%)
  2433. END FUNCTION
  2434.  
  2435. PUBLIC FUNCTION GetSectionKeyDate (szSect$, szKey$)  AS STRING
  2436.  
  2437.  
  2438.  
  2439.  
  2440.  
  2441.  
  2442.     DIM szBuf$, Length%
  2443.  
  2444.     szBuf$ = string$(128, 32) 
  2445.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 5, szBuf$, 128)
  2446.     IF Length% >= 128 THEN
  2447.         ErrorMsg SID_ERR_GETSECTIONKEYDATE, ""
  2448.         ERROR STFQUIT
  2449.     END IF
  2450.  
  2451.     IF Length% = -1 THEN
  2452.         ErrorMsg SID_ERR_GETSECTIONKEYDATE2, ""
  2453.         ERROR STFQUIT
  2454.     END IF
  2455.  
  2456.     GetSectionKeyDate = LEFT$ (szBuf$, Length%)
  2457.     szBuf$ = ""
  2458. END FUNCTION
  2459.  
  2460. PUBLIC FUNCTION GetSectionKeyFilename (szSect$, szKey$)  AS STRING
  2461.  
  2462.  
  2463.  
  2464.  
  2465.  
  2466.  
  2467.     DIM szBuf$, Length%
  2468.  
  2469.     szBuf$ = string$(128, 32)
  2470.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 1, szBuf$, 128)
  2471.     IF Length% >= 128 THEN
  2472.         ErrorMsg SID_ERR_GETSECTIONKEYFILENAME, ""
  2473.         ERROR STFQUIT
  2474.     END IF
  2475.  
  2476.     IF Length% = -1 THEN
  2477.         ErrorMsg SID_ERR_GETSECTIONKEYFILENAME2, ""
  2478.         ERROR STFQUIT
  2479.     END IF
  2480.  
  2481.     GetSectionKeyFilename = LEFT$ (szBuf$, Length%) 
  2482.     szBuf$ = ""
  2483. END FUNCTION
  2484.  
  2485. PUBLIC FUNCTION GetSectionKeySize (szSect$, szKey$)  AS LONG
  2486.  
  2487.  
  2488.  
  2489.  
  2490.  
  2491.  
  2492.     DIM szBuf$, Length%
  2493.  
  2494.     szBuf$ = string$(128, 32)
  2495.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 15, szBuf$, 128)
  2496.     IF Length% >= 128 THEN
  2497.         ErrorMsg SID_ERR_GETSECTIONKEYSIZE, ""
  2498.         ERROR STFQUIT
  2499.     END IF
  2500.  
  2501.     IF Length% = -1 THEN
  2502.         ErrorMsg SID_ERR_GETSECTIONKEYSIZE2, ""
  2503.         ERROR STFQUIT
  2504.     END IF
  2505.     
  2506.     GetSectionKeySize = VAL (LEFT$ (szBuf$, Length%)) 
  2507.     szBuf$ = ""
  2508. END FUNCTION
  2509.  
  2510. PUBLIC FUNCTION GetSectionKeyVersion (szSect$, szKey$)  AS STRING
  2511.  
  2512.  
  2513.  
  2514.  
  2515.  
  2516.  
  2517.     DIM szBuf$, Length%
  2518.  
  2519.     szBuf$ = string$(128, 32) 
  2520.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 19, szBuf$, 128)
  2521.     IF Length% >= 128 THEN
  2522.         ErrorMsg SID_ERR_GETSECTIONKEYVERSION, ""
  2523.         ERROR STFQUIT
  2524.     END IF
  2525.  
  2526.     IF Length% = -1 THEN
  2527.         ErrorMsg SID_ERR_GETSECTIONKEYVERSION2, ""
  2528.         ERROR STFQUIT
  2529.     END IF
  2530.  
  2531.     GetSectionKeyVersion = LEFT$ (szBuf$, Length%)
  2532.     szBuf$ = ""
  2533. END FUNCTION
  2534.  
  2535. PUBLIC SUB RemoveDir (szDir$, cmo%) 
  2536.  
  2537.  
  2538.  
  2539.  
  2540.     IF FRemoveDir(szDir$) = 0 THEN
  2541.         ErrorMsg SID_ERR_REMOVEDIR, ""
  2542.         ERROR STFERR
  2543.     END IF
  2544. END SUB
  2545.  
  2546. PUBLIC SUB DumpCopyList (szFile$) 
  2547.  
  2548.  
  2549.  
  2550.  
  2551.     IF FDumpCopyListToFile (szFile$) = 0 THEN
  2552.         ErrorMsg SID_ERR_DUMPCOPYLIST, ""
  2553.         ERROR STFERR
  2554.     END IF
  2555. END SUB
  2556.  
  2557. PUBLIC SUB ClearCopyList 
  2558.  
  2559.  
  2560.  
  2561.  
  2562.     ResetCopyList
  2563. END SUB
  2564.  
  2565. PUBLIC FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$)  AS LONG
  2566.  
  2567.  
  2568.  
  2569.  
  2570.  
  2571.  
  2572.     DIM lNeed&
  2573.  
  2574.     lNeed& = LcbGetCopyListCost (szExtraList$, szCostList$, szNeedList$)
  2575.     IF lNeed& < 0 THEN
  2576.         ErrorMsg SID_ERR_GETCOPYLISTCOST, ""
  2577.         ERROR STFQUIT
  2578.     END IF
  2579.     GetCopyListCost = lNeed&
  2580. END FUNCTION
  2581.  
  2582. PUBLIC SUB CopyFilesInCopyList 
  2583.  
  2584.  
  2585.  
  2586.  
  2587.  
  2588.  
  2589.     DIM grc%
  2590.  
  2591.     grc% = GrcCopyFilesInCopyList (HinstFrame())
  2592.  
  2593.     IF grc% = grcUserQuit THEN
  2594.         ErrorMsg SID_ERR_NOT_COMPLETE, ""
  2595.         ERROR STFQUIT
  2596.     ELSEIF grc% > 0 THEN
  2597.         ErrorMsg SID_ERR_NOT_COMPLETE, ""
  2598.         ERROR STFQUIT
  2599.     END IF
  2600. END SUB
  2601.  
  2602. PUBLIC SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$) 
  2603.  
  2604.  
  2605.  
  2606.  
  2607.  
  2608.  
  2609.  
  2610.     IF FAddSectionFilesToCopyList (szSect$, szSrc$, szDest$) = 0 THEN
  2611.         ErrorMsg SID_ERR_ADDSECTIONFILESTOCOPYLIST, ""
  2612.         ERROR STFQUIT
  2613.     END IF
  2614. END SUB
  2615.  
  2616.  
  2617. PUBLIC SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) 
  2618.  
  2619.  
  2620.  
  2621.  
  2622.  
  2623.  
  2624.  
  2625.     IF FAddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
  2626.         ErrorMsg SID_ERR_ADDSECTIONKEYFILETOCOPYLIST, ""
  2627.         ERROR STFQUIT
  2628.     END IF
  2629. END SUB
  2630.  
  2631. PUBLIC SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&) 
  2632.  
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639.     IF FAddToBillboardList(szDll$, idDlg%, szProc$, lTicks&) = 0 THEN
  2640.         ErrorMsg SID_ERR_ADDTOBILLBOARDLIST, ""
  2641.         ERROR STFQUIT
  2642.     END IF
  2643. END SUB
  2644.  
  2645. PUBLIC SUB AddBlankToBillboardList (lTicks&) 
  2646.  
  2647.  
  2648.  
  2649.  
  2650.  
  2651.  
  2652.     IF FAddToBillboardList("", 0, "", lTicks&) = 0 THEN
  2653.     
  2654.         ErrorMsg SID_ERR_ADDBLANKTOBILLBOARDLIST, ""
  2655.         ERROR STFQUIT
  2656.     END IF
  2657. END SUB
  2658.  
  2659. PUBLIC SUB ClearBillboardList 
  2660.  
  2661.  
  2662.  
  2663.  
  2664.  
  2665.  
  2666.     IF FClearBillboardList() = 0 THEN
  2667.         ErrorMsg SID_ERR_CLEARBILLBOARDLIST, ""
  2668.         ERROR STFQUIT
  2669.     END IF
  2670. END SUB
  2671.  
  2672. PUBLIC SUB SetCopyGaugePosition (x%, y%) 
  2673.  
  2674.  
  2675.  
  2676.  
  2677.  
  2678.  
  2679.     ProSetPos x%, y%
  2680. END SUB
  2681.  
  2682. PUBLIC SUB QUIT
  2683.  
  2684.  
  2685.  
  2686.  
  2687.    DIM sz$
  2688.  
  2689.    sz$ = PopupModalDlg (DB_EXITHISTORY, DB_EXITHISTORY)
  2690.    If sz$ = "OK" Then
  2691.       UIPopAll
  2692.         gEndStatementEncountered% = TRUE      
  2693.       END
  2694.    End If
  2695. END SUB
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707. PUBLIC FUNCTION Lot_WriteToRiFile (ripath$) AS INTEGER
  2708. DIM  uname$, cname$, snum$
  2709.  
  2710.    Lot_WriteToRiFile = TRUE
  2711.  
  2712.    uname$ = GetSymbolValue("NAME")
  2713.  
  2714.    IF LEN(uname$) > 30 THEN
  2715.       uname$ = MID$(uname$,1,30)
  2716.    END IF
  2717.  
  2718.    cname$ = GetSymbolValue(SYM_COMPANY$)
  2719.  
  2720.    IF LEN(cname$) > 30 THEN
  2721.       cname$ = MID$(cname$,1,30)
  2722.    END IF
  2723.  
  2724.    snum$  = GetSymbolValue(SYM_SERIALNUM$)
  2725.  
  2726.    IF WriteUserRegistration(ripath$,uname$,cname$,snum$) <> 0 Then
  2727.       Lot_WriteToRiFile = FALSE
  2728.    End If
  2729.  
  2730. END FUNCTION
  2731.  
  2732.  
  2733.  
  2734.  
  2735.  
  2736.  
  2737.  
  2738.  
  2739.  
  2740.  
  2741.  
  2742.  
  2743. PUBLIC FUNCTION Lot_ReadDefaultsfromRi (default_ripath$) AS INTEGER
  2744. DIM rc%, n%
  2745.  
  2746.    DIM buf1 AS STRING : buf1 = String$(80,0)
  2747.    DIM buf2 AS STRING : buf2 = String$(80,0)
  2748.    DIM buf3 AS STRING : buf3 = String$(18,0)
  2749.  
  2750.    Lot_ReadDefaultsfromRi = FALSE
  2751.  
  2752.    rc% = DoesFileExist(default_ripath$,femExists)
  2753.    if rc% = 0 goto rinotfound
  2754.  
  2755.    rc% = ReadUserRegistration(default_ripath$,buf1,buf2,buf3)
  2756.    If rc% <> 0 goto rinotfound
  2757.  
  2758.    n% = LEN(buf1)
  2759.    SetSymbolValue SYM_NAME$, LEFT$(buf1, n%)
  2760.    n% = LEN(buf2)
  2761.    SetSymbolValue SYM_COMPANY$, LEFT$(buf2, n%)
  2762.    n% = LEN(buf3)
  2763.    SetSymbolValue SYM_SERIALNUM$, LEFT$(buf3, n%)
  2764.  
  2765.    Lot_ReadDefaultsfromRi = TRUE
  2766.  
  2767.    EXIT FUNCTION
  2768.  
  2769. rinotfound: 
  2770.    
  2771. END FUNCTION
  2772.  
  2773.  
  2774.  
  2775.  
  2776. PUBLIC FUNCTION Reg_GetNumberOfProducts() AS INTEGER
  2777.  
  2778.  
  2779.    Reg_GetNumberOfProducts=gCurrNumOfProds%
  2780. END FUNCTION
  2781.  
  2782. PUBLIC SUB Reg_RegisterProductNames(Acronym$,Full_Name$)
  2783.  
  2784.  
  2785.  
  2786.  
  2787.  
  2788.  
  2789.  
  2790.  
  2791.  
  2792.  
  2793.  
  2794.  
  2795.  
  2796.  
  2797.  
  2798.  
  2799.         gCurrNumOfProds%=gCurrNumOfProds%+1
  2800.         IF gCurrNumOfProds% > gMaxNumOfProds% THEN
  2801.  
  2802.            ERROR STFQUIT
  2803.         END IF               
  2804.  
  2805.     Prods(gCurrNumOfProds%).Acronym=Acronym$
  2806.     Prods(gCurrNumOfProds%).Name=Full_Name$
  2807.     Prods(gCurrNumOfProds%).DirSymList=Acronym$+"DIRS"
  2808.     Prods(gCurrNumOfProds%).CDOpt=Acronym$+"CDOPT"
  2809.     Prods(gCurrNumOfProds%).CDOptSelected=Acronym$+"CDOPTSELECTED"
  2810.     Prods(gCurrNumOfProds%).NodeOpt=Acronym$+"NODEOPT"
  2811.     Prods(gCurrNumOfProds%).NodeOptSelected=Acronym$+"NODEOPTSELECTED"
  2812.     Prods(gCurrNumOfProds%).NodeOptDefaultSelected=Acronym$+"NODEOPTDEFAULTSELECTED"
  2813.     Prods(gCurrNumOfProds%).CDOptDefaultSelected=Acronym$+"CDOPTDEFAULTSELECTED"
  2814.         Prods(gCurrNumOfProds%).BillboardNumber=0
  2815.         Prods(gCurrNumOfProds%).ProgManagerGroup="Lotus Applications"
  2816.  
  2817.         Prods(gCurrNumOfProds%).UIInOrOut = 1
  2818.         Prods(gCurrNumOfProds%).AllowUserToPickInSuite = 1
  2819.         Prods(gCurrNumOfProds%).Share     = 0
  2820.         Prods(gCurrNumOfProds%).DataLens  = 0
  2821.         Prods(gCurrNumOfProds%).SQL       = 0
  2822.         Prods(gCurrNumOfProds%).Paradox   = 0
  2823.         Prods(gCurrNumOfProds%).Srv       = 0
  2824.         Prods(gCurrNumOfProds%).License   = 0
  2825.         Prods(gCurrNumOfProds%).ATM       = 0
  2826.         Prods(gCurrNumOfProds%).PreviousVersion       = ""
  2827.  
  2828.  
  2829.  
  2830. END SUB
  2831.  
  2832. PUBLIC SUB Reg_SetSupportedInstallTypes(ProdNo%,Complete%,Custom%,Laptop%) 
  2833.  
  2834.  
  2835.  
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.         IF ProdNo% > gMaxNumOfProds% THEN
  2843.  
  2844.            ERROR STFQUIT
  2845.         END IF               
  2846.     Prods(ProdNo%).Complete=Complete%
  2847.     Prods(ProdNo%).Custom=Custom%
  2848.     Prods(ProdNo%).Laptop=Laptop%
  2849. END SUB
  2850.  
  2851. PUBLIC SUB Reg_SetSelectedInstallType(ProdNo%,TypeSelected$) 
  2852.  
  2853.  
  2854.  
  2855.  
  2856.  
  2857.  
  2858.         IF ProdNo% > gMaxNumOfProds% THEN
  2859.  
  2860.            ERROR STFQUIT
  2861.         END IF               
  2862.         IF (TypeSelected$<>gCOMPLETE$ AND TypeSelected$<>gCUSTOM$ AND _
  2863.                 TypeSelected$<>gLAPTOP$) THEN
  2864.  
  2865.            ERROR STFQUIT
  2866.         END IF               
  2867.  
  2868.         SELECT CASE TypeSelected$
  2869.         CASE gCOMPLETE$
  2870.             Prods(ProdNo%).SelectedType=TypeSelected$
  2871.  
  2872.         CASE gCUSTOM$
  2873.             IF(Prods(ProdNo%).Custom=1) THEN
  2874.                     Prods(ProdNo%).SelectedType=TypeSelected$
  2875.                 ELSE
  2876.                     Prods(ProdNo%).SelectedType=gCOMPLETE$
  2877.                 END IF
  2878.  
  2879.         CASE gLAPTOP$
  2880.             IF(Prods(ProdNo%).Laptop=1) THEN
  2881.                     Prods(ProdNo%).SelectedType=TypeSelected$
  2882.                 ELSE
  2883.                     Prods(ProdNo%).SelectedType=gCOMPLETE$
  2884.                 END IF
  2885.         END SELECT
  2886.  
  2887. END SUB
  2888.  
  2889. PUBLIC SUB Reg_SetProdSizes(ProdNo%,FullSize&,MinSize&) 
  2890.  
  2891.  
  2892.  
  2893.  
  2894.  
  2895.  
  2896.  
  2897.         IF ProdNo% > gMaxNumOfProds% THEN
  2898.  
  2899.            ERROR STFQUIT
  2900.         END IF               
  2901.     Prods(ProdNo%).FullSize=FullSize&
  2902.     Prods(ProdNo%).MinSize=MinSize&
  2903. END SUB
  2904.  
  2905. PUBLIC SUB Reg_SetUIInOrOut(ProdNo%,Flag%) 
  2906.  
  2907.  
  2908.  
  2909.  
  2910.  
  2911.         IF ProdNo% > gMaxNumOfProds% THEN
  2912.  
  2913.            ERROR STFQUIT
  2914.         END IF      
  2915.         Prods(ProdNo%).UIInOrOut = Flag%
  2916. END SUB
  2917.  
  2918. PUBLIC SUB Reg_SetAllowUserToPickInSuite(ProdNo%,Flag%) 
  2919.  
  2920.  
  2921.  
  2922.  
  2923.  
  2924.         IF ProdNo% > gMaxNumOfProds% THEN
  2925.  
  2926.            ERROR STFQUIT
  2927.         END IF      
  2928.         Prods(ProdNo%).AllowUserToPickInSuite = Flag%
  2929. END SUB
  2930.  
  2931.  
  2932. PUBLIC SUB Reg_SetShareFlags(ProdNo%,Share%,DLens%,SQL%,Paradox%)
  2933.  
  2934.  
  2935.  
  2936.  
  2937.  
  2938.  
  2939.  
  2940.  
  2941.  
  2942.  
  2943.  
  2944.         IF ProdNo% > gMaxNumOfProds% THEN
  2945.  
  2946.            ERROR STFQUIT
  2947.         END IF               
  2948.     Prods(ProdNo%).Share=Share%
  2949.     Prods(ProdNo%).DataLens=DLens%
  2950.     Prods(ProdNo%).SQL=SQL%
  2951.     Prods(ProdNo%).Paradox=Paradox%
  2952. END SUB
  2953.  
  2954. PUBLIC SUB Reg_SetCDOption(ProdNo%,Inst%,CDOptStr$)
  2955.  
  2956.  
  2957.  
  2958.  
  2959.  
  2960.  
  2961.  
  2962. DIM CDOptSym$
  2963.         IF ProdNo% > gMaxNumOfProds% THEN
  2964.  
  2965.            ERROR STFQUIT
  2966.         END IF               
  2967.         CDOptSym$=Prods(ProdNo%).CDOpt
  2968.         IF CDOptSym$ = "" OR CDOptStr$ = ""THEN    
  2969.  
  2970.            ERROR STFQUIT
  2971.         END IF               
  2972.         SetListItem CDOptSym$, Inst%,CDOptStr$
  2973. END SUB
  2974.  
  2975. PUBLIC SUB Reg_SetCDOptionSelected(ProdNo%,Inst%,Selection%)
  2976.  
  2977.  
  2978.  
  2979.  
  2980.  
  2981.  
  2982.  
  2983.  
  2984.  
  2985. DIM CDOptSymSelected$,CDOptSymDefaultSelected$
  2986.         IF ProdNo% > gMaxNumOfProds% THEN
  2987.  
  2988.            ERROR STFQUIT
  2989.         END IF               
  2990.         CDOptSymSelected$=Prods(ProdNo%).CDOptSelected
  2991.         IF CDOptSymSelected$ = "" OR _
  2992.            (Selection% <> 1 AND Selection% <> 0) THEN    
  2993.  
  2994.            ERROR STFQUIT
  2995.         END IF               
  2996.         SetListItem CDOptSymSelected$,Inst%,STR$(Selection%)
  2997.  
  2998.         CDOptSymDefaultSelected$=Prods(ProdNo%).CDOptDefaultSelected
  2999.         IF CDOptSymDefaultSelected$ = "" OR _
  3000.            (Selection% <> 1 AND Selection% <> 0) THEN    
  3001.  
  3002.            ERROR STFQUIT
  3003.         END IF               
  3004.         SetListItem CDOptSymDefaultSelected$,Inst%,STR$(Selection%)
  3005.  
  3006. END SUB
  3007.  
  3008.  
  3009. PUBLIC SUB Reg_ReSetCDOptionSelected(ProdNo%,Inst%,Selection%)
  3010.  
  3011.  
  3012.  
  3013.  
  3014.  
  3015.  
  3016.  
  3017. DIM CDOptSymSelected$
  3018.         IF ProdNo% > gMaxNumOfProds% THEN
  3019.  
  3020.            ERROR STFQUIT
  3021.         END IF               
  3022.         CDOptSymSelected$=Prods(ProdNo%).CDOptSelected
  3023.         IF CDOptSymSelected$ = "" OR _
  3024.            (Selection% <> 1 AND Selection% <> 0) THEN    
  3025.  
  3026.            ERROR STFQUIT
  3027.         END IF               
  3028.         SetListItem CDOptSymSelected$,Inst%,STR$(Selection%)
  3029.  
  3030. END SUB
  3031.  
  3032. PUBLIC SUB Reg_ReSetCDOptionSelectedToDefault(ProdNo%,Inst%)
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  
  3041. DIM CDOptSymSelected$,CDOptSymDefaultSelected$,Sel$
  3042.         IF ProdNo% > gMaxNumOfProds% THEN
  3043.  
  3044.            ERROR STFQUIT
  3045.         END IF               
  3046.         CDOptSymDefaultSelected$=Prods(ProdNo%).CDOptDefaultSelected
  3047.         IF CDOptSymDefaultSelected$ = ""  THEN    
  3048.  
  3049.            ERROR STFQUIT
  3050.         END IF                                  
  3051.         Sel$ = GetListItem( CDOptSymDefaultSelected$,Inst% )
  3052.  
  3053.         CDOptSymSelected$=Prods(ProdNo%).CDOptSelected
  3054.         IF CDOptSymSelected$ = ""  THEN    
  3055.  
  3056.            ERROR STFQUIT
  3057.         END IF               
  3058.         SetListItem CDOptSymSelected$,Inst%,Sel$
  3059.  
  3060. END SUB
  3061.  
  3062. PUBLIC SUB Reg_ReSetAllCDOptsSelToDefaults(ProdNo%)
  3063.  
  3064.  
  3065.  
  3066.  
  3067. DIM CDOptSelSym$,CDOptSelListLen%,Inst%
  3068.         IF ProdNo% > gMaxNumOfProds% THEN
  3069.  
  3070.            ERROR STFQUIT
  3071.         END IF               
  3072.  
  3073.         CDOptSelListLen% = 0
  3074.         CDOptSelSym$=Prods(ProdNo%).CDOptSelected
  3075.         IF CDOptSelSym$ = "" THEN
  3076.  
  3077.            ERROR STFQUIT
  3078.         END IF       
  3079.         CDOptSelListLen%=GetListLength(CDOptSelSym$)
  3080.         FOR Inst%=1 TO CDOptSelListLen%
  3081.            Reg_ReSetCDOptionSelectedToDefault ProdNo%,Inst%
  3082.         NEXT
  3083.  
  3084. END SUB
  3085.  
  3086.  
  3087. PUBLIC SUB Reg_SetNodeOption(ProdNo%,Inst%,NodeOptStr$) 
  3088.  
  3089.  
  3090.  
  3091.  
  3092.  
  3093.  
  3094.  
  3095. DIM NodeOptSym$
  3096.         IF ProdNo% > gMaxNumOfProds% THEN
  3097.  
  3098.            ERROR STFQUIT
  3099.         END IF               
  3100.         NodeOptSym$=Prods(ProdNo%).NodeOpt
  3101.         IF NodeOptSym$ = "" OR NodeOptStr$ = ""THEN    
  3102.  
  3103.            ERROR STFQUIT
  3104.         END IF               
  3105.         SetListItem NodeOptSym$, Inst%,NodeOptStr$
  3106.  
  3107. END SUB
  3108.  
  3109. PUBLIC SUB Reg_SetNodeOptionSelected(ProdNo%,Inst%,Selection%)
  3110.  
  3111.  
  3112.  
  3113.  
  3114.  
  3115.  
  3116.  
  3117.  
  3118.  
  3119. DIM NodeOptSymSelected$,NodeOptSymDefaultSelected$
  3120.         IF ProdNo% > gMaxNumOfProds% THEN
  3121.  
  3122.            ERROR STFQUIT
  3123.         END IF               
  3124.         NodeOptSymSelected$=Prods(ProdNo%).NodeOptSelected
  3125.         IF NodeOptSymSelected$ = "" OR _
  3126.            (Selection% <> 1 AND Selection% <> 0) THEN    
  3127.  
  3128.            ERROR STFQUIT
  3129.         END IF               
  3130.         SetListItem NodeOptSymSelected$,Inst%,STR$(Selection%)
  3131.  
  3132.         NodeOptSymDefaultSelected$=Prods(ProdNo%).NodeOptDefaultSelected
  3133.         IF NodeOptSymDefaultSelected$ = "" OR _
  3134.            (Selection% <> 1 AND Selection% <> 0) THEN    
  3135.  
  3136.            ERROR STFQUIT
  3137.         END IF               
  3138.         SetListItem NodeOptSymDefaultSelected$,Inst%,STR$(Selection%)
  3139.  
  3140. END SUB
  3141.  
  3142. PUBLIC SUB Reg_ReSetNodeOptionSelected(ProdNo%,Inst%,Selection%)
  3143.  
  3144.  
  3145.  
  3146.  
  3147.  
  3148.  
  3149.  
  3150. DIM NodeOptSymSelected$
  3151.         IF ProdNo% > gMaxNumOfProds% THEN
  3152.  
  3153.            ERROR STFQUIT
  3154.         END IF               
  3155.         NodeOptSymSelected$=Prods(ProdNo%).NodeOptSelected
  3156.         IF NodeOptSymSelected$ = "" OR _
  3157.            (Selection% <> 1 AND Selection% <> 0) THEN    
  3158.  
  3159.            ERROR STFQUIT
  3160.         END IF               
  3161.         SetListItem NodeOptSymSelected$,Inst%,STR$(Selection%)
  3162.  
  3163. END SUB
  3164.  
  3165. PUBLIC SUB Reg_ReSetNodeOptionSelectedToDefault(ProdNo%,Inst%)
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.  
  3174. DIM NodeOptSymSelected$,NodeOptSymDefaultSelected$,Sel$
  3175.         IF ProdNo% > gMaxNumOfProds% THEN
  3176.  
  3177.            ERROR STFQUIT
  3178.         END IF               
  3179.         NodeOptSymDefaultSelected$=Prods(ProdNo%).NodeOptDefaultSelected
  3180.         IF NodeOptSymDefaultSelected$ = ""  THEN    
  3181.  
  3182.            ERROR STFQUIT
  3183.         END IF                                  
  3184.         Sel$ = GetListItem( NodeOptSymDefaultSelected$,Inst% )
  3185.  
  3186.         NodeOptSymSelected$=Prods(ProdNo%).NodeOptSelected
  3187.         IF NodeOptSymSelected$ = ""  THEN    
  3188.  
  3189.            ERROR STFQUIT
  3190.         END IF               
  3191.         SetListItem NodeOptSymSelected$,Inst%,Sel$
  3192.  
  3193. END SUB
  3194.  
  3195. PUBLIC SUB Reg_ReSetAllNodeOptsSelToDefaults(ProdNo%)
  3196.  
  3197.  
  3198.  
  3199.  
  3200. DIM NodeOptSelSym$,NodeOptSelListLen%,Inst%
  3201.         IF ProdNo% > gMaxNumOfProds% THEN
  3202.  
  3203.            ERROR STFQUIT
  3204.         END IF               
  3205.  
  3206.         NodeOptSelListLen% = 0
  3207.         NodeOptSelSym$=Prods(ProdNo%).NodeOptSelected
  3208.         IF NodeOptSelSym$ = "" THEN
  3209.  
  3210.            ERROR STFQUIT
  3211.         END IF       
  3212.         NodeOptSelListLen%=GetListLength(NodeOptSelSym$)
  3213.         FOR Inst%=1 TO NodeOptSelListLen%
  3214.            Reg_ReSetNodeOptionSelectedToDefault ProdNo%,Inst%
  3215.         NEXT
  3216.  
  3217. END SUB
  3218.  
  3219. PUBLIC SUB Reg_SetSrvSupport(ProdNo%,SrvFlag%) 
  3220.  
  3221.  
  3222.  
  3223.  
  3224.  
  3225.         IF ProdNo% > gMaxNumOfProds% THEN
  3226.  
  3227.            ERROR STFQUIT
  3228.         END IF               
  3229.         IF SrvFlag% <> 0 AND SrvFlag% <> 1 THEN
  3230.  
  3231.            ERROR STFQUIT
  3232.         END IF               
  3233.     Prods(ProdNo%).Srv=SrvFlag%
  3234. END SUB
  3235.  
  3236. PUBLIC SUB Reg_SetDistSupport(ProdNo%,DistFlag%) 
  3237.  
  3238.  
  3239.  
  3240.  
  3241.  
  3242.         IF ProdNo% > gMaxNumOfProds% THEN
  3243.  
  3244.            ERROR STFQUIT
  3245.         END IF               
  3246.         IF DistFlag% <> 0 AND DistFlag% <> 1 THEN
  3247.  
  3248.            ERROR STFQUIT
  3249.         END IF               
  3250.     Prods(ProdNo%).Dist=DistFlag%
  3251. END SUB
  3252.  
  3253. PUBLIC SUB Reg_SetLicenseSupport(ProdNo%,LicFlag%) 
  3254.  
  3255.  
  3256.  
  3257.  
  3258.  
  3259.  
  3260.         IF ProdNo% > gMaxNumOfProds% THEN
  3261.  
  3262.            ERROR STFQUIT
  3263.         END IF               
  3264.         IF LicFlag% <> 0 AND LicFlag% <> 1 THEN
  3265.  
  3266.            ERROR STFQUIT
  3267.         END IF               
  3268.     Prods(ProdNo%).License=LicFlag%
  3269.     Prods(ProdNo%).LicenseSelected=LicFlag%
  3270. END SUB
  3271.  
  3272. PUBLIC SUB Reg_SetLicenseSelected(ProdNo%,LicFlag%) 
  3273.  
  3274.  
  3275.  
  3276.  
  3277.  
  3278.         IF ProdNo% > gMaxNumOfProds% THEN
  3279.  
  3280.            ERROR STFQUIT
  3281.         END IF               
  3282.         IF LicFlag% <> 0 AND LicFlag% <> 1 THEN
  3283.  
  3284.            ERROR STFQUIT
  3285.         END IF               
  3286.     Prods(ProdNo%).LicenseSelected=LicFlag%
  3287. END SUB
  3288.  
  3289. PUBLIC SUB Reg_SetCountDirectory(ProdNo%,CountDir$) 
  3290.  
  3291.  
  3292.  
  3293.  
  3294.  
  3295.         IF ProdNo% > gMaxNumOfProds% THEN
  3296.  
  3297.            ERROR STFQUIT
  3298.         END IF               
  3299.         IF CountDir$ ="" THEN
  3300.  
  3301.            ERROR STFQUIT
  3302.         END IF               
  3303.     Prods(ProdNo%).CountDirectory=CountDir$
  3304. END SUB
  3305.  
  3306. PUBLIC SUB Reg_SetATMSupport(ProdNo%,ATMFlag%) 
  3307.  
  3308.  
  3309.  
  3310.  
  3311.  
  3312.         IF ProdNo% > gMaxNumOfProds% THEN
  3313.  
  3314.            ERROR STFQUIT
  3315.         END IF               
  3316.         IF ATMFlag% <> 0 AND ATMFlag% <> 1 THEN
  3317.  
  3318.            ERROR STFQUIT
  3319.         END IF               
  3320.     Prods(ProdNo%).ATM=ATMFlag%
  3321. END SUB
  3322.  
  3323. PUBLIC SUB Reg_SetProgManagerGroup(ProdNo%,GroupName$) 
  3324.  
  3325.  
  3326.  
  3327.  
  3328.  
  3329.         IF ProdNo% > gMaxNumOfProds% THEN
  3330.  
  3331.            ERROR STFQUIT
  3332.         END IF               
  3333.         IF LEN(GroupName$) > 30 THEN
  3334.            Prods(ProdNo%).ProgManagerGroup=LEFT$(GroupName$,30)
  3335.         ELSE
  3336.            Prods(ProdNo%).ProgManagerGroup=GroupName$
  3337.         END IF
  3338. END SUB
  3339.  
  3340. PUBLIC SUB Reg_SetBillboardNumber(ProdNo%,BBNum%) 
  3341.  
  3342.  
  3343.  
  3344.  
  3345.  
  3346.         IF ProdNo% > gMaxNumOfProds% THEN
  3347.  
  3348.            ERROR STFQUIT
  3349.         END IF               
  3350.         IF BBNum% < 0 THEN
  3351.  
  3352.            ERROR STFQUIT
  3353.         END IF               
  3354.         Prods(ProdNo%).BillboardNumber=BBNum%
  3355. END SUB
  3356.  
  3357.  
  3358.  
  3359. PUBLIC FUNCTION Reg_GetProductNo(ProdAcronym$)  AS INTEGER 
  3360.  
  3361.  
  3362.  
  3363.  
  3364.  
  3365. DIM ProdNo%, count% 
  3366.         IF ProdAcronym$ = "" THEN
  3367.  
  3368.            ERROR STFQUIT
  3369.         END IF     
  3370.         ProdNo% = 0
  3371.         FOR count%=1 TO gMaxNumOfProds%
  3372.                 IF Prods(count%).Acronym = ProdAcronym$ THEN
  3373.                         ProdNo% = count%    
  3374.                         EXIT FOR
  3375.                 END IF
  3376.         NEXT
  3377.         Reg_GetProductNo=ProdNo%
  3378. END FUNCTION
  3379.  
  3380. PUBLIC FUNCTION Reg_GetProductAcronym(ProdNo%)  AS STRING 
  3381.  
  3382.  
  3383.  
  3384.  
  3385.  
  3386. DIM ProdAcronym$
  3387.         ProdAcronym$=""
  3388.         IF ProdNo% > gMaxNumOfProds% THEN
  3389.  
  3390.            ERROR STFQUIT
  3391.         END IF               
  3392.         ProdAcronym$=Prods(ProdNo%).Acronym
  3393.         Reg_GetProductAcronym=ProdAcronym$        
  3394. END FUNCTION
  3395.  
  3396. PUBLIC FUNCTION Reg_GetProductname(ProdNo%)  AS STRING 
  3397.  
  3398.  
  3399.  
  3400.  
  3401.  
  3402.     DIM Prodname$
  3403.         Prodname$=""
  3404.         IF ProdNo% > gMaxNumOfProds% THEN
  3405.  
  3406.            ERROR STFQUIT
  3407.         END IF               
  3408.         Prodname$ = Prods(ProdNo%).Name
  3409.         Reg_GetProductname = Prodname$        
  3410. END FUNCTION
  3411.  
  3412. PUBLIC FUNCTION Reg_GetUIInOrOut(ProdNo%)  AS INTEGER
  3413.  
  3414.  
  3415.  
  3416.  
  3417.     DIM flag%
  3418.  
  3419.         IF ProdNo% > gMaxNumOfProds% THEN
  3420.  
  3421.            ERROR STFQUIT
  3422.         END IF               
  3423.         flag% = Prods(ProdNo%).UIInOrOut
  3424.         Reg_GetUIInOrOut = flag%      
  3425. END FUNCTION
  3426.  
  3427. PUBLIC FUNCTION Reg_GetAllowUserToPickInSuite(ProdNo%)  AS INTEGER
  3428.  
  3429.  
  3430.  
  3431.  
  3432.     DIM flag%
  3433.  
  3434.         IF ProdNo% > gMaxNumOfProds% THEN
  3435.  
  3436.            ERROR STFQUIT
  3437.         END IF               
  3438.         flag% = Prods(ProdNo%).AllowUserToPickInSuite
  3439.         Reg_GetAllowUserToPickInSuite = flag%      
  3440. END FUNCTION
  3441.  
  3442. PUBLIC FUNCTION Reg_GetProdSupportForFullInstall(ProdNo%) AS INTEGER
  3443.  
  3444.  
  3445.  
  3446.  
  3447.  
  3448. DIM SuppFlag%
  3449.         SuppFlag% = 0
  3450.         IF ProdNo% > gMaxNumOfProds% THEN
  3451.  
  3452.            ERROR STFQUIT
  3453.         END IF       
  3454.         SuppFlag%=Prods(ProdNo%).Complete
  3455.         Reg_GetProdSupportForFullInstall=SuppFlag% 
  3456. END FUNCTION
  3457.  
  3458. PUBLIC FUNCTION Reg_GetProdSupportForCustInstall(ProdNo%) AS INTEGER
  3459.  
  3460.  
  3461.  
  3462.  
  3463.  
  3464. DIM SuppFlag%
  3465.         SuppFlag% = 0
  3466.         IF ProdNo% > gMaxNumOfProds% THEN
  3467.  
  3468.            ERROR STFQUIT
  3469.         END IF       
  3470.         SuppFlag%=Prods(ProdNo%).Custom        
  3471.         Reg_GetProdSupportForCustInstall=SuppFlag% 
  3472. END FUNCTION
  3473.  
  3474. PUBLIC FUNCTION Reg_GetProdSupportForMinInstall(ProdNo%) AS INTEGER
  3475.  
  3476.  
  3477.  
  3478.  
  3479.  
  3480. DIM SuppFlag%
  3481.         SuppFlag% = 0
  3482.         IF ProdNo% > gMaxNumOfProds% THEN
  3483.  
  3484.            ERROR STFQUIT
  3485.         END IF       
  3486.         SuppFlag%=Prods(ProdNo%).Laptop        
  3487.         Reg_GetProdSupportForMinInstall=SuppFlag% 
  3488. END FUNCTION
  3489.  
  3490. PUBLIC FUNCTION Reg_GetProdSelectedInstallType(ProdNo%) AS STRING
  3491.  
  3492.  
  3493.  
  3494.  
  3495. DIM SelType$
  3496.         SelType$ = ""
  3497.         IF ProdNo% > gMaxNumOfProds% THEN
  3498.  
  3499.            ERROR STFQUIT
  3500.         END IF       
  3501.         SelType$=Prods(ProdNo%).SelectedType        
  3502.         Reg_GetProdSelectedInstallType=SelType$ 
  3503. END FUNCTION
  3504.  
  3505. PUBLIC FUNCTION Reg_GetProdFullSize(ProdNo%) AS LONG
  3506.  
  3507.  
  3508.  
  3509.  
  3510. DIM FSize&
  3511.         FSize& = 0
  3512.         IF ProdNo% > gMaxNumOfProds% THEN
  3513.  
  3514.            ERROR STFQUIT
  3515.         END IF       
  3516.         FSize&=Prods(ProdNo%).FullSize        
  3517.         Reg_GetProdFullSize=FSize& 
  3518. END FUNCTION
  3519.  
  3520. PUBLIC FUNCTION Reg_GetProdMinSize(ProdNo%) AS LONG
  3521.  
  3522.  
  3523.  
  3524.  
  3525. DIM MSize&
  3526.         MSize& = 0
  3527.         IF ProdNo% > gMaxNumOfProds% THEN
  3528.  
  3529.            ERROR STFQUIT
  3530.         END IF       
  3531.         MSize&=Prods(ProdNo%).MinSize        
  3532.         Reg_GetProdMinSize=MSize& 
  3533. END FUNCTION
  3534.  
  3535. PUBLIC FUNCTION Reg_GetProdSupportForShare(ProdNo%) AS INTEGER
  3536.  
  3537.  
  3538.  
  3539.  
  3540.  
  3541. DIM SuppFlag%
  3542.         SuppFlag% = 0
  3543.         IF ProdNo% > gMaxNumOfProds% THEN
  3544.  
  3545.            ERROR STFQUIT
  3546.         END IF       
  3547.         SuppFlag%=Prods(ProdNo%).Share        
  3548.         Reg_GetProdSupportForShare=SuppFlag% 
  3549. END FUNCTION
  3550.  
  3551. PUBLIC FUNCTION Reg_GetProdSupportForDataLens(ProdNo%) AS INTEGER
  3552.  
  3553.  
  3554.  
  3555.  
  3556.  
  3557. DIM SuppFlag%
  3558.         SuppFlag% = 0
  3559.         IF ProdNo% > gMaxNumOfProds% THEN
  3560.  
  3561.            ERROR STFQUIT
  3562.         END IF       
  3563.         SuppFlag%=Prods(ProdNo%).DataLens        
  3564.         Reg_GetProdSupportForDataLens=SuppFlag% 
  3565. END FUNCTION
  3566.  
  3567. PUBLIC FUNCTION Reg_GetProdSupportForSQL(ProdNo%) AS INTEGER
  3568.  
  3569.  
  3570.  
  3571.  
  3572.  
  3573. DIM SuppFlag%
  3574.         SuppFlag% = 0
  3575.         IF ProdNo% > gMaxNumOfProds% THEN
  3576.  
  3577.            ERROR STFQUIT
  3578.         END IF       
  3579.         SuppFlag%=Prods(ProdNo%).SQL        
  3580.         Reg_GetProdSupportForSQL=SuppFlag% 
  3581. END FUNCTION
  3582.  
  3583. PUBLIC FUNCTION Reg_GetProdSupportForParadox(ProdNo%) AS INTEGER
  3584.  
  3585.  
  3586.  
  3587.  
  3588.  
  3589. DIM SuppFlag%
  3590.         SuppFlag% = 0
  3591.         IF ProdNo% > gMaxNumOfProds% THEN
  3592.  
  3593.            ERROR STFQUIT
  3594.         END IF       
  3595.         SuppFlag%=Prods(ProdNo%).Paradox        
  3596.         Reg_GetProdSupportForParadox=SuppFlag% 
  3597. END FUNCTION
  3598.  
  3599. PUBLIC FUNCTION Reg_GetCDOptionStr(ProdNo%,Inst%) AS STRING
  3600.  
  3601.  
  3602.  
  3603.  
  3604.  
  3605.  
  3606.  
  3607.  
  3608.  
  3609.  
  3610. DIM CDOptSym$,CDOptStr$,CDOptListLen%
  3611.         CDOptSym$ = ""
  3612.         CDOptStr$ = ""
  3613.         CDOptListLen% = 0
  3614.         IF ProdNo% > gMaxNumOfProds% THEN
  3615.  
  3616.            ERROR STFQUIT
  3617.         END IF       
  3618.         CDOptSym$=Prods(ProdNo%).CDOpt
  3619.         IF CDOptSym$ = "" THEN
  3620.  
  3621.            ERROR STFQUIT
  3622.         END IF       
  3623.         CDOptListLen%=GetListLength(CDOptSym$)
  3624.         IF Inst% > CDOptListLen% THEN
  3625.  
  3626.            ERROR STFQUIT
  3627.         END IF       
  3628.         CDOptStr$=GetListItem( CDOptSym$, Inst%)
  3629.         Reg_GetCDOptionStr=CDOptStr$
  3630. END FUNCTION
  3631.  
  3632. PUBLIC FUNCTION Reg_GetNodeOptionStr(ProdNo%,Inst%) AS STRING
  3633.  
  3634.  
  3635.  
  3636.  
  3637.  
  3638.  
  3639.  
  3640.  
  3641.  
  3642.  
  3643. DIM NodeOptSym$,NodeOptStr$,NodeOptListLen%
  3644.         NodeOptSym$ = ""
  3645.         NodeOptStr$ = ""
  3646.         NodeOptListLen% = 0
  3647.         IF ProdNo% > gMaxNumOfProds% THEN
  3648.  
  3649.            ERROR STFQUIT
  3650.         END IF       
  3651.         NodeOptSym$=Prods(ProdNo%).NodeOpt
  3652.         IF NodeOptSym$ = "" THEN
  3653.  
  3654.            ERROR STFQUIT
  3655.         END IF       
  3656.         NodeOptListLen%=GetListLength(NodeOptSym$)
  3657.         IF Inst% > NodeOptListLen% THEN
  3658.  
  3659.            ERROR STFQUIT
  3660.         END IF       
  3661.         NodeOptStr$=GetListItem( NodeOptSym$, Inst%)
  3662.         Reg_GetNodeOptionStr=NodeOptStr$
  3663. END FUNCTION
  3664.  
  3665. PUBLIC FUNCTION Reg_GetNumOfCDOptions(ProdNo%) AS INTEGER
  3666.  
  3667.  
  3668.  
  3669.  
  3670.  
  3671.  
  3672.  
  3673.  
  3674. DIM CDOptSym$,CDOptNum%
  3675.         CDOptSym$ = ""
  3676.         CDOptNum% = 0
  3677.         IF ProdNo% > gMaxNumOfProds% THEN
  3678.  
  3679.            ERROR STFQUIT
  3680.         END IF       
  3681.         CDOptSym$=Prods(ProdNo%).CDOpt
  3682.         IF CDOptSym$ = "" THEN
  3683.  
  3684.            ERROR STFQUIT
  3685.         END IF       
  3686.         CDOptNum%=GetListLength( CDOptSym$)
  3687.         Reg_GetNumOfCDOptions=CDOptNum%
  3688. END FUNCTION
  3689.  
  3690. PUBLIC FUNCTION Reg_GetNumOfNodeOptions(ProdNo%) AS INTEGER
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698. DIM NodeOptSym$,NodeOptNum%
  3699.         NodeOptSym$ = ""
  3700.         NodeOptNum% = 0
  3701.         IF ProdNo% > gMaxNumOfProds% THEN
  3702.  
  3703.            ERROR STFQUIT
  3704.         END IF       
  3705.         NodeOptSym$=Prods(ProdNo%).NodeOpt
  3706.         IF NodeOptSym$ = "" THEN
  3707.  
  3708.            ERROR STFQUIT
  3709.         END IF       
  3710.         NodeOptNum%=GetListLength( NodeOptSym$)
  3711.         Reg_GetNumOfNodeOptions=NodeOptNum%
  3712. END FUNCTION
  3713.  
  3714. PUBLIC FUNCTION Reg_GetProdSupportForSrv(ProdNo%) AS INTEGER
  3715.  
  3716.  
  3717.  
  3718.  
  3719.  
  3720. DIM SuppFlag%
  3721.         SuppFlag% = 0
  3722.         IF ProdNo% > gMaxNumOfProds% THEN
  3723.  
  3724.            ERROR STFQUIT
  3725.         END IF       
  3726.         SuppFlag%=Prods(ProdNo%).Srv        
  3727.         Reg_GetProdSupportForSrv=SuppFlag% 
  3728. END FUNCTION
  3729.  
  3730. PUBLIC FUNCTION Reg_GetProdSupportForDist(ProdNo%) AS INTEGER
  3731.  
  3732.  
  3733.  
  3734.  
  3735.  
  3736. DIM SuppFlag%
  3737.         SuppFlag% = 0
  3738.         IF ProdNo% > gMaxNumOfProds% THEN
  3739.  
  3740.            ERROR STFQUIT
  3741.         END IF       
  3742.         SuppFlag%=Prods(ProdNo%).Dist        
  3743.         Reg_GetProdSupportForDist=SuppFlag% 
  3744. END FUNCTION
  3745.  
  3746. PUBLIC FUNCTION Reg_GetProdSupportForLicense(ProdNo%) AS INTEGER
  3747.  
  3748.  
  3749.  
  3750.  
  3751.  
  3752. DIM SuppFlag%
  3753.         SuppFlag% = 0
  3754.         IF ProdNo% > gMaxNumOfProds% THEN
  3755.  
  3756.            ERROR STFQUIT
  3757.         END IF       
  3758.         SuppFlag%=Prods(ProdNo%).License        
  3759.         Reg_GetProdSupportForLicense=SuppFlag% 
  3760. END FUNCTION
  3761.  
  3762. PUBLIC FUNCTION Reg_IsLicenseSelected(ProdNo%) AS INTEGER
  3763.  
  3764.  
  3765.  
  3766.  
  3767.  
  3768. DIM SelFlag%
  3769.         SelFlag% = 0
  3770.         IF ProdNo% > gMaxNumOfProds% THEN
  3771.  
  3772.            ERROR STFQUIT
  3773.         END IF       
  3774.         SelFlag%=Prods(ProdNo%).LicenseSelected
  3775.         Reg_IsLicenseSelected=SelFlag% 
  3776. END FUNCTION
  3777.  
  3778. PUBLIC FUNCTION Reg_GetCountDirectory(ProdNo%)   AS STRING
  3779.  
  3780.  
  3781.  
  3782.  
  3783.  
  3784. DIM CountDir$
  3785.         CountDir$=""
  3786.         IF ProdNo% > gMaxNumOfProds% THEN
  3787.  
  3788.            ERROR STFQUIT
  3789.         END IF               
  3790.         CountDir$=Prods(ProdNo%).CountDirectory
  3791.         Reg_GetCountDirectory=CountDir$        
  3792. END FUNCTION
  3793.  
  3794. PUBLIC FUNCTION Reg_GetProdSupportForATM(ProdNo%) AS INTEGER
  3795.  
  3796.  
  3797.  
  3798.  
  3799.  
  3800. DIM SuppFlag%
  3801.         SuppFlag% = 0
  3802.         IF ProdNo% > gMaxNumOfProds% THEN
  3803.  
  3804.            ERROR STFQUIT
  3805.         END IF       
  3806.         SuppFlag%=Prods(ProdNo%).ATM        
  3807.         Reg_GetProdSupportForATM=SuppFlag% 
  3808. END FUNCTION
  3809.  
  3810. PUBLIC FUNCTION Reg_GetDirSymbolList(ProdNo%)   AS STRING
  3811.  
  3812.  
  3813.  
  3814.  
  3815.  
  3816. DIM DirList$
  3817.         DirList$=""
  3818.         IF ProdNo% > gMaxNumOfProds% THEN
  3819.  
  3820.            ERROR STFQUIT
  3821.         END IF               
  3822.         DirList$=Prods(ProdNo%).DirSymList
  3823.         Reg_GetDirSymbolList=DirList$        
  3824. END FUNCTION
  3825.  
  3826. PUBLIC FUNCTION Reg_GetProgManagerGroupName(ProdNo%)   AS STRING
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832. DIM ProdManagerGroupName$
  3833.         ProdManagerGroupName$=""
  3834.         IF ProdNo% > gMaxNumOfProds% THEN
  3835.  
  3836.            ERROR STFQUIT
  3837.         END IF               
  3838.         ProdManagerGroupName$=Prods(ProdNo%).ProgManagerGroup
  3839.         Reg_GetProgManagerGroupName=ProdManagerGroupName$        
  3840. END FUNCTION
  3841.  
  3842. PUBLIC FUNCTION Reg_GetNumOfDirectories(ProdNo%) AS INTEGER
  3843.  
  3844.  
  3845.  
  3846.  
  3847.  
  3848.  
  3849.  
  3850. DIM DirSym$,DirNum%
  3851.         DirSym$ = ""
  3852.         DirNum% = 0
  3853.         IF ProdNo% > gMaxNumOfProds% THEN
  3854.  
  3855.            ERROR STFQUIT
  3856.         END IF       
  3857.         DirSym$=Prods(ProdNo%).DirSymList
  3858.         IF DirSym$ = "" THEN
  3859.  
  3860.            ERROR STFQUIT
  3861.         END IF       
  3862.         DirNum%=GetListLength( DirSym$)
  3863.         Reg_GetNumOfDirectories=DirNum%
  3864. END FUNCTION
  3865.  
  3866. PUBLIC FUNCTION Reg_IsCDOptionSelected(ProdNo%,Inst%) AS STRING
  3867.  
  3868.  
  3869.  
  3870.  
  3871.  
  3872.  
  3873.  
  3874. DIM CDOptSelectedSym$,CDOptSel$,CDOptSelListLen%
  3875.         CDOptSelectedSym$ = ""
  3876.         CDOptSel$ = ""
  3877.         CDOptSelListLen% = 0
  3878.         IF ProdNo% > gMaxNumOfProds% THEN
  3879.  
  3880.            ERROR STFQUIT
  3881.         END IF       
  3882.         CDOptSelectedSym$=Prods(ProdNo%).CDOptSelected
  3883.         IF CDOptSelectedSym$ = "" THEN
  3884.  
  3885.            ERROR STFQUIT
  3886.         END IF       
  3887.         CDOptSelListLen%=GetListLength(CDOptSelectedSym$)
  3888.         IF Inst% > CDOptSelListLen% THEN
  3889.  
  3890.            ERROR STFQUIT
  3891.         END IF       
  3892.         CDOptSel$=GetListItem( CDOptSelectedSym$, Inst%)
  3893.         Reg_IsCDOptionSelected=CDOptSel$
  3894. END FUNCTION
  3895.  
  3896. PUBLIC FUNCTION Reg_IsNodeOptionSelected(ProdNo%,Inst%) AS STRING
  3897.  
  3898.  
  3899.  
  3900.  
  3901.  
  3902.  
  3903.  
  3904. DIM NodeOptSelectedSym$,NodeOptSel$,NodeOptSelListLen%
  3905.         NodeOptSelectedSym$ = ""
  3906.         NodeOptSel$ = ""
  3907.         NodeOptSelListLen% = 0
  3908.         IF ProdNo% > gMaxNumOfProds% THEN
  3909.  
  3910.            ERROR STFQUIT
  3911.         END IF       
  3912.         NodeOptSelectedSym$=Prods(ProdNo%).NodeOptSelected
  3913.         IF NodeOptSelectedSym$ = "" THEN
  3914.  
  3915.            ERROR STFQUIT
  3916.         END IF       
  3917.         NodeOptSelListLen%=GetListLength(NodeOptSelectedSym$)
  3918.         IF Inst% > NodeOptSelListLen% THEN
  3919.  
  3920.            ERROR STFQUIT
  3921.         END IF       
  3922.         NodeOptSel$=GetListItem( NodeOptSelectedSym$, Inst%)
  3923.         Reg_IsNodeOptionSelected=NodeOptSel$
  3924. END FUNCTION
  3925.  
  3926. PUBLIC FUNCTION Reg_IsNodeOptionDefaultSelected(ProdNo%,Inst%) AS STRING
  3927.  
  3928.  
  3929.  
  3930.  
  3931.  
  3932.  
  3933.  
  3934. DIM NodeOptSelectedDefaultSym$,NodeOptSelDefault$,NodeOptSelDefaultListLen%
  3935.         NodeOptSelectedDefaultSym$ = ""
  3936.         NodeOptSelDefault$ = ""
  3937.         NodeOptSelDefaultListLen% = 0
  3938.         IF ProdNo% > gMaxNumOfProds% THEN
  3939.  
  3940.            ERROR STFQUIT
  3941.         END IF       
  3942.         NodeOptSelectedDefaultSym$=Prods(ProdNo%).NodeOptDefaultSelected
  3943.         IF NodeOptSelectedDefaultSym$ = "" THEN
  3944.  
  3945.            ERROR STFQUIT
  3946.         END IF       
  3947.         NodeOptSelDefaultListLen%=GetListLength(NodeOptSelectedDefaultSym$)
  3948.         IF Inst% > NodeOptSelDefaultListLen% THEN
  3949.  
  3950.            ERROR STFQUIT
  3951.         END IF       
  3952.         NodeOptSelDefault$=GetListItem( NodeOptSelectedDefaultSym$, Inst%)
  3953.         Reg_IsNodeOptionDefaultSelected=NodeOptSelDefault$
  3954. END FUNCTION
  3955.  
  3956. PUBLIC FUNCTION Reg_IsCDOptionDefaultSelected(ProdNo%,Inst%) AS STRING
  3957.  
  3958.  
  3959.  
  3960.  
  3961.  
  3962.  
  3963.  
  3964. DIM CDOptSelectedDefaultSym$,CDOptSelDefault$,CDOptSelDefaultListLen%
  3965.         CDOptSelectedDefaultSym$ = ""
  3966.         CDOptSelDefault$ = ""
  3967.         CDOptSelDefaultListLen% = 0
  3968.         IF ProdNo% > gMaxNumOfProds% THEN
  3969.  
  3970.            ERROR STFQUIT
  3971.         END IF       
  3972.         CDOptSelectedDefaultSym$=Prods(ProdNo%).CDOptDefaultSelected
  3973.         IF CDOptSelectedDefaultSym$ = "" THEN
  3974.  
  3975.            ERROR STFQUIT
  3976.         END IF       
  3977.         CDOptSelDefaultListLen%=GetListLength(CDOptSelectedDefaultSym$)
  3978.         IF Inst% > CDOptSelDefaultListLen% THEN
  3979.  
  3980.            ERROR STFQUIT
  3981.         END IF       
  3982.         CDOptSelDefault$=GetListItem( CDOptSelectedDefaultSym$, Inst%)
  3983.         Reg_IsCDOptionDefaultSelected=CDOptSelDefault$
  3984. END FUNCTION
  3985.  
  3986.  
  3987.  
  3988.  
  3989.  
  3990.  
  3991.  
  3992. PUBLIC SUB Reg_SetSystemFileSize(ProdNo%,Size&)
  3993.  
  3994.  
  3995.  
  3996.  
  3997.  
  3998.  
  3999.    IF ProdNo% > gMaxNumOfProds% THEN
  4000.       
  4001.       ERROR STFQUIT
  4002.    END IF
  4003.  
  4004.     Prods(ProdNo%).SystemFileSize = Size&
  4005.  
  4006. END SUB
  4007.  
  4008. PUBLIC FUNCTION Reg_GetSystemFileSize(ProdNo%) AS LONG
  4009.  
  4010.  
  4011.  
  4012.  
  4013.  
  4014.  
  4015.    IF ProdNo% > gMaxNumOfProds% THEN
  4016.       
  4017.       ERROR STFQUIT
  4018.    END IF
  4019.  
  4020.    Reg_GetSystemFileSize = Prods(ProdNo%).SystemFileSize
  4021.  
  4022. END FUNCTION
  4023.  
  4024. PUBLIC FUNCTION Reg_GetBillboardNumber(ProdNo%)   AS INTEGER
  4025.  
  4026.  
  4027.  
  4028.  
  4029.  
  4030. DIM BBNum%
  4031.         BBNum%=0
  4032.         IF ProdNo% > gMaxNumOfProds% THEN
  4033.  
  4034.            ERROR STFQUIT
  4035.         END IF               
  4036.         BBNum%=Prods(ProdNo%).BillboardNumber
  4037.         Reg_GetBillboardNumber=BBNum%        
  4038. END FUNCTION
  4039.  
  4040. PUBLIC FUNCTION Lot_GetCurrentProduct() AS INTEGER
  4041.  
  4042.  
  4043.  
  4044.  
  4045.    Lot_GetCurrentProduct = gCurrentProduct%
  4046. END FUNCTION
  4047.  
  4048. PUBLIC SUB Lot_SetCurrentProduct(ProdNo%) 
  4049.  
  4050.  
  4051.  
  4052.    IF ProdNo% > gMaxNumOfProds% THEN
  4053.  
  4054.       ERROR STFQUIT
  4055.    END IF
  4056.    gCurrentProduct% = ProdNo%
  4057. END SUB
  4058.  
  4059. PUBLIC FUNCTION Lot_GetInstallDir() AS STRING
  4060.  
  4061.  
  4062.  
  4063.  
  4064.    DIM s$, network$
  4065.  
  4066.    s$ = GetSymbolValue(SYM_SINGLESMARTSUITE$)
  4067.    network$ = GetSymbolValue(SYM_NETWORK$)
  4068.    IF network$ <> gNODE THEN
  4069.       IF s$ = gSMARTSUITE$ THEN
  4070.          Lot_GetInstallDir = GetSymbolValue(SYM_BASEDIR$)
  4071.       ELSE
  4072.          s$ = Reg_GetDirSymbolList(1)     
  4073.          s$ = GetListItem(s$,1)           
  4074.          Lot_GetInstallDir = GetSymbolValue(s$)
  4075.       END IF
  4076.    ELSE
  4077.          Lot_GetInstallDir = GetSymbolValue(SYM_STF_SRCDIR$)
  4078.    END IF
  4079.  
  4080. END FUNCTION
  4081.  
  4082.  
  4083.  
  4084.  
  4085.  
  4086.  
  4087.  
  4088.  
  4089.  
  4090.  
  4091. PUBLIC FUNCTION Lot_GetTheRealProdDir(prodno%) AS STRING
  4092.    DIM sym$, prodsym$, progdir$, basedir$, l%, m%, disks$, dlen%
  4093.    
  4094.    If GetSymbolValue(SYM_NETWORK$) <> gNODE$ Then
  4095.       sym$ = Reg_GetDirSymbolList(prodno%)
  4096.       prodsym$ = GetListItem(sym$, 1)
  4097.       progdir$ = GetListItem(prodsym$,1)
  4098.    Else
  4099.       If GetSymbolValue (SYM_SINGLESMARTSUITE) =  gSINGLE$ Then
  4100.         disks$ = GetSymbolValue(SYM_INSTALL_SOURCE$)
  4101.         dlen% = LEN(disks$)
  4102.         If dlen% <=0 Then
  4103.            disks$ = GetSymbolValue(SYM_STF_SRCDIR$)
  4104.            dlen% = LEN(disks$)
  4105.          End If
  4106.         If MID$(disks$,dlen%,1) <> "\" Then
  4107.            disks$ = disks$ + "\"
  4108.         End If
  4109.         progdir$ = disks$
  4110.       Else
  4111.         
  4112.         
  4113.  
  4114.  
  4115.  
  4116.  
  4117.         sym$ = Reg_GetDirSymbolList(prodno%)
  4118.         prodsym$ = GetListItem(sym$, 1)
  4119.         progdir$ = GetListItem(prodsym$,1)
  4120.         basedir$ = GetSymbolValue (SYM_BASEDIR$)
  4121.         l% = INSTR(progdir$, basedir$)
  4122.         
  4123.         l% = INSTR(l%, progdir$, "\")
  4124.         m% = INSTR(l%, progdir$, "\")
  4125.  
  4126.         progdir$ = GetSymbolValue (SYM_INSTALL_SOURCE) +_
  4127.                    RIGHT$( LEFT$ (progdir$, m%), l%)
  4128.                    
  4129.       End If
  4130.    End If
  4131.  
  4132.    Lot_GetTheRealProdDir = progdir$
  4133.  
  4134. END FUNCTION
  4135.  
  4136.  
  4137.  
  4138.  
  4139.  
  4140.  
  4141.  
  4142.  
  4143.  
  4144.  
  4145.  
  4146. PUBLIC FUNCTION Lot_ReadSerialNumber () AS INTEGER
  4147.  
  4148.    DIM buf1 AS STRING : buf1 = String$(18,0)
  4149.    DIM snpath$, rc%
  4150.  
  4151.    snpath$ = GetSymbolValue(SYM_STF_SRCDIR$)
  4152.    rc% = ReadSerialNumber(snpath$,buf1$)
  4153.    If rc% = 0 Then
  4154.       SetSymbolValue SYM_SERIALNUM$, LEFT$(buf1$, INSTR(buf1$, CHR$(0)))
  4155.       Lot_ReadSerialNumber = SUCCESS
  4156.    Else
  4157.       ErrorMsg SID_ERR_READSERIAL, ""
  4158.       Lot_ReadSerialNumber = FAILURE
  4159.    end if 
  4160.  
  4161. END FUNCTION
  4162.  
  4163.  
  4164.  
  4165.  
  4166.  
  4167.  
  4168.  
  4169.  
  4170.  
  4171.  
  4172. PUBLIC FUNCTION Lot_TrimEndSlash (path$) AS STRING
  4173.  
  4174.    DIM l%
  4175.  
  4176.    l% = LEN(path$)
  4177.    If MID$(path$, l%, 1) = "\" Then
  4178.       Lot_TrimEndSlash = LEFT$ (path$, l%-1)
  4179.    Else
  4180.       Lot_TrimEndSlash = path$
  4181.    End If
  4182.  
  4183. END FUNCTION
  4184.  
  4185. PUBLIC FUNCTION Lot_AreShareToolsSupported () AS INTEGER
  4186.  
  4187.  
  4188.  
  4189.  
  4190.  
  4191.  
  4192.  
  4193.    DIM NumberOfProducts%,count%,ShareSupport%
  4194.  
  4195.    ShareSupport%=0
  4196.    
  4197.    NumberOfProducts%=Reg_GetNumberOfProducts()
  4198.    IF(NumberOfProducts%<>0) THEN
  4199.       
  4200.       FOR count%=1 TO NumberOfProducts%
  4201.          IF Reg_GetProdSupportForShare(count%)=1 THEN
  4202.             ShareSupport%=1
  4203.             EXIT FOR
  4204.          END IF
  4205.       NEXT
  4206.    END IF
  4207.    Lot_AreShareToolsSupported=ShareSupport%
  4208. END FUNCTION
  4209.  
  4210. PUBLIC Lot_CallShareExec_RC%
  4211. PUBLIC FUNCTION Lot_CallSharedTool (func$) AS INTEGER
  4212.  
  4213.  
  4214.  
  4215.  
  4216.  
  4217.  
  4218.  
  4219.  
  4220. DIM notused%
  4221.    Lot_CallSharedTool = 0
  4222.    IF Lot_AreShareToolsSupported () = 1 THEN
  4223.       
  4224.       gEndStatementEncountered% = FALSE
  4225.       EXECUTE(|USE "SHARE" : Lot_CallShareExec_RC% = | & func$)
  4226.  
  4227.       
  4228.       
  4229.       
  4230.       
  4231.  
  4232.       IF gEndStatementEncountered% = TRUE THEN
  4233.          END                       
  4234.       END IF
  4235.  
  4236.       Lot_CallSharedTool = Lot_CallShareExec_RC%
  4237.    END IF
  4238.  
  4239. END FUNCTION
  4240.  
  4241.  
  4242. PUBLIC SUB SetRestartDir (szDir$) 
  4243.  
  4244.  
  4245.  
  4246.  
  4247.  
  4248.  
  4249.  
  4250.     IF FSetRestartDir(szDir$) = FALSE THEN
  4251.         ErrorMsg SID_ERR_SETRESTARTDIR, ""
  4252.         ERROR STFQUIT
  4253.     END IF
  4254.  
  4255. END SUB
  4256.  
  4257. PUBLIC FUNCTION RestartListEmpty  AS INTEGER
  4258.  
  4259.  
  4260.  
  4261.  
  4262.  
  4263.  
  4264.  
  4265.     IF FRestartListEmpty() = FALSE THEN
  4266.         RestartListEmpty = FALSE
  4267.     ELSE
  4268.         RestartListEmpty = TRUE
  4269.     END IF
  4270.  
  4271. END FUNCTION
  4272.  
  4273. PUBLIC FUNCTION ExitExecRestart  AS INTEGER
  4274.  
  4275.  
  4276.  
  4277.  
  4278.  
  4279.  
  4280.  
  4281.     ExitExecRestart = FExitExecRestart()
  4282.  
  4283. END FUNCTION
  4284.  
  4285.  
  4286.  
  4287.  
  4288.  
  4289.  
  4290.  
  4291.  
  4292.  
  4293.  
  4294.  
  4295.  
  4296.  
  4297.  
  4298.  
  4299.  
  4300.  
  4301.  
  4302.  
  4303.  
  4304.  
  4305.  
  4306.  
  4307.  
  4308.  
  4309.  
  4310.  
  4311.  
  4312.  
  4313.  
  4314.  
  4315.  
  4316.  
  4317.  
  4318.  
  4319.  
  4320. PUBLIC FUNCTION Lot_WhereIsFeature(prodno%, featureId$, filetolookfor$) AS STRING
  4321.    DIM network$, dirsym$, chpt$, destdir$,s$,InorOut%,subdir$,installIniFile$
  4322.    
  4323.    network$ = GetSymbolValue(SYM_NETWORK$)
  4324.    s$ = GetSymbolValue(SYM_SINGLESMARTSUITE$)
  4325.  
  4326.    
  4327.    
  4328.    IF s$ = gSMARTSUITE$ THEN
  4329.  
  4330.       
  4331.       IF network$ = gSTANDARD$ THEN
  4332.          IF Lot_IsTheFeatureInstalled(featureId$) = 0 GOTO MAYBESUITCD
  4333.          
  4334.          chpt$ = Lot_GetChapterFromKeyWord(featureId$)
  4335.          IF chpt$ = "" GOTO NOFEATURE
  4336.          
  4337.          InorOut% = Lot_GetChapterValInt(chpt$, F_INOROUT)
  4338.          IF InorOut%=0 GOTO MAYBESUITCD
  4339.          
  4340.          dirsym$ = Lot_GetChapterValStr(chpt$, F_DESTDIRSYM)
  4341.          IF dirsym$ = "" GOTO NOFEATURE
  4342.          
  4343.          destdir$ = GetSymbolValue(dirsym$)
  4344.          IF destdir$ = "" GOTO NOFEATURE
  4345.          IF DoesFileExist(destdir$+filetolookfor$,femExists) = 0 GOTO MAYBESUITCD
  4346.          
  4347.          Lot_WhereIsFeature = destdir$
  4348.          EXIT FUNCTION
  4349.  
  4350.  
  4351.       
  4352.       ELSEIF network$ = gNODE$ THEN
  4353.          IF Lot_IsTheFeatureInstalled(featureId$) = 0 GOTO MAYBESUITCD
  4354.          
  4355.          chpt$ = Lot_GetChapterFromKeyWord(featureId$)
  4356.          
  4357.          IF chpt$ <> "" THEN
  4358.             
  4359.             InorOut% = Lot_GetChapterValInt(chpt$, F_INOROUT)
  4360.             IF InorOut%=0 GOTO LOOKONSUITSRV
  4361.             
  4362.             dirsym$ = Lot_GetChapterValStr(chpt$, F_DESTDIRSYM)
  4363.             destdir$ = GetSymbolValue(dirsym$)
  4364.             IF DoesFileExist(destdir$+filetolookfor$,femExists) <> 0 THEN 
  4365.                
  4366.                Lot_WhereIsFeature = destdir$
  4367.                EXIT FUNCTION
  4368.             ELSE 
  4369.                GOTO LOOKONSUITSRV
  4370.             END IF
  4371.          ELSE 
  4372.             GOTO LOOKONSUITSRV
  4373.          END IF
  4374.  
  4375.  
  4376.       
  4377.       ELSEIF network$ = gSERVER$ THEN
  4378.          IF Lot_IsTheFeatureInstalled(featureId$) = 0 GOTO MAYBESUITCD
  4379.          
  4380.          chpt$ = Lot_GetChapterFromKeyWord(featureId$)
  4381.          IF chpt$ = "" GOTO MAYBESUITCD
  4382.          
  4383.          InorOut% = Lot_GetChapterValInt(chpt$, F_INOROUT)
  4384.          IF InorOut%=0 GOTO MAYBESUITCD
  4385.          
  4386.          dirsym$ = Lot_GetChapterValStr(chpt$, F_DESTDIRSYM)
  4387.          IF dirsym$ = "" GOTO MAYBESUITCD
  4388.          
  4389.          destdir$ = GetSymbolValue(dirsym$)
  4390.          IF DoesFileExist(destdir$+filetolookfor$,femExists) = 0 GOTO MAYBESUITCD
  4391.          
  4392.          Lot_WhereIsFeature = destdir$
  4393.          EXIT FUNCTION
  4394.  
  4395.  
  4396.       
  4397.       ELSE  
  4398.          GOTO NOFEATURE
  4399.       END IF
  4400.  
  4401.    
  4402.    
  4403.    ELSEIF s$ = gSINGLE$ THEN
  4404.  
  4405.       
  4406.       IF network$ = gSTANDARD$ THEN
  4407.          IF Lot_IsTheFeatureInstalled(featureId$) = 0 GOTO MAYBESINGLECD
  4408.          
  4409.          chpt$ = Lot_GetChapterFromKeyWord(featureId$)
  4410.          IF chpt$ = "" GOTO NOFEATURE
  4411.          
  4412.          InorOut% = Lot_GetChapterValInt(chpt$, F_INOROUT)
  4413.          IF InorOut%=0 GOTO MAYBESINGLECD
  4414.          
  4415.          dirsym$ = Lot_GetChapterValStr(chpt$, F_DESTDIRSYM)
  4416.          IF dirsym$ = "" GOTO NOFEATURE
  4417.          
  4418.          destdir$ = GetSymbolValue(dirsym$)
  4419.          IF destdir$ = "" GOTO NOFEATURE
  4420.          IF DoesFileExist(destdir$+filetolookfor$,femExists) = 0 GOTO MAYBESINGLECD
  4421.          
  4422.          Lot_WhereIsFeature = destdir$
  4423.          EXIT FUNCTION
  4424.  
  4425.       
  4426.       ELSEIF network$ = gNODE$ THEN
  4427.          IF Lot_IsTheFeatureInstalled(featureId$) = 0 GOTO MAYBESINGLECD
  4428.          
  4429.          chpt$ = Lot_GetChapterFromKeyWord(featureId$)
  4430.          
  4431.          IF chpt$ <> "" THEN
  4432.             
  4433.             InorOut% = Lot_GetChapterValInt(chpt$, F_INOROUT)
  4434.             IF InorOut%=0 GOTO LOOKONSINGLESRV
  4435.             
  4436.             dirsym$ = Lot_GetChapterValStr(chpt$, F_DESTDIRSYM)
  4437.             destdir$ = GetSymbolValue(dirsym$)
  4438.             IF DoesFileExist(destdir$+filetolookfor$,femExists) <> 0 THEN 
  4439.                
  4440.                Lot_WhereIsFeature = destdir$
  4441.                EXIT FUNCTION
  4442.             ELSE 
  4443.                GOTO LOOKONSINGLESRV
  4444.             END IF
  4445.          ELSE 
  4446.             GOTO LOOKONSINGLESRV
  4447.          END IF
  4448.  
  4449.        
  4450.       ELSEIF network$ = gSERVER$ THEN
  4451.          IF Lot_IsTheFeatureInstalled(featureId$) = 0 GOTO MAYBESINGLECD
  4452.          
  4453.          chpt$ = Lot_GetChapterFromKeyWord(featureId$)
  4454.          IF chpt$ = "" GOTO MAYBESINGLECD
  4455.          
  4456.          InorOut% = Lot_GetChapterValInt(chpt$, F_INOROUT)
  4457.          IF InorOut%=0 GOTO MAYBESINGLECD
  4458.          
  4459.          dirsym$ = Lot_GetChapterValStr(chpt$, F_DESTDIRSYM)
  4460.          IF dirsym$ = "" GOTO MAYBESINGLECD
  4461.          
  4462.          destdir$ = GetSymbolValue(dirsym$)
  4463.          IF DoesFileExist(destdir$+filetolookfor$,femExists) = 0 GOTO MAYBESINGLECD
  4464.          
  4465.          Lot_WhereIsFeature = destdir$
  4466.          EXIT FUNCTION
  4467.  
  4468.       
  4469.       ELSE  
  4470.          GOTO NOFEATURE
  4471.       END IF
  4472.    END IF
  4473.  
  4474.  
  4475.    Exit Function
  4476.    LOOKONSINGLESRV:
  4477.       destdir$ = GetSymbolValue(SYM_INSTALL_SOURCE$)
  4478.       IF destdir$ = ""  THEN  destdir$ = GetSymbolValue(SYM_STF_SRCDIR$)
  4479.       IF DoesFileExist(destdir$+filetolookfor$,femExists) = 0 GOTO LOOKONNETLOTUSAPP
  4480.       Lot_WhereIsFeature = destdir$
  4481.       EXIT FUNCTION
  4482.  
  4483.    LOOKONSUITSRV:
  4484.       destdir$ = GetSymbolValue(SYM_INSTALL_SOURCE$)
  4485.       IF destdir$ = ""  THEN  destdir$ = GetSymbolValue(SYM_STF_SRCDIR$)
  4486.       installIniFile$ = MakePath(destdir$,gINSTALLINI$)
  4487.       subdir$ = GetIniKeyString(installIniFile$,"Destination Directories", Reg_GetProductAcronym(prodno%))
  4488.       IF DoesFileExist(destdir$+subdir$+filetolookfor$,femExists) = 0 GOTO LOOKONNETLOTUSAPP
  4489.       Lot_WhereIsFeature = destdir$+subdir$
  4490.       EXIT FUNCTION
  4491.  
  4492.    LOOKONNETLOTUSAPP:
  4493.       destdir$ = GetSymbolValue(SYM_NETLOTUSAPP$)
  4494.       IF DoesFileExist(destdir$+filetolookfor$,femExists) = 0 GOTO NOFEATURE
  4495.       Lot_WhereIsFeature = destdir$
  4496.       EXIT FUNCTION
  4497.  
  4498.   
  4499.    MAYBESINGLECD:
  4500.       
  4501.    MAYBESUITCD:
  4502.       
  4503.  
  4504.    NOFEATURE:        
  4505.       Lot_WhereIsFeature = ""
  4506.  
  4507. END FUNCTION
  4508.  
  4509.  
  4510.  
  4511. PUBLIC FUNCTION Lot_IsTheFeatureInstalled(FeatureToFind$) AS INTEGER
  4512.  
  4513.  
  4514.  
  4515.  
  4516.  
  4517.  
  4518.  
  4519.  
  4520.  
  4521.    DIM NetworkIns$ 
  4522.  
  4523.    
  4524.    NetworkIns$ = GetSymbolValue(SYM_NETWORK$)
  4525.  
  4526.    PopulateCINSTALLLIST
  4527.  
  4528.    IF NetworkIns$ <> gDISTRIBUTION THEN
  4529.  
  4530.       If ISELEMENT(CINSTALL(FeatureToFind$)) <> FALSE Then
  4531.          Lot_IsTheFeatureInstalled = 1
  4532.       Else
  4533.          Lot_IsTheFeatureInstalled = 0
  4534.       End If
  4535.    Else
  4536.       Lot_IsTheFeatureInstalled = 0
  4537.    End If
  4538.  END FUNCTION
  4539.  
  4540. PUBLIC FUNCTION Lot_SaveFeaturesInstaledInInstallIni() AS INTEGER
  4541.  
  4542.  
  4543.  
  4544.  
  4545.  
  4546.  
  4547.  
  4548.  
  4549.  
  4550.  
  4551.  
  4552.  
  4553.    DIM NetworkIns$, prodDir$, gInstallIniFile$, CurrChpt$, FeatureName$
  4554.    DIM FeatureNum%,s$,AllProdNum%,prodNum%,ProdAcronym$,BaseDir$,symList$
  4555.    DIM prodsym$,progdir$
  4556.  
  4557.    
  4558.    NetworkIns$ = GetSymbolValue(SYM_NETWORK$)
  4559.    IF NetworkIns$=gSERVER$ OR NetworkIns$=gSTANDARD THEN
  4560.  
  4561.       
  4562.       prodDir$ = Lot_GetInstallDir()
  4563.       gInstallIniFile$ = MakePath(prodDir$,gINSTALLINI$)
  4564.  
  4565.       PopulateCINSTALLLIST
  4566.  
  4567.       
  4568.      CurrChpt$ = Lot_GetFirst("", F_INOROUT) 
  4569.      WHILE (CurrChpt$ <> "")
  4570.         
  4571.         FeatureName$ = Lot_GetChapterValStr(CurrChpt$, F_KEYWORD)
  4572.         If ISELEMENT(CINSTALL(FeatureName$)) = FALSE Then
  4573.            FeatureNum% = gNCINSTALL%    
  4574.            CreateIniKeyValue gInstallIniFile$, "Server Feature Installed", "Feature"+LTRIM$(STR$(FeatureNum%+1)),FeatureName$, cmoOverwrite
  4575.            CINSTALL (FeatureName$) = "1"
  4576.            gNCINSTALL% = gNCINSTALL%+1
  4577.         END IF
  4578.         CurrChpt$ = Lot_GetNext() 
  4579.      WEND       
  4580.  
  4581.    END IF
  4582.    s$ = GetSymbolValue(SYM_SINGLESMARTSUITE$)
  4583.  
  4584.    
  4585.    IF NetworkIns$=gSERVER$ AND s$ = gSMARTSUITE$ THEN
  4586.       
  4587.       AllProdNum% = 0
  4588.       AllProdNum% = Reg_GetNumberOfProducts()
  4589.       IF AllProdNum% <> 0 THEN
  4590.          BaseDir$= GetSymbolValue(SYM_BASEDIR$)
  4591.          FOR prodNum%=1 TO AllProdNum%
  4592.             ProdAcronym$ = Reg_GetProductAcronym(prodNum%)
  4593.             
  4594.             symList$ = Reg_GetDirSymbolList(prodNum%)
  4595.             prodsym$ = GetListItem(symList$, 1)
  4596.             progdir$ = GetListItem(prodsym$,1)
  4597.             IF LEN(BaseDir$) < LEN(progdir$) THEN
  4598.                CreateIniKeyValue gInstallIniFile$, "Destination Directories", ProdAcronym$,MID(progdir$,LEN(BaseDir$)+1), cmoOverwrite
  4599.             END IF
  4600.          NEXT
  4601.       END IF
  4602.  
  4603.    END IF
  4604.  
  4605.    Lot_SaveFeaturesInstaledInInstallIni = SUCCESS
  4606. END FUNCTION
  4607.  
  4608.  
  4609. FUNCTION Lot_GetLastFeatureNumber() AS INTEGER
  4610.  
  4611.  
  4612.  
  4613.  
  4614.  
  4615.  
  4616.    DIM NetworkIns$, prodDir$, gInstallIniFile$, FeaturePref$
  4617.    DIM FeatureTag$, FeatureID$, rc%
  4618.    STATIC FeatureNumber%
  4619.  
  4620.    
  4621.    NetworkIns$ = GetSymbolValue(SYM_NETWORK$)
  4622.  
  4623.    IF NetworkIns$=gSERVER$ OR NetworkIns$=gSTANDARD$ THEN
  4624.  
  4625.       
  4626.       prodDir$ = Lot_GetInstallDir()
  4627.       gInstallIniFile$ = MakePath(prodDir$,gINSTALLINI$)
  4628.  
  4629.       FeaturePref$ = "Feature"
  4630.       FeatureNumber%=1
  4631.       FeatureTag$=FeaturePref$+LTRIM$(STR$(FeatureNumber%))
  4632.       FeatureID$ = GetIniKeyString(gInstallIniFile$,"Server Feature Installed", FeatureTag$)
  4633.  
  4634.       rc% = DoesFileExist(gInstallIniFile$,femExists)
  4635.       IF rc% = 1 THEN
  4636.          IF FeatureID$ = "" THEN
  4637.             Lot_GetLastFeatureNumber = 0
  4638.             EXIT FUNCTION
  4639.          ELSE   
  4640.             WHILE (FeatureID$ <> "")
  4641.                FeatureNumber% = FeatureNumber% + 1
  4642.                FeatureTag$=FeaturePref$+LTRIM$(STR$(FeatureNumber%))
  4643.                FeatureID$ = GetIniKeyString(gInstallIniFile$,"Server Feature Installed", FeatureTag$)
  4644.  
  4645.             WEND
  4646.             Lot_GetLastFeatureNumber = FeatureNumber%-1
  4647.  
  4648.             EXIT FUNCTION
  4649.         END IF
  4650.          
  4651.      ELSE
  4652.         
  4653.         
  4654.         FatalErrorMsg SID_ERR_INSTALLINI_MISSING, "", STFQUIT
  4655.         
  4656.      END IF
  4657.    END IF
  4658.  END FUNCTION
  4659.  
  4660.  
  4661. PUBLIC FUNCTION Lot_SaveTheNodeOptionsInInstallIni() AS INTEGER
  4662.  
  4663.  
  4664.  
  4665.  
  4666.  
  4667.  
  4668.  
  4669.  
  4670.    DIM NetworkIns$, prodDir$, gInstallIniFile$, OptName$
  4671.    DIM OptCount%, prodNum%, AllProdNum%, ProdAcronym$, AllOptNum%, OptNum%
  4672.  
  4673.    
  4674.    NetworkIns$ = GetSymbolValue(SYM_NETWORK$)
  4675.    IF NetworkIns$=gSERVER$ THEN
  4676.  
  4677.       
  4678.       prodDir$ = Lot_GetInstallDir()
  4679.       gInstallIniFile$ = MakePath(prodDir$,gINSTALLINI$)
  4680.  
  4681.       
  4682.       AllProdNum% = 0
  4683.       AllProdNum% = Reg_GetNumberOfProducts()
  4684.       IF AllProdNum% <> 0 THEN
  4685.          FOR prodNum%=1 TO AllProdNum%
  4686.             AllOptNum% = 0
  4687.             AllOptNum% = Reg_GetNumofNodeOptions(prodNum%)
  4688.             IF AllOptNum% <> 0 THEN
  4689.                ProdAcronym$ = Reg_GetProductAcronym(prodNum%)
  4690.                
  4691.                FOR OptNum%=1 TO AllOptNum% 
  4692.                   IF Reg_IsNodeOptionSelected(prodNum%,OptNum%)=STR(1) THEN
  4693.                      OptName$ = Reg_GetNodeOptionStr(prodNum%,OptNum%)
  4694.                      IF OptName$ <> "" AND FIsKeywordinCopyList (OptName$) <> FALSE THEN
  4695.                         OptCount% = Lot_GetLastNodeOptNumber(ProdAcronym$)
  4696.                         CreateIniKeyValue gInstallIniFile$, ProdAcronym$+" Node Options", "Option"+LTRIM$(STR$(OptCount%+1)),OptName$, cmoOverwrite
  4697.                      END IF
  4698.                   END IF
  4699.                NEXT
  4700.             END IF
  4701.  
  4702.          NEXT
  4703.       END IF
  4704.    END IF
  4705.    Lot_SaveTheNodeOptionsInInstallIni = SUCCESS
  4706. END FUNCTION
  4707.  
  4708.  
  4709. FUNCTION Lot_GetLastNodeOptNumber(ProdAcronym$) AS INTEGER
  4710.  
  4711.  
  4712.  
  4713.  
  4714.  
  4715.  
  4716.    DIM NetworkIns$, prodDir$, gInstallIniFile$
  4717.    DIM OptTag$, OptID$, OptPref$, rc%
  4718.    STATIC OptNumber%
  4719.  
  4720.    
  4721.    NetworkIns$ = GetSymbolValue(SYM_NETWORK$)
  4722.  
  4723.    IF NetworkIns$=gSERVER$ THEN
  4724.  
  4725.       
  4726.       prodDir$ = Lot_GetInstallDir()
  4727.       gInstallIniFile$ = MakePath(prodDir$,gINSTALLINI$)
  4728.  
  4729.       OptPref$ = "Option"
  4730.       OptNumber%=1
  4731.       OptTag$=OptPref$+LTRIM$(STR$(OptNumber%))
  4732.       OptID$ = GetIniKeyString(gInstallIniFile$,ProdAcronym$+" Node Options", OptTag$)
  4733.       rc% = DoesFileExist(gInstallIniFile$,femExists)
  4734.       IF rc% = 1 THEN
  4735.          IF OptID$ = "" THEN
  4736.             Lot_GetLastNodeOptNumber = 0
  4737.             EXIT FUNCTION
  4738.          ELSE   
  4739.             WHILE (OptID$ <> "")
  4740.                OptNumber% = OptNumber% + 1
  4741.                OptTag$=OptPref$+LTRIM$(STR$(OptNumber%))
  4742.                OptID$ = GetIniKeyString(gInstallIniFile$,ProdAcronym$+" Node Options", OptTag$)
  4743.             WEND
  4744.             Lot_GetLastNodeOptNumber = OptNumber%-1
  4745.             EXIT FUNCTION
  4746.         END IF
  4747.          
  4748.      ELSE
  4749.         
  4750.         
  4751.         FatalErrorMsg SID_ERR_INSTALLINI_MISSING, "", STFQUIT
  4752.         
  4753.      END IF
  4754.    END IF
  4755.  END FUNCTION
  4756.  
  4757.  
  4758. PUBLIC FUNCTION Lot_IsTheNodeOptionsAvailToNode(prodNum%,OptName$) AS INTEGER
  4759.  
  4760.  
  4761.  
  4762.  
  4763.  
  4764.  
  4765.  
  4766.    DIM NetworkIns$, prodDir$, gInstallIniFile$, ProdAcronym$
  4767.    DIM OptTag$, OptID$, OptPref$, OptNumber%, rc%
  4768.  
  4769.    
  4770.    NetworkIns$ = GetSymbolValue(SYM_NETWORK$)
  4771.    IF NetworkIns$=gNODE$ THEN
  4772.  
  4773.       
  4774.       prodDir$ = Lot_GetInstallDir()
  4775.       gInstallIniFile$ = MakePath(prodDir$,gINSTALLINI$)
  4776.       ProdAcronym$ = Reg_GetProductAcronym(prodNum%)
  4777.       Lot_IsTheNodeOptionsAvailToNode = 0
  4778.  
  4779.       OptPref$ = "Option"
  4780.       OptNumber%=1
  4781.       OptTag$=OptPref$+LTRIM$(STR$(OptNumber%))
  4782.       OptID$ = GetIniKeyString(gInstallIniFile$,ProdAcronym$+" Node Options", OptTag$)
  4783.       rc% = DoesFileExist(gInstallIniFile$,femExists)
  4784.       IF rc% = 1 THEN
  4785.          IF OptID$ = OptName$ THEN
  4786.             Lot_IsTheNodeOptionsAvailToNode = 1
  4787.             EXIT FUNCTION
  4788.          ELSE   
  4789.             WHILE (OptID$ <> "")
  4790.                IF OptID$ = OptName$ THEN
  4791.                   Lot_IsTheNodeOptionsAvailToNode = 1
  4792.                   EXIT FUNCTION
  4793.                END IF
  4794.                OptNumber% = OptNumber% + 1
  4795.                OptTag$=OptPref$+LTRIM$(STR$(OptNumber%))
  4796.                OptID$ = GetIniKeyString(gInstallIniFile$,ProdAcronym$+" Node Options", OptTag$)
  4797.             WEND
  4798.             Lot_IsTheNodeOptionsAvailToNode = 0
  4799.             EXIT FUNCTION
  4800.         END IF
  4801.          
  4802.      ELSE
  4803.         
  4804.         
  4805.         FatalErrorMsg SID_ERR_INSTALLINI_MISSING, "", STFQUIT
  4806.         
  4807.      END IF
  4808.    END IF
  4809.  END FUNCTION
  4810.  
  4811.  
  4812. PUBLIC FUNCTION Lot_IsAnyNodeOptAvailToNode() AS INTEGER
  4813.  
  4814.  
  4815.  
  4816.  
  4817.  
  4818.  
  4819.  
  4820.    DIM NetworkIns$, prodDir$, gInstallIniFile$, ProdAcronym$,NumOfProds%
  4821.    DIM OptTag$, OptID$, OptPref$, OptNumber%, rc%,prodNum%
  4822.  
  4823.    
  4824.    NetworkIns$ = GetSymbolValue(SYM_NETWORK$)
  4825.    IF NetworkIns$=gNODE$ THEN
  4826.  
  4827.       
  4828.       prodDir$ = Lot_GetInstallDir()
  4829.       gInstallIniFile$ = MakePath(prodDir$,gINSTALLINI$)
  4830.  
  4831.       
  4832.       NumOfProds% = Reg_GetNumberOfProducts()
  4833.       IF NumOfProds% = 0 THEN
  4834.          Lot_IsAnyNodeOptAvailToNode = 0
  4835.          EXIT FUNCTION
  4836.       END IF
  4837.  
  4838.       rc% = DoesFileExist(gInstallIniFile$,femExists)
  4839.       IF rc% = 1 THEN
  4840.          
  4841.          FOR prodNum% = 1 TO NumOfProds%
  4842.             ProdAcronym$ = Reg_GetProductAcronym(prodNum%)
  4843.  
  4844.             OptPref$ = "Option"
  4845.             OptNumber%=1
  4846.             OptTag$=OptPref$+LTRIM$(STR$(OptNumber%))
  4847.             OptID$ = GetIniKeyString(gInstallIniFile$,ProdAcronym$+" Node Options", OptTag$)
  4848.             IF OptID$ <> "" THEN
  4849.                Lot_IsAnyNodeOptAvailToNode = 1
  4850.                EXIT FUNCTION
  4851.            END IF
  4852.          NEXT 
  4853.          
  4854.       ELSE
  4855.          
  4856.          
  4857.          FatalErrorMsg SID_ERR_INSTALLINI_MISSING, "", STFQUIT
  4858.          
  4859.       END IF
  4860.  
  4861.    END IF
  4862.  END FUNCTION
  4863.  
  4864.  
  4865. PUBLIC FUNCTION Lot_AreNodeOptAvailToNodeForProd(prodNum%) AS INTEGER
  4866.  
  4867.  
  4868.  
  4869.  
  4870.  
  4871.  
  4872.  
  4873.    DIM NetworkIns$, prodDir$, gInstallIniFile$, ProdAcronym$,NumOfProds%
  4874.    DIM OptTag$, OptID$, OptPref$, OptNumber%, rc%
  4875.  
  4876.    
  4877.    NetworkIns$ = GetSymbolValue(SYM_NETWORK$)
  4878.    IF NetworkIns$=gNODE$ THEN
  4879.  
  4880.       
  4881.       prodDir$ = Lot_GetInstallDir()
  4882.       gInstallIniFile$ = MakePath(prodDir$,gINSTALLINI$)
  4883.  
  4884.       rc% = DoesFileExist(gInstallIniFile$,femExists)
  4885.       IF rc% = 1 THEN
  4886.          ProdAcronym$ = Reg_GetProductAcronym(prodNum%)
  4887.          OptPref$ = "Option"
  4888.          OptNumber%=1
  4889.          OptTag$=OptPref$+LTRIM$(STR$(OptNumber%))
  4890.          OptID$ = GetIniKeyString(gInstallIniFile$,ProdAcronym$+" Node Options", OptTag$)
  4891.          IF OptID$ <> "" THEN
  4892.             Lot_AreNodeOptAvailToNodeForProd = 1
  4893.             EXIT FUNCTION
  4894.          ELSE
  4895.             Lot_AreNodeOptAvailToNodeForProd = 0
  4896.             EXIT FUNCTION
  4897.          END IF
  4898.         
  4899.       ELSE
  4900.          
  4901.          
  4902.          FatalErrorMsg SID_ERR_INSTALLINI_MISSING, "", STFQUIT
  4903.          
  4904.       END IF
  4905.  
  4906.    END IF
  4907.  END FUNCTION
  4908.  
  4909.  
  4910. PUBLIC FUNCTION Lot_GetNumOfNodeOptAvailToNodeForProd(prodNum%) AS INTEGER
  4911.  
  4912.  
  4913.  
  4914.  
  4915.  
  4916.  
  4917.  
  4918.    DIM NetworkIns$, prodDir$, gInstallIniFile$, ProdAcronym$,NumOfOptions%
  4919.    DIM OptTag$, OptID$, OptPref$, OptNumber%, rc%
  4920.  
  4921.    
  4922.    NetworkIns$ = GetSymbolValue(SYM_NETWORK$)
  4923.    IF NetworkIns$=gNODE$ THEN
  4924.  
  4925.       
  4926.       prodDir$ = Lot_GetInstallDir()
  4927.       gInstallIniFile$ = MakePath(prodDir$,gINSTALLINI$)
  4928.  
  4929.       rc% = DoesFileExist(gInstallIniFile$,femExists)
  4930.       IF rc% = 1 THEN
  4931.          ProdAcronym$ = Reg_GetProductAcronym(prodNum%)
  4932.          OptPref$ = "Option"
  4933.          OptNumber%=1
  4934.          OptTag$=OptPref$+LTRIM$(STR$(OptNumber%))
  4935.          OptID$ = GetIniKeyString(gInstallIniFile$,ProdAcronym$+" Node Options", OptTag$)
  4936.          IF OptID$ <> "" THEN
  4937.             WHILE (OptID$ <> "")
  4938.                NumOfOptions% = OptNumber%
  4939.                OptNumber% = OptNumber% + 1
  4940.                OptTag$=OptPref$+LTRIM$(STR$(OptNumber%))
  4941.                OptID$ = GetIniKeyString(gInstallIniFile$,ProdAcronym$+" Node Options", OptTag$)
  4942.             WEND
  4943.           ELSE
  4944.             Lot_GetNumOfNodeOptAvailToNodeForProd = 0
  4945.             EXIT FUNCTION
  4946.          END IF
  4947.          Lot_GetNumOfNodeOptAvailToNodeForProd = NumOfOptions
  4948.          EXIT FUNCTION
  4949.         
  4950.       ELSE
  4951.          
  4952.          
  4953.          FatalErrorMsg SID_ERR_INSTALLINI_MISSING, "", STFQUIT
  4954.          
  4955.       END IF
  4956.  
  4957.    END IF
  4958.  END FUNCTION
  4959.  
  4960.  
  4961. PUBLIC FUNCTION Lot_AreAnyNodeOptAvailToSrv() AS INTEGER
  4962.  
  4963.  
  4964.  
  4965.  
  4966.  
  4967.  
  4968.    DIM NetworkIns$, prodDir$, gInstallIniFile$, OptName$, j%, nodeopt_flag%
  4969.    DIM OptCount%, prodNum%, AllProdNum%, ProdAcronym$, AllOptNum%, OptNum%
  4970.    DIM OptKeyword$, chpt$
  4971.  
  4972.    
  4973.    NetworkIns$ = GetSymbolValue(SYM_NETWORK$)
  4974.    IF NetworkIns$=gSERVER$ THEN
  4975.  
  4976.       
  4977.       prodDir$ = Lot_GetInstallDir()
  4978.       gInstallIniFile$ = MakePath(prodDir$,gINSTALLINI$)
  4979.  
  4980.       
  4981.       AllProdNum% = 0
  4982.       nodeopt_flag% = 0
  4983.       AllProdNum% = Reg_GetNumberOfProducts()
  4984.       IF AllProdNum% <> 0 THEN
  4985.          FOR prodNum%=1 TO AllProdNum%
  4986.             AllOptNum% = 0
  4987.             AllOptNum% = Reg_GetNumofNodeOptions(prodNum%)
  4988.  
  4989.  
  4990.             OptNum%=Reg_GetNumofNodeOptions(prodNum%)
  4991.          IF OptNum% <> 0 THEN
  4992.             chpt$ = Lot_GetChapterFromKeyword(Reg_GetProductAcronym(prodNum%) + gTOP$)
  4993.            
  4994.             FOR j% = 1 TO OptNum%
  4995.                 OptKeyWord$ = Reg_GetNodeOptionStr(prodNum%,j%)
  4996.                 chpt$ = Lot_GetChapterFromKeyword(OptKeyWord$)
  4997.                 IF INT(Lot_GetChapterValInt(chpt$,F_INOROUT)) = 1 THEN
  4998.                  nodeopt_flag% = 1
  4999.                 END IF
  5000.             NEXT
  5001.          END IF
  5002.          
  5003.          IF AllOptNum% <> 0 AND nodeopt_flag% <> 0 THEN
  5004.                Lot_AreAnyNodeOptAvailToSrv=1
  5005.                EXIT FUNCTION
  5006.             END IF
  5007.          NEXT
  5008.       ELSE
  5009.          Lot_AreAnyNodeOptAvailToSrv=0
  5010.          EXIT FUNCTION
  5011.       END IF
  5012.    ELSE
  5013.       Lot_AreAnyNodeOptAvailToSrv=0
  5014.       EXIT FUNCTION
  5015.    END IF
  5016.  
  5017.    Lot_AreAnyNodeOptAvailToSrv=0
  5018. END FUNCTION
  5019.  
  5020.  
  5021.  
  5022.  
  5023.  
  5024.  
  5025.  
  5026.  
  5027.  
  5028.  
  5029.  
  5030.  
  5031.  
  5032.  
  5033. PUBLIC FUNCTION Lot_SaveTheCDOptionsInInstallIni() AS INTEGER
  5034.  
  5035.  
  5036.  
  5037.  
  5038.  
  5039.  
  5040.  
  5041.  
  5042.    DIM NetworkIns$, prodDir$, gInstallIniFile$, OptName$
  5043.    DIM OptCount%, prodNum%, AllProdNum%, ProdAcronym$, AllOptNum%, OptNum%
  5044.  
  5045.    
  5046.    NetworkIns$ = GetSymbolValue(SYM_NETWORK$)
  5047.    IF NetworkIns$=gSERVER$ THEN
  5048.  
  5049.       
  5050.       prodDir$ = Lot_GetInstallDir()
  5051.       gInstallIniFile$ = MakePath(prodDir$,gINSTALLINI$)
  5052.  
  5053.       
  5054.       AllProdNum% = 0
  5055.       AllProdNum% = Reg_GetNumberOfProducts()
  5056.       IF AllProdNum% <> 0 THEN
  5057.          FOR prodNum%=1 TO AllProdNum%
  5058.             AllOptNum% = 0
  5059.             AllOptNum% = Reg_GetNumofCDOptions(prodNum%)
  5060.             IF AllOptNum% <> 0 THEN
  5061.                ProdAcronym$ = Reg_GetProductAcronym(prodNum%)
  5062.                
  5063.                FOR OptNum%=1 TO AllOptNum% 
  5064.                   IF Reg_IsCDOptionSelected(prodNum%,OptNum%)=STR(1) THEN
  5065.                      OptName$ = Reg_GetCDOptionStr(prodNum%,OptNum%)
  5066.                      IF OptName$ <> "" AND FIsKeywordinCopyList (OptName$) <> FALSE THEN
  5067.                         OptCount% = Lot_GetLastCDOptNumber(ProdAcronym$)
  5068.                         CreateIniKeyValue gInstallIniFile$, ProdAcronym$+" CD Options", "Option"+LTRIM$(STR$(OptCount%+1)),OptName$, cmoOverwrite
  5069.                      END IF
  5070.                   END IF
  5071.                NEXT
  5072.             END IF
  5073.  
  5074.          NEXT
  5075.       END IF
  5076.    END IF
  5077.    Lot_SaveTheCDOptionsInInstallIni = SUCCESS
  5078. END FUNCTION
  5079.  
  5080.  
  5081. FUNCTION Lot_GetLastCDOptNumber(ProdAcronym$) AS INTEGER
  5082.  
  5083.  
  5084.  
  5085.  
  5086.  
  5087.  
  5088.    DIM NetworkIns$, prodDir$, gInstallIniFile$
  5089.    DIM OptTag$, OptID$, OptPref$, rc%
  5090.    STATIC OptNumber%
  5091.  
  5092.    
  5093.    NetworkIns$ = GetSymbolValue(SYM_NETWORK$)
  5094.  
  5095.    IF NetworkIns$=gSERVER$ THEN
  5096.  
  5097.       
  5098.       prodDir$ = Lot_GetInstallDir()
  5099.       gInstallIniFile$ = MakePath(prodDir$,gINSTALLINI$)
  5100.  
  5101.       OptPref$ = "Option"
  5102.       OptNumber%=1
  5103.       OptTag$=OptPref$+LTRIM$(STR$(OptNumber%))
  5104.       OptID$ = GetIniKeyString(gInstallIniFile$,ProdAcronym$+" CD Options", OptTag$)
  5105.       rc% = DoesFileExist(gInstallIniFile$,femExists)
  5106.       IF rc% = 1 THEN
  5107.          IF OptID$ = "" THEN
  5108.             Lot_GetLastCDOptNumber = 0
  5109.             EXIT FUNCTION
  5110.          ELSE   
  5111.             WHILE (OptID$ <> "")
  5112.                OptNumber% = OptNumber% + 1
  5113.                OptTag$=OptPref$+LTRIM$(STR$(OptNumber%))
  5114.                OptID$ = GetIniKeyString(gInstallIniFile$,ProdAcronym$+" CD Options", OptTag$)
  5115.             WEND
  5116.             Lot_GetLastCDOptNumber = OptNumber%-1
  5117.             EXIT FUNCTION
  5118.         END IF
  5119.          
  5120.      ELSE
  5121.         
  5122.         
  5123.         FatalErrorMsg SID_ERR_INSTALLINI_MISSING, "", STFQUIT
  5124.         
  5125.      END IF
  5126.    END IF
  5127.  END FUNCTION
  5128.  
  5129.  
  5130. PUBLIC FUNCTION Lot_IsTheCDOptionsAvailToNode(prodNum%,OptName$) AS INTEGER
  5131.  
  5132.  
  5133.  
  5134.  
  5135.  
  5136.  
  5137.  
  5138.    DIM NetworkIns$, prodDir$, gInstallIniFile$, ProdAcronym$
  5139.    DIM OptTag$, OptID$, OptPref$, OptNumber%, rc%
  5140.  
  5141.    
  5142.    NetworkIns$ = GetSymbolValue(SYM_NETWORK$)
  5143.    IF NetworkIns$=gNODE$ THEN
  5144.  
  5145.       
  5146.       prodDir$ = Lot_GetInstallDir()
  5147.       gInstallIniFile$ = MakePath(prodDir$,gINSTALLINI$)
  5148.       ProdAcronym$ = Reg_GetProductAcronym(prodNum%)
  5149.       Lot_IsTheCDOptionsAvailToNode = 0
  5150.  
  5151.       OptPref$ = "Option"
  5152.       OptNumber%=1
  5153.       OptTag$=OptPref$+LTRIM$(STR$(OptNumber%))
  5154.       OptID$ = GetIniKeyString(gInstallIniFile$,ProdAcronym$+" CD Options", OptTag$)
  5155.       rc% = DoesFileExist(gInstallIniFile$,femExists)
  5156.       IF rc% = 1 THEN
  5157.          IF OptID$ = OptName$ THEN
  5158.             Lot_IsTheCDOptionsAvailToNode = 1
  5159.             EXIT FUNCTION
  5160.          ELSE   
  5161.             WHILE (OptID$ <> "")
  5162.                IF OptID$ = OptName$ THEN
  5163.                   Lot_IsTheCDOptionsAvailToNode = 1
  5164.                   EXIT FUNCTION
  5165.                END IF
  5166.                OptNumber% = OptNumber% + 1
  5167.                OptTag$=OptPref$+LTRIM$(STR$(OptNumber%))
  5168.                OptID$ = GetIniKeyString(gInstallIniFile$,ProdAcronym$+" CD Options", OptTag$)
  5169.             WEND
  5170.             Lot_IsTheCDOptionsAvailToNode = 0
  5171.             EXIT FUNCTION
  5172.         END IF
  5173.          
  5174.      ELSE
  5175.         
  5176.         
  5177.         FatalErrorMsg SID_ERR_INSTALLINI_MISSING, "", STFQUIT
  5178.         
  5179.      END IF
  5180.    END IF
  5181.  END FUNCTION
  5182.  
  5183.  
  5184. PUBLIC FUNCTION Lot_IsAnyCDOptAvailToNode() AS INTEGER
  5185.  
  5186.  
  5187.  
  5188.  
  5189.  
  5190.  
  5191.  
  5192.    DIM NetworkIns$, prodDir$, gInstallIniFile$, ProdAcronym$,NumOfProds%
  5193.    DIM OptTag$, OptID$, OptPref$, OptNumber%, rc%,prodNum%
  5194.  
  5195.    
  5196.    NetworkIns$ = GetSymbolValue(SYM_NETWORK$)
  5197.    IF NetworkIns$=gNODE$ THEN
  5198.  
  5199.       
  5200.       prodDir$ = Lot_GetInstallDir()
  5201.       gInstallIniFile$ = MakePath(prodDir$,gINSTALLINI$)
  5202.  
  5203.       
  5204.       NumOfProds% = Reg_GetNumberOfProducts()
  5205.       IF NumOfProds% = 0 THEN
  5206.          Lot_IsAnyCDOptAvailToNode = 0
  5207.          EXIT FUNCTION
  5208.       END IF
  5209.  
  5210.       rc% = DoesFileExist(gInstallIniFile$,femExists)
  5211.       IF rc% = 1 THEN
  5212.          
  5213.          FOR prodNum% = 1 TO NumOfProds%
  5214.             ProdAcronym$ = Reg_GetProductAcronym(prodNum%)
  5215.  
  5216.             OptPref$ = "Option"
  5217.             OptNumber%=1
  5218.             OptTag$=OptPref$+LTRIM$(STR$(OptNumber%))
  5219.             OptID$ = GetIniKeyString(gInstallIniFile$,ProdAcronym$+" CD Options", OptTag$)
  5220.             IF OptID$ <> "" THEN
  5221.                Lot_IsAnyCDOptAvailToNode = 1
  5222.                EXIT FUNCTION
  5223.            END IF
  5224.          NEXT 
  5225.          
  5226.       ELSE
  5227.          
  5228.          
  5229.          FatalErrorMsg SID_ERR_INSTALLINI_MISSING, "", STFQUIT
  5230.          
  5231.       END IF
  5232.  
  5233.    END IF
  5234.  END FUNCTION
  5235.  
  5236.  
  5237. PUBLIC FUNCTION Lot_AreCDOptAvailToNodeForProd(prodNum%) AS INTEGER
  5238.  
  5239.  
  5240.  
  5241.  
  5242.  
  5243.  
  5244.  
  5245.    DIM NetworkIns$, prodDir$, gInstallIniFile$, ProdAcronym$,NumOfProds%
  5246.    DIM OptTag$, OptID$, OptPref$, OptNumber%, rc%
  5247.  
  5248.    
  5249.    NetworkIns$ = GetSymbolValue(SYM_NETWORK$)
  5250.    IF NetworkIns$=gNODE$ THEN
  5251.  
  5252.       
  5253.       prodDir$ = Lot_GetInstallDir()
  5254.       gInstallIniFile$ = MakePath(prodDir$,gINSTALLINI$)
  5255.  
  5256.       rc% = DoesFileExist(gInstallIniFile$,femExists)
  5257.       IF rc% = 1 THEN
  5258.          ProdAcronym$ = Reg_GetProductAcronym(prodNum%)
  5259.          OptPref$ = "Option"
  5260.          OptNumber%=1
  5261.          OptTag$=OptPref$+LTRIM$(STR$(OptNumber%))
  5262.          OptID$ = GetIniKeyString(gInstallIniFile$,ProdAcronym$+" CD Options", OptTag$)
  5263.          IF OptID$ <> "" THEN
  5264.             Lot_AreCDOptAvailToNodeForProd = 1
  5265.             EXIT FUNCTION
  5266.          ELSE
  5267.             Lot_AreCDOptAvailToNodeForProd = 0
  5268.             EXIT FUNCTION
  5269.          END IF
  5270.         
  5271.       ELSE
  5272.          
  5273.          
  5274.          FatalErrorMsg SID_ERR_INSTALLINI_MISSING, "", STFQUIT
  5275.          
  5276.       END IF
  5277.  
  5278.    END IF
  5279.  END FUNCTION
  5280.  
  5281.  
  5282. PUBLIC FUNCTION Lot_GetNumOfCDOptAvailToNodeForProd(prodNum%) AS INTEGER
  5283.  
  5284.  
  5285.  
  5286.  
  5287.  
  5288.  
  5289.  
  5290.    DIM NetworkIns$, prodDir$, gInstallIniFile$, ProdAcronym$,NumOfOptions%
  5291.    DIM OptTag$, OptID$, OptPref$, OptNumber%, rc%
  5292.  
  5293.    
  5294.    NetworkIns$ = GetSymbolValue(SYM_NETWORK$)
  5295.    IF NetworkIns$=gNODE$ THEN
  5296.  
  5297.       
  5298.       prodDir$ = Lot_GetInstallDir()
  5299.       gInstallIniFile$ = MakePath(prodDir$,gINSTALLINI$)
  5300.  
  5301.       rc% = DoesFileExist(gInstallIniFile$,femExists)
  5302.       IF rc% = 1 THEN
  5303.          ProdAcronym$ = Reg_GetProductAcronym(prodNum%)
  5304.          OptPref$ = "Option"
  5305.          OptNumber%=1
  5306.          OptTag$=OptPref$+LTRIM$(STR$(OptNumber%))
  5307.          OptID$ = GetIniKeyString(gInstallIniFile$,ProdAcronym$+" CD Options", OptTag$)
  5308.          IF OptID$ <> "" THEN
  5309.             WHILE (OptID$ <> "")
  5310.                NumOfOptions% = OptNumber%
  5311.                OptNumber% = OptNumber% + 1
  5312.                OptTag$=OptPref$+LTRIM$(STR$(OptNumber%))
  5313.                OptID$ = GetIniKeyString(gInstallIniFile$,ProdAcronym$+" CD Options", OptTag$)
  5314.             WEND
  5315.           ELSE
  5316.             Lot_GetNumOfCDOptAvailToNodeForProd = 0
  5317.             EXIT FUNCTION
  5318.          END IF
  5319.          Lot_GetNumOfCDOptAvailToNodeForProd = NumOfOptions
  5320.          EXIT FUNCTION
  5321.         
  5322.       ELSE
  5323.          
  5324.          
  5325.          FatalErrorMsg SID_ERR_INSTALLINI_MISSING, "", STFQUIT
  5326.          
  5327.       END IF
  5328.  
  5329.    END IF
  5330.  END FUNCTION
  5331.  
  5332.  
  5333. PUBLIC FUNCTION Lot_AreAnyCDOptAvailToSrv() AS INTEGER
  5334.  
  5335.  
  5336.  
  5337.  
  5338.  
  5339.  
  5340.    DIM NetworkIns$, prodDir$, gInstallIniFile$, OptName$, j%, CDopt_flag%
  5341.    DIM OptCount%, prodNum%, AllProdNum%, ProdAcronym$, AllOptNum%, OptNum%
  5342.    DIM OptKeyword$, chpt$
  5343.  
  5344.    
  5345.    NetworkIns$ = GetSymbolValue(SYM_NETWORK$)
  5346.    IF NetworkIns$=gSERVER$ THEN
  5347.  
  5348.       
  5349.       prodDir$ = Lot_GetInstallDir()
  5350.       gInstallIniFile$ = MakePath(prodDir$,gINSTALLINI$)
  5351.  
  5352.       
  5353.       AllProdNum% = 0
  5354.       CDopt_flag% = 0
  5355.       AllProdNum% = Reg_GetNumberOfProducts()
  5356.       IF AllProdNum% <> 0 THEN
  5357.          FOR prodNum%=1 TO AllProdNum%
  5358.             AllOptNum% = 0
  5359.             AllOptNum% = Reg_GetNumofCDOptions(prodNum%)
  5360.  
  5361.  
  5362.             OptNum%=Reg_GetNumofCDOptions(prodNum%)
  5363.          IF OptNum% <> 0 THEN
  5364.             chpt$ = Lot_GetChapterFromKeyword(Reg_GetProductAcronym(prodNum%) + gTOP$)
  5365.            
  5366.             FOR j% = 1 TO OptNum%
  5367.                 OptKeyWord$ = Reg_GetCDOptionStr(prodNum%,j%)
  5368.                 chpt$ = Lot_GetChapterFromKeyword(OptKeyWord$)
  5369.                 IF INT(Lot_GetChapterValInt(chpt$,F_INOROUT)) = 1 THEN
  5370.                  CDopt_flag% = 1
  5371.                 END IF
  5372.             NEXT
  5373.          END IF
  5374.          
  5375.          IF AllOptNum% <> 0 AND CDopt_flag% <> 0 THEN
  5376.                Lot_AreAnyCDOptAvailToSrv=1
  5377.                EXIT FUNCTION
  5378.             END IF
  5379.          NEXT
  5380.       ELSE
  5381.          Lot_AreAnyCDOptAvailToSrv=0
  5382.          EXIT FUNCTION
  5383.       END IF
  5384.    ELSE
  5385.       Lot_AreAnyCDOptAvailToSrv=0
  5386.       EXIT FUNCTION
  5387.    END IF
  5388.  
  5389.    Lot_AreAnyCDOptAvailToSrv=0
  5390. END FUNCTION
  5391.  
  5392.  
  5393. PUBLIC SUB Reg_SetSHAREEXESupport(ProdNo%,Flag%) 
  5394.  
  5395.  
  5396.  
  5397.  
  5398.  
  5399.         IF ProdNo% > gMaxNumOfProds% THEN
  5400.  
  5401.            ERROR STFQUIT
  5402.         END IF               
  5403.         IF Flag% <> 0 AND Flag% <> 1 THEN
  5404.  
  5405.            ERROR STFQUIT
  5406.         END IF               
  5407.     Prods(ProdNo%).SHAREEXE=Flag%
  5408. END SUB
  5409.  
  5410. PUBLIC FUNCTION Reg_GetSHAREEXESupport(ProdNo%) AS INTEGER
  5411.  
  5412.  
  5413.  
  5414.  
  5415.  
  5416. DIM SuppFlag%
  5417.         SuppFlag% = 0
  5418.         IF ProdNo% > gMaxNumOfProds% THEN
  5419.  
  5420.            ERROR STFQUIT
  5421.         END IF       
  5422.         SuppFlag%=Prods(ProdNo%).SHAREEXE        
  5423.         Reg_GetSHAREEXESupport=SuppFlag% 
  5424. END FUNCTION
  5425.  
  5426. PUBLIC SUB Reg_SetNotesSupport(ProdNo%,Flag%) 
  5427.  
  5428.  
  5429.  
  5430.  
  5431.  
  5432.         IF ProdNo% > gMaxNumOfProds% THEN
  5433.  
  5434.            ERROR STFQUIT
  5435.         END IF               
  5436.         IF Flag% <> 0 AND Flag% <> 1 THEN
  5437.  
  5438.            ERROR STFQUIT
  5439.         END IF               
  5440.     Prods(ProdNo%).Notes=Flag%
  5441. END SUB
  5442.  
  5443.  
  5444. PUBLIC SUB Reg_SetPreviousVersion(ProdNo%,prev$)  
  5445.  
  5446.  
  5447.  
  5448.  
  5449.         IF ProdNo% > gMaxNumOfProds% THEN
  5450.            ERROR STFQUIT
  5451.         END IF               
  5452.  
  5453.         Prods(ProdNo%).PreviousVersion=prev$
  5454. END SUB
  5455.  
  5456. PUBLIC FUNCTION Reg_GetNotesSupport(ProdNo%) AS INTEGER
  5457.  
  5458.  
  5459.  
  5460.  
  5461.  
  5462. DIM SuppFlag%
  5463.         SuppFlag% = 0
  5464.         IF ProdNo% > gMaxNumOfProds% THEN
  5465.  
  5466.            ERROR STFQUIT
  5467.         END IF       
  5468.         SuppFlag%=Prods(ProdNo%).Notes        
  5469.         Reg_GetNotesSupport=SuppFlag% 
  5470. END FUNCTION
  5471.  
  5472.  
  5473. PUBLIC FUNCTION Reg_GetPreviousVersion(ProdNo%)   AS STRING
  5474.  
  5475.  
  5476.  
  5477.         IF ProdNo% > gMaxNumOfProds% THEN
  5478.            ERROR STFQUIT
  5479.         END IF               
  5480.         Reg_GetPreviousVersion=Prods(ProdNo%).PreviousVersion
  5481.  
  5482. END FUNCTION
  5483.  
  5484.  
  5485.  
  5486.  
  5487.  
  5488.  
  5489.  
  5490.  
  5491.  
  5492.  
  5493.  
  5494.  
  5495.  
  5496.  
  5497. PUBLIC FUNCTION GetNotesPathfromLotusIni() AS STRING
  5498. DIM DestDir$, lotusinipath$, defdir$, temp%, ProdDir$, fullpath$, rv%
  5499.  
  5500.    DestDir$ = GetWindowsDir()
  5501.    lotusinipath$ = DestDir$ +"lotus.ini"
  5502.  
  5503.    if DoesFileExist(lotusinipath$,femExists) then
  5504.       defdir$ = GetIniKeyString(lotusinipath$,"Lotus Applications", "Notes")
  5505.       if defdir$ <> "" then
  5506.          temp% = INSTR(1,LCASE$(defdir$),"notes.exe")
  5507.          if temp% <> 0 then
  5508.             ProdDir$ = MID$(defdir$,1,(temp%-1))
  5509.             if ProdDir$ <> "" then
  5510.                fullpath$ = ProdDir$ + "notes.exe"
  5511.                if DoesFileExist(fullpath$, femExists) then
  5512.                   GetNotesPathfromLotusIni = MID$(defdir$,1,(temp%-2))
  5513.                   EXIT FUNCTION
  5514.                end if 
  5515.             end if 
  5516.          end if 
  5517.       end if 
  5518.    end if
  5519.  
  5520.    GetNotesPathfromLotusIni = ""
  5521.  
  5522. END FUNCTION
  5523.  
  5524.  
  5525.  
  5526.  
  5527.  
  5528.  
  5529.  
  5530.  
  5531.  
  5532.  
  5533.  
  5534. PUBLIC FUNCTION IsNotesInPath() AS INTEGER
  5535. DIM    notesdir$,autoexec$,Buffer$
  5536. DIM autofile%, FoundPath%
  5537.  
  5538.     notesdir$ = GetNotesPathfromLotusIni()
  5539.     IsNotesInPath = 0                                    
  5540.     if notesdir$ = "" then
  5541.         IsNotesInPath = 1
  5542.         EXIT FUNCTION
  5543.     end if
  5544.     autoexec$ = GetBootDrive() 
  5545.    IF autoexec$ <> "" THEN
  5546.       autoexec$ = autoexec$ + "autoexec.bat" 
  5547.    ELSE
  5548.       autoexec$ = "c:\" + "autoexec.bat"
  5549.    END IF
  5550.  
  5551.    autofile% = 111
  5552.     OPEN autoexec$ FOR INPUT AS autofile%
  5553.     Do Until EOF(autofile%)
  5554.         LINE INPUT #autofile%, Buffer$
  5555.         FoundPath% = INSTR(1,LCASE$(Buffer$), "path")
  5556.         if FoundPath% <> 0 Then                            
  5557.             FoundPath% = INSTR(FoundPath%, LCASE$(Buffer$), LCASE$(notesdir$))
  5558.             if FoundPath% <> 0 Then 
  5559.                 IsNotesInPath = 1
  5560.                    CLOSE #autofile%
  5561.                 EXIT FUNCTION
  5562.             end if
  5563.         end if
  5564.     Loop
  5565.        CLOSE #autofile%
  5566.  
  5567. END FUNCTION
  5568.  
  5569.  
  5570.  
  5571.  
  5572.  
  5573.  
  5574.  
  5575.  
  5576.  
  5577.  
  5578.  
  5579. PUBLIC FUNCTION IsShareInAUTOEXEC() AS INTEGER
  5580. DIM   autoexec$,Buffer$
  5581. DIM   autofile%, FoundShare%
  5582.  
  5583.     IsShareInAUTOEXEC = 0                                    
  5584.    autoexec$ = GetBootDrive() 
  5585.    IF autoexec$ <> "" THEN
  5586.       autoexec$ = autoexec$ + "autoexec.bat" 
  5587.    ELSE
  5588.       autoexec$ = "c:\" + "autoexec.bat"
  5589.    END IF
  5590.  
  5591.     autofile% = 111
  5592.     OPEN autoexec$ FOR INPUT AS autofile%
  5593.     Do Until EOF(autofile%)
  5594.         LINE INPUT #autofile%, Buffer$
  5595.         FoundShare% = INSTR(1,LCASE$(Buffer$), "share")
  5596.         if FoundShare% <> 0 Then                            
  5597.             IsShareInAUTOEXEC = 1
  5598.             CLOSE #autofile%
  5599.             EXIT FUNCTION
  5600.         end if
  5601.     Loop
  5602.    CLOSE #autofile%
  5603.  
  5604. END FUNCTION
  5605.  
  5606.  
  5607.  
  5608.  
  5609.  
  5610.  
  5611.  
  5612.  
  5613.  
  5614.  
  5615.  
  5616.  
  5617.  
  5618.  
  5619.  
  5620.  
  5621.  
  5622.  
  5623.  
  5624. PUBLIC FUNCTION ModifyAutoexec(modflag%,directmod%,backup$) AS STRING
  5625. DIM    notesdir$,src$,dest$,Buffer$
  5626. DIM srcfile%,destfile%, FoundPath%, PathNext%
  5627.  
  5628.     srcfile% = 112
  5629.     destfile% = 113
  5630.     ModifyAutoexec=""                                
  5631.     if (modflag% AND MANotes) then                
  5632.         notesdir$ = GetNotesPathfromLotusIni()
  5633.     end if
  5634.    src$ = GetBootDrive() 
  5635.    IF src$ <> "" THEN
  5636.       dest$ = src$ + backup$
  5637.       src$ = src$ + "autoexec.bat"
  5638.     ELSE
  5639.       dest$ = "c:\" + backup$
  5640.       src$ = "c:\" + "autoexec.bat"
  5641.    END IF
  5642.  
  5643.     
  5644.     IF  FCopyOneFile(src$, dest$, CmoOverwrite, 0) = FALSE THEN
  5645.         ModifyAutoexec = LdString( SID_ERR_AUTOEXEC_NOT_COPIED )
  5646.         EXIT FUNCTION
  5647.     End If
  5648.  
  5649.    CopyFile src$, dest$, CmoOverwrite, 0
  5650.  
  5651.     if directmod% <> 0 then
  5652.         src$ = dest$
  5653.       dest$ = GetBootDrive()
  5654.       IF dest$ <> "" THEN
  5655.          dest$ = dest$ + "autoexec.bat" 
  5656.       ELSE
  5657.            dest$ = "c:\" + "autoexec.bat"
  5658.       END IF
  5659.    
  5660.     End If
  5661.     OPEN src$ FOR INPUT AS srcfile%
  5662.     OPEN dest$ FOR OUTPUT AS destfile%
  5663.     PathNext% = 0      
  5664.     Do Until EOF(srcfile%)
  5665.         LINE INPUT #srcfile%, Buffer$
  5666.         FoundPath% = INSTR(1,LCASE$(Buffer$), "path")
  5667.         if ((FoundPath% <> 0) AND (PathNext <> 2)) Then     
  5668.             PathNext% = 1
  5669.         end if
  5670.         PRINT #destfile%, Buffer$
  5671.         if PathNext% = 1 Then
  5672.             if (modflag% AND MANotes) then
  5673.                 PRINT #destfile%, "PATH=%PATH%;"+notesdir$
  5674.             End If
  5675.             If (modflag% AND MAShare) then
  5676.                 PRINT #destfile%, "SHARE"
  5677.             End If
  5678.             PathNext% = 2
  5679.         End If
  5680.     Loop
  5681.     if PathNext% <> 2 Then                                    
  5682.         if (modflag% AND MANotes) then
  5683.             PRINT #destfile%, "PATH=%PATH%;"+notesdir$
  5684.         End If
  5685.         If (modflag% AND MAShare) then
  5686.             PRINT #destfile%, "SHARE"
  5687.         End If
  5688.     End If
  5689.        CLOSE #srcfile%, #destfile%
  5690. END FUNCTION
  5691.  
  5692.  
  5693.  
  5694.  
  5695.  
  5696.  
  5697.  
  5698.  
  5699.  
  5700.  
  5701.  
  5702.  
  5703. PUBLIC FUNCTION GetBootDrive() AS STRING
  5704. DIM lDrive$, Length%, count%
  5705.     GetLocalHardDrivesList SYM_LOCALHARDDRIVES$
  5706.     Length% = GetListLength(SYM_LOCALHARDDRIVES$)
  5707.     FOR count% = 1 TO Length%
  5708.         lDrive$     = GetListItem(SYM_LOCALHARDDRIVES$, count%) + ":\"
  5709.             IF IsDirWritable(lDrive$) AND (DoesFileExist(lDrive$+"autoexec.bat",femExists)=1) THEN
  5710.                GetBootDrive$ = lDrive$
  5711.                 EXIT FUNCTION
  5712.             END IF
  5713.     NEXT
  5714.     GetBootDrive$=""
  5715. END FUNCTION
  5716.  
  5717.  
  5718. PUBLIC SUB      DL_SetOraclePath
  5719.  
  5720.  
  5721.  
  5722.  
  5723.  
  5724.  
  5725.  
  5726.     DIM TmpDDir$, rc%
  5727.     
  5728.     TmpDDir$ = Lot_GetORACLEHomePath() 
  5729.     IF TmpDDir$ <> "" THEN
  5730.        
  5731.        rc% = FDirExists ( TmpDDir$ & "\DBS" )
  5732.        
  5733.        If (rc% = 1) Then
  5734.           SetSymbolValue SYM_ORACLEHOMEDIR$, TmpDDir$
  5735.        ELSE
  5736.           SetSymbolValue SYM_ORACLEHOMEDIR$, _
  5737.                          GetSymbolValue ( SYM_LOTUSAPPDIR$ ) & "DATALENS"
  5738.        End If
  5739.     ELSE
  5740.        SetSymbolValue SYM_ORACLEHOMEDIR$, _
  5741.                       GetSymbolValue ( SYM_LOTUSAPPDIR$ ) & "DATALENS"
  5742.     END IF
  5743.     SetSymbolValue "ORACLEHOMEDIR", GetSymbolValue ( SYM_ORACLEHOMEDIR$ )
  5744.     Lot_RefreshDestination(SYM_ORACLEHOMEDIR$)
  5745.     
  5746. END SUB
  5747.  
  5748. PUBLIC SUB      DL_SetNotesDataPath
  5749.  
  5750.  
  5751.  
  5752.  
  5753.  
  5754.  
  5755.     DIM TmpDDir$
  5756.     
  5757.     
  5758.     TmpDDir$ = Lot_GetLotusNotesDataPath() 
  5759.     
  5760.     IF TmpDDir$ <> "" THEN
  5761.        SetSymbolValue SYM_LOTUSNOTESDATADIR$, TmpDDir$
  5762.     ELSE
  5763.        SetSymbolValue SYM_LOTUSNOTESDATADIR$, GetSymbolValue( SYM_LOTUSAPPDIR$ )
  5764.     End If
  5765.     SetSymbolValue "NOTESDATADIR", GetSymbolValue ( SYM_LOTUSNOTESDATADIR$ )
  5766.     Lot_RefreshDestination(SYM_LOTUSNOTESDATADIR$)
  5767.     
  5768. END SUB
  5769.  
  5770. PUBLIC FUNCTION Lot_GetLotusNotesDataPath() AS STRING
  5771.  
  5772.  
  5773.  
  5774.  
  5775.  
  5776.  
  5777.    DIM szDir$, szSearch$, szTmp$, rc%
  5778.  
  5779.    Lot_GetLotusNotesDataPath = ""
  5780.    szTmp$ = GetIniKeyString( "Notes.ini", "Notes", "Directory")
  5781.  
  5782.    If szTmp$ <> "" Then
  5783.        rc% = FDirExists ( szTmp$ )
  5784.  
  5785.        If (rc% = 1) Then
  5786.              Lot_GetLotusNotesDataPath = szTmp$
  5787.        End If
  5788.    Else
  5789.       szTmp$ = GetIniKeyString( "Lotus.ini", "Lotus Applications", "Notes")
  5790.       szSearch$ = ucase$( szTmp$ )
  5791.       rc% = instr( szSearch$, "NOTES.EXE") 
  5792.       If rc% > 2 Then
  5793.           szDir$ = left$(szTmp$, rc% - 2 )
  5794.  
  5795.           rc% = FDirExists ( szDir$ )
  5796.  
  5797.           If (rc% = 1) Then
  5798.              szTmp$ = GetIniKeyString( szDir$ & "\" & "Notes.ini", "Notes", "Directory")
  5799.  
  5800.              If szTmp$ <> "" Then
  5801.                 rc% = FDirExists ( szTmp$ )
  5802.  
  5803.                 If (rc% = 1) Then
  5804.                    Lot_GetLotusNotesDataPath = szTmp$
  5805.                 End If
  5806.              Else
  5807.                 Lot_GetLotusNotesDataPath = szDir$
  5808.               End If
  5809.           End If
  5810.       End If
  5811.    End If
  5812. END FUNCTION
  5813.  
  5814.  
  5815. PUBLIC FUNCTION Lot_GetLotusNotesPrgPath() AS STRING
  5816.  
  5817.  
  5818.  
  5819.  
  5820.  
  5821.  
  5822.    DIM szDir$, szSearch$, szTmp$, rc%
  5823.    DIM szPath$, szFile$, szSect$, szKey$, szExe$
  5824.  
  5825.    szPath$ = GetSymbolValue( SYM_WINDIR$ ) & LdString( SID_DATALENS_NOTES_INI )
  5826.    szSect$ = LdString( SID_DATALENS_NOTES_SECT )
  5827.    szKey$ = LdString( SID_DATALENS_NOTES_KEY )
  5828.    szExe$ = LdString( SID_DATALENS_NOTES_EXE )
  5829.  
  5830.    Lot_GetLotusNotesPrgPath = ""
  5831.    szTmp$ = GetIniKeyString( szPath$, szSect$, szKey$ )
  5832.    szSearch$ = ucase$( szTmp$ )
  5833.    rc% = instr( szSearch$, szExe$) 
  5834.    If rc% > 2 Then
  5835.       szDir$ = left$(szTmp$, rc% - 2 )
  5836.       
  5837.       rc% = FDirExists ( szDir$ )
  5838.       
  5839.       If (rc% = 1) Then
  5840.          Lot_GetLotusNotesPrgPath = szDir$
  5841.       End If
  5842.    End If
  5843. END FUNCTION
  5844.  
  5845.  
  5846.  
  5847.  
  5848.  
  5849.  
  5850.  
  5851.  
  5852.  
  5853.  
  5854.  
  5855.  
  5856.    
  5857.  
  5858.  
  5859.  
  5860.  
  5861.  
  5862.  
  5863.  
  5864.  
  5865.  
  5866.  
  5867.  
  5868.  
  5869.  
  5870.  
  5871.  
  5872. PUBLIC FUNCTION Lot_GetORACLEHomePath() AS STRING
  5873.  
  5874.  
  5875.  
  5876.  
  5877.  
  5878.  
  5879.    DIM szPath$, szTmp$, rc%, szFile$, szSect$, szKey$
  5880.  
  5881.    szPath$ = GetSymbolValue( SYM_WINDIR$ ) & LdString( SID_DATALENS_ORACLE_INI )
  5882.    szSect$ = LdString( SID_DATALENS_ORACLE_SECT )
  5883.    szKey$ = LdString( SID_DATALENS_ORACLE_KEY )
  5884.    Lot_GetORACLEHomePath = ""
  5885.    szTmp$ = GetIniKeyString ( szPath$, szSect$, szKey$ )
  5886.    
  5887.    If szTmp$ <> "" Then
  5888.        rc% = FDirExists ( szTmp$ )
  5889.        
  5890.        If (rc% = 1) Then
  5891.              Lot_GetORACLEHomePath = szTmp$
  5892.        End If
  5893.    End If
  5894. END FUNCTION
  5895.  
  5896.  
  5897. PUBLIC FUNCTION Lot_IsDestVerNewerOrEqual(DestinationPath$,sourcever1&,sourcever2&,sourcever3&,sourcever4&) AS INTEGER
  5898.  
  5899.  
  5900.  
  5901.  
  5902.  
  5903.  
  5904.  
  5905.  
  5906.  
  5907.  
  5908.    DIM DestFileVersion$
  5909.    DIM DestVer1&,DestVer2&,DestVer3&,DestVer4&, notused%
  5910.  
  5911.    
  5912.    IF DoesFileExist(DestinationPath$,femExists)=1 THEN
  5913.  
  5914.       
  5915.       DestFileVersion$=GetVersionOfFile(DestinationPath$)
  5916.  
  5917.       
  5918.       IF DestFileVersion$="" THEN
  5919.          Lot_IsDestVerNewerOrEqual = 0
  5920.          EXIT FUNCTION
  5921.  
  5922.       
  5923.       ELSE
  5924.          
  5925.          DestVer1&=GetVersionNthField(DestFileVersion$,1)
  5926.          DestVer2&=GetVersionNthField(DestFileVersion$,2)
  5927.          DestVer3&=GetVersionNthField(DestFileVersion$,3)
  5928.          DestVer4&=GetVersionNthField(DestFileVersion$,4)
  5929.  
  5930.          
  5931.          IF SourceVer1& > DestVer1& THEN
  5932.             Lot_IsDestVerNewerOrEqual = 0
  5933.             EXIT FUNCTION
  5934.          ELSEIF SourceVer1& = DestVer1& AND _
  5935.                 SourceVer2& > DestVer2& THEN
  5936.             Lot_IsDestVerNewerOrEqual = 0
  5937.             EXIT FUNCTION
  5938.          ELSEIF SourceVer1& = DestVer1& AND _
  5939.                 SourceVer2& = DestVer2& AND _
  5940.                 SourceVer3& > DestVer3& THEN
  5941.             Lot_IsDestVerNewerOrEqual = 0
  5942.             EXIT FUNCTION
  5943.          ELSEIF SourceVer1& = DestVer1& AND _
  5944.                 SourceVer2& = DestVer2& AND _
  5945.                 SourceVer3& = DestVer3& AND _
  5946.                 SourceVer4& > DestVer4& THEN
  5947.             Lot_IsDestVerNewerOrEqual = 0
  5948.             EXIT FUNCTION
  5949.          ELSEIF SourceVer1& = DestVer1& AND _
  5950.                 SourceVer2& = DestVer2& AND _
  5951.                 SourceVer3& = DestVer3& AND _
  5952.                 SourceVer4& = DestVer4& THEN
  5953.             
  5954.             Lot_IsDestVerNewerOrEqual = 1
  5955.             EXIT FUNCTION
  5956.          ELSE
  5957.             
  5958.             Lot_IsDestVerNewerOrEqual = 1
  5959.             EXIT FUNCTION
  5960.          END IF
  5961.  
  5962.       END IF
  5963.    
  5964.    ELSE
  5965.       Lot_IsDestVerNewerOrEqual = 0
  5966.       EXIT FUNCTION
  5967.    END IF
  5968. END FUNCTION
  5969.  
  5970. SUB PopulateCINSTALLLIST
  5971.    DIM prodDir$, installIniFile$, FeaturePref$, Featurenumber%
  5972.    DIM FeatureTag$, FeatureID$, rc%
  5973.    STATIC gCINSTALLinited%  
  5974.  
  5975.    If  gCINSTALLinited% <> 1 Then
  5976.       gNCINSTALL% = 0
  5977.       gCINSTALLinited% = 1
  5978.  
  5979.       
  5980.       prodDir$ = Lot_GetInstallDir()
  5981.       installIniFile$ = MakePath(prodDir$,gINSTALLINI$)
  5982.  
  5983.       FeaturePref$ = "Feature"
  5984.       FeatureNumber%=1
  5985.       FeatureTag$=FeaturePref$+LTRIM$(STR$(FeatureNumber%))
  5986.       FeatureID$ = GetIniKeyString(installIniFile$,"Server Feature Installed", FeatureTag$)
  5987.       rc% = DoesFileExist(installIniFile$,femExists)
  5988.       IF rc% = 1 THEN
  5989.           IF FeatureID$ <> "" THEN
  5990.            DO
  5991.               CINSTALL (FeatureID$) = "1"
  5992.               gNCINSTALL% = gNCINSTALL%+1
  5993.               FeatureNumber% = FeatureNumber% + 1
  5994.               FeatureTag$=FeaturePref$+LTRIM$(STR$(FeatureNumber%))
  5995.               FeatureID$ = GetIniKeyString(installIniFile$,"Server Feature Installed", FeatureTag$)
  5996.            LOOP UNTIL FeatureID$ = ""
  5997.         END IF
  5998.       ELSE
  5999.          
  6000.          
  6001.          FatalErrorMsg SID_ERR_INSTALLINI_MISSING, "", STFQUIT
  6002.       END IF
  6003.    END IF
  6004. END SUB
  6005.  
  6006.  
  6007.  
  6008.  
  6009.  
  6010.  
  6011.  
  6012.  
  6013.  
  6014.  
  6015. PUBLIC FUNCTION TrimNetlotusapp (ByVal path$) AS STRING
  6016.  
  6017.    DIM  firstslash%, newpath$, drive$
  6018.    
  6019.    TrimNetlotusapp = ""
  6020.    path$ = Lot_TrimEndSlash (path$)
  6021.    drive$ = LEFT(path$, 2)
  6022.    
  6023.    firstslash% = INSTR(1,path$,"\")
  6024.    WHILE firstslash% <> 0
  6025.       path$ = MID$(path$,firstslash%+1)
  6026.       newpath$ = drive$ + "\" + path$
  6027.       IF DoesDirExist(newpath$) = 1 THEN
  6028.          TrimNetlotusapp = newpath$ + "\"
  6029.          EXIT FUNCTION     
  6030.       ELSE 
  6031.          firstslash% = INSTR(1,path$,"\")            
  6032.       END IF
  6033.    WEND
  6034.  
  6035. END FUNCTION
  6036.  
  6037.  
  6038.  
  6039.  
  6040.  
  6041.  
  6042.  
  6043.  
  6044.  
  6045.  
  6046.  
  6047. PUBLIC FUNCTION Lot_GetKeyValFromResponseFile (Section$, Key$) AS STRING
  6048.    
  6049.    
  6050.    IF gAutoFile$ = "" THEN
  6051.  
  6052.  
  6053.     gAutoFile$ = GetSymbolValue(SYM_RSPPATH$)
  6054.  
  6055.        
  6056.        
  6057.        
  6058.  
  6059.     IF DoesFileExist (gAutoFile$,femExists) = 0 THEN
  6060.                ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_NORSP)
  6061.                ERROR STFQUIT
  6062.     END IF
  6063.    END IF
  6064.    
  6065.    Lot_GetKeyValFromResponseFile = GetIniKeyString(gAutoFile$,Section$,Key$)
  6066.  
  6067. END FUNCTION
  6068.  
  6069.  
  6070. PUBLIC FUNCTION Lot_AutoGetProductDestDirSymbol () AS INTEGER
  6071.  
  6072.  
  6073.  
  6074.  
  6075.  
  6076.  
  6077.  
  6078.  
  6079. DIM notused%, prodno%, lname$, n%, i%, d%, DirSymbol1$, DirListSymbol$
  6080. DIM proddirectory$, errText$, rc$
  6081.  
  6082. Lot_AutoGetProductDestDirSymbol = FALSE
  6083.  n% = Reg_GetNumberOfProducts()
  6084.  
  6085.  
  6086.      For prodno% = 1 to n%
  6087.           lname$ = Reg_GetProductAcronym(prodno%)
  6088.           IF lname$ <> "" AND lname$ <> "INST" AND lname$ <> "LIC" AND lname$ <> "SUIT" Then
  6089.             DirListSymbol$ = Reg_GetDirSymbolList(prodno%)    
  6090.             d% = Reg_GetNumOfDirectories(prodno%)
  6091.                         
  6092.             For i% = 1 to d%
  6093.                 DirSymbol1$ = GetListItem(DirListSymbol$, i%)
  6094.                  proddirectory$ = Lot_GetKeyValFromResponseFile (lname$,DirSymbol1$)
  6095.                                 
  6096.                                 proddirectory$ = Lot_AutoCheckRSPPath(proddirectory$)
  6097.  
  6098.                                 IF LEN(proddirectory$)  > 0 THEN
  6099.                                     rc$ = Lot_CallOneProductFunction(1, "PathChange",gNEXT$, _
  6100.                          FALSE, |"| + proddirectory$ + |",TRUE|)
  6101.  
  6102.                                     IF rc$ = gBACK THEN
  6103.                                                 ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_PRODDIR) + "  " + lname$
  6104.                                                 ERROR STFQUIT
  6105.                                     END IF
  6106.  
  6107.                                         SetSymbolValue DirSymbol1$, proddirectory$
  6108.  
  6109.                                 ELSE
  6110.                                         ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_PRODDIR) + "  " + lname$
  6111.                                         ERROR STFQUIT
  6112.                                 END IF
  6113.             Next
  6114.         END IF
  6115.      Next
  6116.  
  6117. Lot_AutoGetProductDestDirSymbol = TRUE
  6118. END FUNCTION
  6119.  
  6120. FUNCTION Lot_AutoCheckRSPPath (rsppath$) AS STRING
  6121.  
  6122.  
  6123.  
  6124.  
  6125.  
  6126.  
  6127.  
  6128.  
  6129.  
  6130.  
  6131.  
  6132.  
  6133.  
  6134.  
  6135.  
  6136.  
  6137. Lot_AutoCheckRSPPATH = ""
  6138.  
  6139. IF LEN(rsppath$) > 0 THEN
  6140.  
  6141.         IF RIGHT$(rsppath$, 1) <> "\" THEN
  6142.                 rsppath$ = rsppath$+ "\"
  6143.         END IF
  6144.  
  6145.         IF ValidatePath(rsppath$) <> FALSE THEN
  6146.                 Lot_AutoCheckRSPPATH = rsppath$
  6147.         END IF
  6148.         
  6149. END IF
  6150.  
  6151. END FUNCTION
  6152.  
  6153. PUBLIC FUNCTION Lot_AutoGetBaseDirSymbol () AS STRING
  6154.  
  6155.  
  6156.  
  6157.  
  6158.  
  6159.  
  6160.  
  6161.  
  6162. DIM notused%, lname$
  6163. DIM proddirectory$
  6164.  
  6165. Lot_AutoGetBaseDirSymbol = ""
  6166.  
  6167. lname$ = "SUIT"
  6168. proddirectory$ = Lot_GetKeyValFromResponseFile (lname$,SYM_BASEDIR$)
  6169.  
  6170.  
  6171. proddirectory$ = Lot_AutoCheckRSPPath(proddirectory$)
  6172.  
  6173. IF LEN(proddirectory$)  < 1 THEN
  6174.         ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_BASEDIR) + "  " + lname$
  6175.         ERROR STFQUIT
  6176. END IF
  6177.  
  6178. Lot_AutoGetBaseDirSymbol = proddirectory$
  6179.  
  6180. END FUNCTION
  6181.  
  6182.  
  6183.  
  6184.  
  6185.  
  6186.  
  6187.  
  6188.  
  6189.  
  6190. PUBLIC FUNCTION Lot_AutoGetInstallType () AS STRING
  6191.  
  6192.     DIM installtype$
  6193.     DIM lname$ 
  6194.  
  6195.     lname$ = "General Information"
  6196.  
  6197.     installtype$ = Lot_GetKeyValFromResponseFile(lname$,"InstallType")
  6198.  
  6199.     SELECT CASE installtype$
  6200.       case "1"
  6201.          Lot_AutoGetInstallType = gSTANDARD$
  6202.       case "2"
  6203.          Lot_AutoGetInstallType = gSERVER$
  6204.       case "3"
  6205.          Lot_AutoGetInstallType = gDISTRIBUTION$
  6206.       case "4"
  6207.          IF GetSymbolValue (SYM_NETWORK$) <> gNODE$ THEN
  6208.                 ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_NODE)
  6209.                 ERROR STFQUIT
  6210.          END IF        
  6211.       case else
  6212.          ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_INSTALLTYPE)+ "  " + lname$
  6213.          ERROR STFQUIT
  6214.         
  6215.          Lot_AutoGetInstallType = ""    
  6216.     END SELECT
  6217.  
  6218. END FUNCTION
  6219.  
  6220.  
  6221.  
  6222.  
  6223.  
  6224.  
  6225.  
  6226.  
  6227.  
  6228.  
  6229.  
  6230.  
  6231.  
  6232.  
  6233. PUBLIC FUNCTION Lot_AutoGetProgramGroup () AS INTEGER
  6234. DIM proggroup$, DefaultGroup$, CheckName$, failed%, count%, errText$
  6235. DIM lname$
  6236. DIM InvChar LIST AS STRING
  6237.    
  6238.    InvChar("*") = "1"
  6239.    InvChar("+") = "1"
  6240.    InvChar("|") = "1"
  6241.    InvChar(":") = "1"
  6242.    InvChar(|"|) = "1"
  6243.    InvChar("<") = "1"
  6244.    InvChar(">") = "1"
  6245.    InvChar("?") = "1"
  6246.    InvChar("=") = "1"
  6247.    InvChar("[") = "1"
  6248.    InvChar("]") = "1"
  6249.    InvChar("\") = "1"
  6250.    InvChar(";") = "1"
  6251.    InvChar(",") = "1"
  6252.    InvChar("/") = "1"
  6253.    InvChar(")") = "1"
  6254.    InvChar("(") = "1"
  6255.    InvChar(".") = "1"  
  6256.  
  6257.    
  6258.    InvChar("'") = "1"
  6259.    InvChar("@") = "1" 
  6260.    InvChar("{") = "1" 
  6261.    InvChar("}") = "1" 
  6262.    InvChar("#") = "1" 
  6263.    InvChar("%") = "1" 
  6264.    InvChar("!") = "1" 
  6265.    InvChar("`") = "1" 
  6266.    InvChar("$") = "1" 
  6267.    InvChar("^") = "1" 
  6268.    InvChar("~") = "1" 
  6269.    InvChar("-") = "1" 
  6270.    InvChar("_") = "1" 
  6271.    InvChar("&") = "1" 
  6272.  
  6273. DefaultGroup$=Reg_GetProgManagerGroupName(1)
  6274. IF DefaultGroup$="" THEN
  6275.    DefaultGroup$="Lotus Application"
  6276. END IF
  6277.  
  6278. lname$ = "General Information"
  6279. proggroup$ = Lot_GetKeyValFromResponseFile(lname$,"ProgramGroup")
  6280.     
  6281. IF proggroup$ = "" THEN
  6282.         proggroup$=DefaultGroup$
  6283. END IF
  6284.  
  6285.  
  6286.  
  6287.  
  6288.  
  6289.  
  6290. failed% = 1
  6291.  
  6292.  
  6293.  
  6294. CheckName$ = proggroup$  
  6295. FOR count% = 1 TO LEN(proggroup$)
  6296.    IF ISELEMENT(InvChar(LEFT$(CheckName$,1))) = FALSE THEN
  6297.       failed% = 0
  6298.       EXIT FOR
  6299.    END IF 
  6300.    CheckName$ = RIGHT$(Checkname$,LEN(CheckName$)-1)
  6301. NEXT
  6302.  
  6303.  
  6304.  
  6305. IF INSTR(1,proggroup$,|"|) <> 0 THEN
  6306.       failed% = 1
  6307. END IF 
  6308.  
  6309. IF failed% <> 0 THEN
  6310.         ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_PROGGROUP) + "  " + lname$
  6311.         proggroup$=DefaultGroup$
  6312. END IF
  6313.         Reg_SetProgManagerGroup 1,proggroup$
  6314.             
  6315.  
  6316.  
  6317. END FUNCTION
  6318.  
  6319.  
  6320.  
  6321.  
  6322.  
  6323.  
  6324.  
  6325.  
  6326.  
  6327.  
  6328. PUBLIC FUNCTION Lot_AutoGetSizeOfInstall () AS INTEGER
  6329.     DIM size$, lname$, i%, nProds%
  6330.  
  6331.    Lot_AutoGetSizeOfInstall = FALSE
  6332.  
  6333.    
  6334.    
  6335.           lname$ = Reg_GetProductAcronym(1)
  6336.         size$ = Lot_GetKeyValFromResponseFile(lname$,"SizeOfInstall")
  6337.    
  6338.     
  6339.     
  6340.    
  6341.  
  6342.    SELECT CASE size$
  6343.       case "1"
  6344.          size$ = gCOMPLETE$
  6345.       case "2"
  6346.          size$ = gLAPTOP$
  6347.       case "3"
  6348.          size$ = gCUSTOM$
  6349.       case else
  6350.          ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_SIZEOFINSTALL)+ "  " + lname$
  6351.          ERROR STFQUIT
  6352.         
  6353.    END SELECT
  6354.  
  6355.    SetSymbolValue SYM_SIZEOFINSTALL$, size$
  6356.  
  6357.    
  6358.    size$ = GetSymbolValue(SYM_SIZEOFINSTALL$)
  6359.    nProds% = Reg_GetNumberOfProducts()
  6360.    FOR i% = 1 to nProds%
  6361.       Reg_SetSelectedInstallType i%, size$
  6362.    NEXT
  6363.    
  6364.    Lot_AutoGetSizeOfInstall = TRUE
  6365.  
  6366. END FUNCTION
  6367.  
  6368.  
  6369. PUBLIC FUNCTION AutoCheckForSpace() AS INTEGER
  6370.  
  6371.  
  6372.  
  6373.  
  6374.  
  6375.  
  6376.  
  6377.  
  6378.  
  6379.  
  6380.      DIM lTicks&, lcb&, lNew&, i%, lcbNeed&, dr$, s$, helpId&, rc$
  6381.     DIM notused1$, curcursor%
  6382.  
  6383.    
  6384.    AutoCheckForSpace = SUCCESS
  6385.    lcb&          = LcbGetChapterCost("", "", SYM_COST$, SYM_NEEDED$)
  6386.    IF lcb& = CLNG(0) THEN
  6387.       DisplayWhenSpaceIsTight SYM_COST$, SYM_NEEDED$
  6388.       GOTO ENDCHECK
  6389.    END IF
  6390.    
  6391.    curcursor% = ShowWaitCursor()
  6392.    SetListItem "IDC_BMP", 1, STR$(IDD_MAXSCAN_BMP) 
  6393.    notused1$ = PopupModelessDlg(DB_CHECKSPACE, DB_CHECKSPACE)
  6394.    lcb& = GetCopyListCost (gEXTRA, SYM_COST$, SYM_NEEDED$)
  6395.    UIPOP 1     
  6396.    RestoreCursor curcursor%
  6397.    IF lcb& = CLNG(0) THEN
  6398.       DisplayWhenSpaceIsTight SYM_COST$, SYM_NEEDED$
  6399.       GOTO ENDCHECK
  6400.    END IF
  6401.  
  6402.    
  6403.    FOR i% = 1 TO 26
  6404.       lcbNeed& = CLNG(GetListItem(SYM_NEEDED$, i%))
  6405.       IF  lcbNeed& > 0 THEN
  6406.          dr$ = CHR$(ASC("A")+i%-1) + ": " 
  6407.          s$  = dr$ & ((lcbNeed& \ 1024) + 4)
  6408.       END IF
  6409.    NEXT
  6410.     ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_DRV_INSUFSPACE)+ s$ + LdString(SID_KBYTE_CHAR)
  6411.     ERROR STFQUIT                           
  6412.    
  6413.    AutoCheckForSpace = FAILURE
  6414.  
  6415. ENDCHECK:
  6416.  
  6417.    RemoveSymbol(SYM_COST$)
  6418.    RemoveSymbol(SYM_NEEDED$)
  6419.  
  6420. END FUNCTION
  6421.  
  6422.  
  6423.  
  6424.  
  6425.  
  6426.  
  6427.  
  6428.  
  6429.  
  6430.  
  6431.  
  6432.  
  6433.  
  6434. PUBLIC FUNCTION Lot_AutoGetUserInfo () AS INTEGER
  6435. DIM uname$, company$, defname$, defcompany$
  6436. DIM lname$
  6437.  
  6438. Lot_AutoGetUserInfo = FALSE
  6439.  
  6440.  
  6441. defname$   = GetSymbolValue(SYM_NAME$)
  6442. defcompany$ = GetSymbolValue(SYM_COMPANY$)
  6443.  
  6444.  
  6445. uname$ = GetSymbolValue(SYM_USERNAME$)
  6446.  
  6447. lname$ = "User Registration"
  6448.  
  6449. IF LEN (uname$) < 1 THEN
  6450.         uname$ = Lot_GetKeyValFromResponseFile(lname$,"UserName")
  6451.         IF LEN (uname$) < 1 THEN
  6452.                 IF LEN (defname$) < 1 THEN
  6453.                       uname$ = GetSymbolValue(SYM_NAME$)
  6454.                       IF LEN (uname$) < 1 THEN
  6455.                         uname$ = "Unknown User"
  6456.                         
  6457.                         
  6458.                       END IF      
  6459.                 ELSE
  6460.                      uname$ = defname$
  6461.                 END IF                
  6462.         END IF        
  6463. END IF
  6464.         SetSymbolValue SYM_NAME$, uname$
  6465.  
  6466. company$ = Lot_GetKeyValFromResponseFile(lname$,"CompanyName")
  6467. IF LEN (company$) < 1 THEN
  6468.         IF LEN (defcompany$) < 1 THEN
  6469.               company$ = GetSymbolValue(SYM_COMPANY$)
  6470.               IF LEN (company$) < 1  THEN
  6471.                 company$ = "Unknown Company"
  6472.                 
  6473.               END IF      
  6474.         ELSE
  6475.              company$ = defcompany$
  6476.         END IF                
  6477. END IF        
  6478.  
  6479.         SetSymbolValue SYM_COMPANY$, company$
  6480.  
  6481.         Lot_AutoGetUserInfo = TRUE
  6482.  
  6483. END FUNCTION
  6484.  
  6485.  
  6486.  
  6487.  
  6488.  
  6489.  
  6490.  
  6491.  
  6492.  
  6493.  
  6494. PUBLIC FUNCTION Lot_AutoConfigureAutoexec () AS INTEGER
  6495. DIM modflag%, notused1$, reboot$, lname$
  6496.  
  6497.  Lot_AutoConfigureAutoexec = FALSE
  6498.     lname$ = "General Information"
  6499.     reboot$ = Lot_GetKeyValFromResponseFile(lname$, "Autoexec")
  6500.  
  6501.    SELECT CASE reboot$
  6502.  
  6503.       CASE "1"          
  6504.      modflag% = 0
  6505.      IF GetSymbolValue(SYM_NEEDNOTES$) <> gFALSE$ THEN
  6506.         modflag% = 1            
  6507.      END IF
  6508.      IF GetSymbolValue(SYM_NEEDSHARE$) <> gFALSE$ THEN
  6509.         modflag% = modflag% + 2 
  6510.      END IF
  6511.      IF modflag% <> FALSE THEN
  6512.         notused1$=ModifyAutoexec(modflag%, 1, "AUTOEXEC.LTS")
  6513.      END IF
  6514.      SetSymbolValue SYM_AUTOEXEC_CHOICE$, gAUTO$
  6515.  
  6516.       CASE "2"                
  6517.      modflag% = 0               
  6518.      IF GetSymbolValue(SYM_NEEDNOTES$) <> gFALSE$ THEN
  6519.         modflag% = 1            
  6520.      END IF
  6521.      IF GetSymbolValue(SYM_NEEDSHARE$) <> gFALSE$ THEN
  6522.         modflag% = modflag% + 2 
  6523.      END IF
  6524.      IF modflag% <> FALSE THEN
  6525.         notused1$=ModifyAutoexec(modflag%, 0, "AUTOEXEC.LTS")
  6526.      END IF
  6527.      SetSymbolValue SYM_AUTOEXEC_CHOICE$, gAUTOCOPY$
  6528.  
  6529.       CASE "3"            
  6530.      SetSymbolValue SYM_AUTOEXEC_CHOICE$, gMAN$
  6531.  
  6532.       CASE ELSE
  6533.          ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_REBOOT) + "  " + lname$
  6534.          ERROR STFQUIT
  6535.         
  6536.    END SELECT
  6537.  
  6538.        SELECT CASE GetSymbolValue(SYM_AUTOEXEC_CHOICE$)
  6539.  
  6540.           CASE "AUTO"
  6541.              
  6542.           CASE "AUTOCOPY"   
  6543.              
  6544.  
  6545.           CASE "MAN"
  6546.              
  6547.  
  6548.       END SELECT
  6549.  
  6550.  Lot_AutoConfigureAutoexec = TRUE
  6551.  
  6552.  
  6553.      
  6554.  
  6555. END FUNCTION
  6556.  
  6557.  
  6558.  
  6559.  
  6560.  
  6561.  
  6562.  
  6563.  
  6564.  
  6565. PUBLIC SUB AutoInstallReboot () 
  6566.    DIM notused1$, hwnd%, lr%
  6567.       
  6568.       hwnd%=FindWindow("LInstallWClass",LdString(SID_INST_WINDOW_TITLE))
  6569.  
  6570.  
  6571.       lr%=SendMessage(hwnd%, WM_COMMAND, UM_REBOOTFLAG, 0)
  6572.  
  6573. END SUB
  6574.  
  6575.  
  6576.  
  6577.  
  6578.  
  6579.  
  6580.  
  6581.  
  6582.  
  6583.  
  6584.  
  6585.  
  6586. PUBLIC FUNCTION Lot_AutoWriteOutDebugFile () AS INTEGER
  6587. DIM notused%, mybuffer$, symbolbuff$, uname$
  6588. DIM FileExist%, TBD$, spacer$
  6589. DIM rc%, SectionName$, SectionPref$, SectionNumber%, SectionTag$
  6590. DIM KeywordName$, KeywordPref$, KeywordNumber%, KeywordTag$, KeywordValue$
  6591. DIM DebugLog$, DebugIni$, AutoRsp$
  6592. DIM sname$, scompany$, stype$, sproggroup$, slotusappdir$, ssize$
  6593. DIM i%, n%, licensedprod%
  6594.  
  6595. Lot_AutoWriteOutDebugFile = 0
  6596.  
  6597. IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ THEN
  6598.  
  6599.   IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  6600.         DebugLog$ = GetWindowsDir() + "autosuit.out"
  6601.         DebugIni$ = GetWindowsDir() + "autosuit.ini"
  6602.   ELSE
  6603.         DebugLog$ = GetWindowsDir() + "auto.out"
  6604.         DebugIni$ = GetWindowsDir() + "auto.ini"
  6605.   END IF        
  6606.  
  6607. FileExist%=DoesFileExist(DebugIni$, femExists)
  6608.  
  6609. IF FileExist% <> 1 THEN
  6610.         GOTO NODEBUGLOG
  6611. END IF
  6612.  
  6613. TBD$ = "NOT YET IMPLEMENTED!!!"
  6614. spacer$ = ""
  6615.  
  6616. FileExist%=DoesFileExist(DebugLog$, femExists)
  6617.  
  6618. IF FileExist%=1 THEN
  6619.      RemoveFile DebugLog$, cmoNone
  6620. END IF 
  6621.  
  6622.  
  6623.  
  6624.  
  6625. SectionPref$="section"
  6626. SectionNumber%=1
  6627. SectionTag$=SectionPref$+LTRIM$(STR(SectionNumber%))
  6628. SectionName$ = GetIniKeyString(DebugIni$,"Sections", SectionTag$)
  6629.  
  6630.  
  6631.  
  6632.  
  6633. DO
  6634.  
  6635. mybuffer$ = spacer$
  6636. notused% = WriteToFile(DebugLog$, mybuffer$)
  6637.  
  6638. rc% = DoesIniSectionExist (gAutoFile$, SectionName$) 
  6639.  
  6640. mybuffer$ = "[" + SectionName$ + "]"
  6641.  
  6642. IF rc% =1 THEN
  6643.         notused% = WriteToFile(DebugLog$, mybuffer$)
  6644.         KeywordPref$="option"
  6645.         KeywordNumber%=1
  6646.         KeywordTag$=KeywordPref$+LTRIM$(STR(KeywordNumber%))
  6647.         
  6648.         
  6649.         KeywordName$ = GetIniKeyString(DebugIni$,SectionName$, KeywordTag$)
  6650.  
  6651.         DO
  6652.         SELECT CASE KeywordName$
  6653.  
  6654.           case "UserName"
  6655.                 KeywordValue$ = GetSymbolValue(SYM_NAME$)
  6656.                 sname$ = "UserName: " + KeywordValue$
  6657.  
  6658.                 uname$ = GetSymbolValue(SYM_USERNAME$)
  6659.  
  6660.                 IF LEN (uname$) >= 1 THEN
  6661.                         IF KeywordValue$ <> uname$ THEN
  6662.                         KeywordValue$ = "Mismatch:" + uname$ + "from command" + KeywordValue$ + "used"
  6663.                         ELSE
  6664.                         KeywordValue$ = KeyWordValue$ + "     <----   From Command Line"
  6665.                         END IF
  6666.                 END IF
  6667.  
  6668.           case "CompanyName"
  6669.                 KeywordValue$ = GetSymbolValue(SYM_COMPANY$)
  6670.                 scompany$ = "CompanyName:" + KeywordValue$ 
  6671.  
  6672.           case "InstallType"
  6673.                 KeywordValue$ = GetSymbolValue(SYM_NETWORK$)
  6674.                 SELECT CASE KeywordValue$                
  6675.                       case gSTANDARD$
  6676.                          KeywordValue$ = "1 (Standard)" 
  6677.                       case gSERVER$
  6678.                          KeywordValue$ = "2 (Server)"
  6679.                       case gDISTRIBUTION$
  6680.                          KeywordValue$ = "3 (Distribution)"
  6681.                 END SELECT
  6682.                 stype$ = "InstallType:" + KeywordValue$
  6683.  
  6684.           case "Autoexec"
  6685.                 KeywordValue$ = GetSymbolValue(SYM_AUTOEXEC_CHOICE$)
  6686.                 SELECT CASE KeywordValue$
  6687.                         case gAUTO$
  6688.                            KeywordValue$ = "1 (Auto)"         
  6689.                         case gAUTOCOPY$                
  6690.                            KeywordValue$ = "2 (AutoCopy)"
  6691.                         case gMAN$
  6692.                            KeywordValue$ = "0 (Manual)"
  6693.                 END SELECT
  6694.  
  6695.           case "ProgramGroup"
  6696.                 KeywordValue$ = Reg_GetProgManagerGroupName(1)
  6697.                 sproggroup$ = "ProgramGroup:" + KeywordValue$
  6698.  
  6699.           case "Licenser"
  6700.                 KeywordValue$ = "NOT IMPLEMENTED YET!!!" 
  6701.         
  6702.           case "LICDIR"
  6703.                 KeywordValue$ = GetSymbolValue(SYM_LICDIR$)
  6704.  
  6705.           case "LICCOUNTDIR"
  6706.                 n% = Reg_GetNumberOfProducts()
  6707.                 FOR i% = 1 to n%
  6708.                   IF Reg_GetProdSupportForLicense (i%) <> FALSE THEN
  6709.                     licensedprod% = i%
  6710.                     KeywordValue$ = Reg_GetCountDirectory(licensedprod%)
  6711.                     EXIT FOR
  6712.                   ELSE
  6713.                     KeywordValue$ = "Licenser not supported"    
  6714.                   END IF
  6715.                 NEXT
  6716.  
  6717.           case "NodeOptions"
  6718.                 KeywordValue$ = TBD$
  6719.  
  6720.           case "Consolidation"
  6721.                 KeywordValue$ = TBD$
  6722.  
  6723.           case "LOTUSAPPDIR"
  6724.                 slotusappdir$ = "Lotusapp Dir:" + KeywordValue$
  6725.  
  6726.           case "SQLServerName"
  6727.                 KeywordValue$ = TBD$
  6728.  
  6729.           case "PARADOXNetInfo"
  6730.                 KeywordValue$ = TBD$
  6731.  
  6732.           case "BASEDIR"
  6733.                 KeywordValue$ =GetSymbolValue(SYM_BASEDIR$) 
  6734.  
  6735.           case "SizeofInstall"
  6736.                 KeywordValue$ = GetSymbolValue(SYM_SIZEOFINSTALL$)
  6737.  
  6738.                 SELECT CASE KeywordValue$
  6739.                         case gCOMPLETE$
  6740.                            KeywordValue$ = "1 (Complete)"         
  6741.                         case gLAPTOP$                
  6742.                            KeywordValue$ = "2 (Laptop)"
  6743.                         case gCUSTOM$
  6744.                            KeywordValue$ = "3 (Custom)"
  6745.                 END SELECT
  6746.                 ssize$ = "SizeofInstall" + KeywordValue$        
  6747.         
  6748.           case "123"
  6749.                 KeywordValue$ = TBD$
  6750.  
  6751.           case "AMI"
  6752.                 KeywordValue$ = TBD$
  6753.  
  6754.           case "ORG"
  6755.                 KeywordValue$ = TBD$
  6756.  
  6757.           case "APR"
  6758.                 KeywordValue$ = TBD$
  6759.  
  6760.           case "123DIR"
  6761.                 KeywordValue$ = GetSymbolValue(KeywordName$)
  6762.  
  6763.           case "123WORKDIR"
  6764.  
  6765.                 IF GetSymbolValue(SYM_NETWORK$) = gSTANDARD$  OR _
  6766.                    GetSymbolValue(SYM_NETWORK$) = gNODE$ THEN
  6767.                         KeywordValue$ = GetSymbolValue(KeywordName$) 
  6768.                 ELSE
  6769.                 KeywordValue$ = "Only supported in Standalone or Node"
  6770.                 END IF
  6771.  
  6772.           case "Customize123"
  6773.                 KeywordValue$ = TBD$
  6774.  
  6775.           case "AMIDIR"
  6776.                 KeywordValue$ = GetListItem("AMIDIRS", 1) 
  6777.  
  6778.           case "ORGDIR"
  6779.                 KeywordValue$ = GetListItem("ORGDIRS", 1) 
  6780.        
  6781.  
  6782.         END SELECT 
  6783.  
  6784.         mybuffer$ = KeywordName$ + "="+ KeywordValue$
  6785.         notused% = WriteToFile(DebugLog$, mybuffer$)
  6786.  
  6787.         KeywordNumber% = KeywordNumber% + 1
  6788.         KeywordTag$=KeywordPref$+LTRIM$(STR(KeywordNumber%))
  6789.         KeywordName$ = GetIniKeyString(DebugIni$,SectionName$, KeywordTag$)
  6790.         LOOP UNTIL KeywordName$ = ""
  6791.  
  6792. ELSE
  6793.         mybuffer$ = mybuffer$ + " missing from RSP"        
  6794.         notused% = WriteToFile(DebugLog$, mybuffer$)
  6795. END IF
  6796.  
  6797.  
  6798. SectionNumber% = SectionNumber% + 1
  6799. SectionTag$=SectionPref$+LTRIM$(STR(SectionNumber%))
  6800.  
  6801.  
  6802. SectionName$ = GetIniKeyString(DebugIni$,"Sections", SectionTag$)
  6803.  
  6804. LOOP UNTIL SectionName$ = ""
  6805.  
  6806. Lot_AutoWriteOutDebugFile = 1
  6807.  
  6808.  
  6809.  
  6810. NODEBUGLOG:
  6811.  
  6812. ELSE
  6813.  
  6814. END IF
  6815.  
  6816.  
  6817. END FUNCTION
  6818.  
  6819.  
  6820.  
  6821.  
  6822.  
  6823.  
  6824.  
  6825.  
  6826.  
  6827.  
  6828.  
  6829.  
  6830. PUBLIC FUNCTION Lot_AutoIsThisNetLotusApp (LotusIniPath$,ExistingCommDir$) AS INTEGER
  6831. DIM path$, directory$
  6832.  
  6833.    path$ = LotusIniPath$
  6834.    directory$  = ExistingCommDir$
  6835.    CreateIniKeyValue path$, "Lotus Applications", "Net Common Directory", Lot_TrimEndSlash(directory$), cmoOverwrite
  6836.    RemoveIniKey path$, "Lotus Applications", "Common Directory", cmoVital
  6837.    Lot_AutoIsThisNetLotusApp = TRUE
  6838.  
  6839. END FUNCTION
  6840.  
  6841.  
  6842.  
  6843.  
  6844.  
  6845.  
  6846.  
  6847.  
  6848.  
  6849.  
  6850.  
  6851.  
  6852. PUBLIC FUNCTION Lot_AutoConsolidateMoveCopy () AS INTEGER
  6853.    
  6854.    
  6855.    SetSymbolValue "SYM_MOVE", "0"
  6856.    SetSymbolValue "SYM_COPY", "1"
  6857.    Lot_AutoConsolidateMoveCopy = TRUE
  6858. END FUNCTION
  6859.  
  6860.  
  6861.  
  6862.  
  6863.  
  6864.  
  6865.  
  6866.  
  6867.  
  6868.  
  6869.  
  6870.  
  6871. PUBLIC FUNCTION Lot_AutoConsolidateLotusAppDir (gConsolidateSize&) AS INTEGER
  6872. DIM dirToChange$, notused%, Size&
  6873.  
  6874.    Size& = gConsolidateSize&
  6875.    
  6876.    dirToChange$ = GetSymbolValue(SYM_LOTUSAPPDIR$)
  6877.  
  6878.    IF ValidatePath(dirToChange$) = FALSE THEN
  6879.       notused%=WriteToFile(GetSymbolValue(SYM_LOGGINGPATH$),"ERROR:"+dirToChange$)
  6880.       dirToChange$ = GetSymbolValue(SYM_DEFAULT_LOTUSAPP$)
  6881.       IF ValidatePath(dirToChange$) = FALSE THEN
  6882.          notused%=WriteToFile(GetSymbolValue(SYM_LOGGINGPATH$),"ERROR:"+dirToChange$)
  6883.          ERROR STFQUIT
  6884.          GOTO EXIT_CONSLOTUSAPPDIR
  6885.       ELSE
  6886.          GOTO NEXT_CONSOLIDATELOTUSAPPDIR
  6887.       END IF
  6888.    ELSE
  6889.       
  6890. NEXT_CONSOLIDATELOTUSAPPDIR:
  6891.  
  6892.       IF GetFreeSpaceForDrive(MID$(dirToChange$,1,1)) < Size& THEN
  6893.          ShowPathError SID_DRV_NOTENOUGHSPACE, 0, dirToChange$
  6894.          ERROR STFQUIT
  6895.          GOTO EXIT_CONSLOTUSAPPDIR
  6896.       END IF
  6897.       
  6898.       IF dirToChange$ = GetSymbolValue(SYM_EXISTINGNETCOMMDIR$) THEN
  6899.          ShowPathError SID_ERR_SHARE_NETEQLOCAL1, SID_ERR_SHARE_NETEQLOCAL2, dirToChange$
  6900.          ERROR STFQUIT
  6901.          GOTO EXIT_CONSLOTUSAPPDIR
  6902.       END IF
  6903.    END IF
  6904.       
  6905.  
  6906.    
  6907.    SetSymbolValue "SYM_MOVE", "0"
  6908.    SetSymbolValue "SYM_COPY", "1"
  6909.    SetSymbolValue SYM_LOTUSAPPDIR$, dirToChange$
  6910.    SetSymbolValue SYM_LOTUSAPPEXISTS$,"1"
  6911.    CreateDir dirToChange$, cmoNone
  6912.    Lot_RefreshDestination(SYM_LOTUSAPPDIR$)
  6913.    DL_SetNotesDataPath
  6914.    DL_SetOraclePath
  6915.  
  6916.    Lot_AutoConsolidateLotusAppDir = TRUE
  6917.  
  6918. EXIT_CONSLOTUSAPPDIR:
  6919.  
  6920. END FUNCTION
  6921.  
  6922.  
  6923.  
  6924.  
  6925.  
  6926.  
  6927.  
  6928.  
  6929.  
  6930.  
  6931.  
  6932. PUBLIC FUNCTION Lot_AutoChangeLotusAppDir () AS INTEGER
  6933. DIM dirToChange$,dirSym$,notused%
  6934.  
  6935.    Lot_AutoChangeLotusAppDir = FALSE
  6936.    dirToChange$ = GetSymbolValue(SYM_LOTUSAPPDIR$)
  6937.    IF ValidatePath(dirToChange$) = FALSE THEN
  6938.       notused%=WriteToFile(GetSymbolValue(SYM_LOGGINGPATH$),"ERROR:"+dirToChange$)
  6939.       dirToChange$ = GetSymbolValue(SYM_DEFAULT_LOTUSAPP$)
  6940.       IF ValidatePath(dirToChange$) = FALSE THEN
  6941.          notused%=WriteToFile(GetSymbolValue(SYM_LOGGINGPATH$),"ERROR:"+dirToChange$)
  6942.          ERROR STFQUIT
  6943.          GOTO EXIT_CHANGELOTUSAPPDIR
  6944.       END IF 
  6945.    ELSE
  6946.       dirSym$ = GetSymbolValue(SYM_CHANGEDIRSYMBOL$)
  6947.       SetSymbolValue dirSym$, dirToChange$
  6948.       Lot_RefreshDestination(dirSym$)
  6949.    END IF
  6950.    Lot_AutoChangeLotusAppDir = TRUE
  6951. EXIT_CHANGELOTUSAPPDIR:
  6952.  
  6953. END FUNCTION
  6954.  
  6955.  
  6956.  
  6957.  
  6958.  
  6959.  
  6960.  
  6961.  
  6962.  
  6963.  
  6964. PUBLIC FUNCTION Lot_AutoSuiteAppSelect () AS INTEGER
  6965.     DIM Selection%, lname$, prodno%, nProds%
  6966.     DIM sname$, rspval$    
  6967.  
  6968.    Lot_AutoSuiteAppSelect = FALSE
  6969.  
  6970.    sname$ = "Select Applications"     
  6971.    
  6972.    nProds% = Reg_GetNumberOfProducts()
  6973.  
  6974.    If GetSymbolValue(SYM_SINGLESMARTSUITE$)= gSMARTSUITE$ Then
  6975.       For prodno% = 2 to nProds%
  6976.          lname$ = Reg_GetProductAcronym(prodno%)
  6977.          IF lname$ <> "" AND lname$ <> "INST" AND lname$ <> "LIC" Then
  6978.                rspval$ = Lot_GetKeyValFromResponseFile(sname$, lname$)
  6979.                IF rspval$ <> "" THEN
  6980.                  Selection% = CINT(rspval$)
  6981.                ELSE
  6982.                  Selection% = -1
  6983.                END IF  
  6984.            IF Selection% <> 0 AND Selection% <> 1 THEN
  6985.           
  6986.              ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_SELECTAPPS)
  6987.              ERROR STFQUIT
  6988.            ELSE
  6989.           Reg_SetUIInOrOut prodno%, Selection%
  6990.            END IF
  6991.                      
  6992.       END IF    
  6993.       Next
  6994.    End IF
  6995.  
  6996.    Lot_AutoSuiteAppSelect = TRUE
  6997.  
  6998. END FUNCTION
  6999.  
  7000.  
  7001.  
  7002.  
  7003.  
  7004.  
  7005.  
  7006.  
  7007.  
  7008.  
  7009.  
  7010. PUBLIC FUNCTION Lot_AutoProcessNodeOptions () AS INTEGER
  7011.  
  7012. DIM AllProdNum%,prodNum%,AllOptNum%,OptName$,OptNum%,notused%
  7013. DIM nodeoption%, Chapter$, lname$, rspval$
  7014.  
  7015. Lot_AutoProcessNodeOptions = FALSE
  7016.  
  7017. lname$ = "Node Install"
  7018.  
  7019.       
  7020.     IF Lot_IsAnyNodeOptAvailToNode() <> 0 THEN
  7021.          rspval$ = Lot_GetKeyValFromResponseFile(lname$, "NodeOptions")
  7022.  
  7023.          IF rspval$ <> "" THEN
  7024.              nodeoption% = CINT(rspval$)
  7025.          ELSE
  7026.                  nodeoption% = -1
  7027.          END IF                
  7028.  
  7029.        IF nodeoption% <> 0 AND nodeoption% <> 1 THEN
  7030.         
  7031.         ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_NODEOPTIONS) + "  " + lname$
  7032.             ERROR STFQUIT
  7033.        ELSE
  7034.       IF nodeoption% = 0 THEN
  7035.         
  7036.         AllProdNum% = 0
  7037.             AllProdNum% = Reg_GetNumberOfProducts()
  7038.           IF AllProdNum% <> 0 THEN
  7039.            FOR prodNum%=1 TO AllProdNum%
  7040.           AllOptNum% = 0
  7041.           AllOptNum% = Reg_GetNumofNodeOptions(prodNum%)
  7042.           IF AllOptNum% <> 0 THEN
  7043.              
  7044.              FOR OptNum%=1 TO AllOptNum% 
  7045.             OptName$ = Reg_GetNodeOptionStr(prodNum%,OptNum%)
  7046.             Chapter$ = Lot_GetChapterFromKeyword(OptName$)
  7047.             notused% = Lot_SetChapterFilesInCopyListInOrOut(Chapter$,0)
  7048.              NEXT
  7049.           END IF
  7050.            NEXT
  7051.         END IF
  7052.       ELSE
  7053.         
  7054.         AllProdNum% = 0
  7055.         AllProdNum% = Reg_GetNumberOfProducts()
  7056.         IF AllProdNum% <> 0 THEN
  7057.            FOR prodNum%=1 TO AllProdNum%
  7058.           AllOptNum% = 0
  7059.           AllOptNum% = Reg_GetNumofNodeOptions(prodNum%)
  7060.           IF AllOptNum% <> 0 THEN
  7061.              
  7062.              FOR OptNum%=1 TO AllOptNum% 
  7063.             OptName$ = Reg_GetNodeOptionStr(prodNum%,OptNum%)
  7064.             Chapter$ = Lot_GetChapterFromKeyword(OptName$)
  7065.                         IF Lot_IsTheNodeOptionsAvailToNode(prodNum%,OptName$) = 1 THEN
  7066.                notused% = Lot_SetChapterFilesInCopyListInOrOut(Chapter$,1)
  7067.                         END IF
  7068.              NEXT
  7069.           END IF
  7070.            NEXT
  7071.         END IF
  7072.       END IF
  7073.        END IF
  7074.     END IF
  7075.  
  7076. Lot_AutoProcessNodeOptions = TRUE
  7077.  
  7078. END FUNCTION
  7079.  
  7080.  
  7081. PUBLIC FUNCTION Lot_AutoGetSetLicenserInfo () AS INTEGER
  7082.  
  7083.  
  7084.  
  7085.  
  7086.  
  7087.  
  7088.  
  7089.  
  7090. STATIC licselected%, licensedprod% 
  7091. DIM i%, n%, dirtochange$, lname$
  7092. DIM chpt$, notused%, countdir$
  7093. DIM firstslash%, lastslash%, fullpath$
  7094. DIM countbasedir$, counttaildir$, rspval$
  7095.  
  7096. Lot_AutoGetSetLicenserInfo = FALSE
  7097.  
  7098. lname$ = "Server Install"
  7099.  
  7100. licensedprod% = 0
  7101. licselected% = 0
  7102. n% = Reg_GetNumberOfProducts()
  7103.  
  7104.  
  7105. FOR i% = 1 to n%
  7106.    IF Reg_GetProdSupportForLicense (i%) <> FALSE THEN
  7107.       licensedprod% = i%
  7108.       EXIT FOR
  7109.    END IF
  7110. NEXT
  7111.  
  7112. IF licensedprod% <> 0 THEN
  7113.  
  7114. rspval$ = Lot_GetKeyValFromResponseFile (lname$, "Licenser")
  7115.  
  7116. IF rspval$ <> "" THEN
  7117.         licselected% = CINT(rspval$)
  7118. ELSE
  7119.         ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_LICENSER) + "  " + lname$
  7120.         ERROR STFQUIT        
  7121. END IF                
  7122.  
  7123. END IF
  7124.  
  7125.       IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  7126.           
  7127.     
  7128.           FOR i% = 1 to n%
  7129.          IF Reg_GetProdSupportForLicense (i%) <> FALSE AND _
  7130.         Reg_GetUIInOrOut(i%) <> FALSE  THEN
  7131.           Reg_SetLicenseSelected i%, licselected%
  7132.          END IF
  7133.           NEXT
  7134.       ELSE    
  7135.      Reg_SetLicenseSelected licensedprod%, licselected%
  7136.       END IF
  7137.  
  7138. IF licselected% = 1 THEN
  7139.       
  7140.       IF Reg_IsLicenseSelected(licensedprod%) <> FALSE Then
  7141.          chpt$ = Lot_GetChapterFromKeyword("LIC" + gTOP$)
  7142.          notused% = Lot_SetChapterFilesInCopyListInOrOut(chpt$, 1)    
  7143.       ELSE
  7144.          chpt$ = Lot_GetChapterFromKeyword("LIC" + gTOP$)
  7145.          notused% = Lot_SetChapterFilesInCopyListInOrOut(chpt$, 0)
  7146.       END IF
  7147.  
  7148.       IF Reg_IsLicenseSelected(licensedprod%) <> FALSE Then
  7149.          
  7150.          dirtochange$ = Lot_GetKeyValFromResponseFile ("Server Install", "LICDIR")  
  7151.          IF Lot_AutoCheckRSPPath(dirtochange$) <> "" THEN
  7152.              SetSymbolValue SYM_LICDIR$, dirtochange$
  7153.              Lot_RefreshDestination(SYM_LICDIR$)
  7154.           ELSE
  7155.              ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_LICDIR) + "  " + lname$
  7156.          ERROR STFQUIT
  7157.       END IF
  7158.  
  7159.           
  7160.           dirtochange$ = Lot_GetKeyValFromResponseFile (lname$, "LICCOUNTDIR")   
  7161.            IF Lot_AutoCheckRSPPath(dirtochange$) = "" THEN
  7162.              ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_LICDIR) + "  " + lname$
  7163.          ERROR STFQUIT
  7164.        END IF
  7165.            licensedprod% = 0
  7166.            FOR i% = 1 to Reg_GetNumberofProducts()
  7167.                IF Reg_GetProdSupportForLicense(i%) <> FALSE THEN
  7168.                    licensedprod% = i%
  7169.                    countdir$ = Lot_TrimEndSlash(Reg_GetCountDirectory(licensedprod%))
  7170.                    firstslash% = INSTR(countdir$, "\") : lastslash% = firstslash%
  7171.                    WHILE firstslash% <> 0
  7172.                        lastslash% = firstslash% : firstslash% = INSTR(firstslash%+1, countdir$, "\")
  7173.                    WEND
  7174.                    countdir$ = countdir$ + "\"
  7175.                    counttaildir$ = RIGHT$(countdir$, LEN(countdir$) - lastslash%)
  7176.                    fullpath$ = MakePath(dirtochange$, counttaildir$)
  7177.                 IF ValidatePath(fullpath$) <> FALSE THEN
  7178.                        Reg_SetCountDirectory licensedprod%, fullpath$
  7179.                    ELSE
  7180.                                 ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_LICCOUNTDIR) + "  " + lname$
  7181.                     ERROR STFQUIT
  7182.                    END IF
  7183.                END IF
  7184.            NEXT
  7185.       END IF
  7186.  
  7187. END IF                  
  7188.  
  7189.  
  7190.  
  7191. Lot_AutoGetSetLicenserInfo = TRUE
  7192.  
  7193. END FUNCTION
  7194.  
  7195. 
  7196. 
  7197.