home *** CD-ROM | disk | FTP | other *** search
- ********************** ' MultiNet Source Code ' ***********************
- ** ' SBT Corporation ' **
- ** ' One Harbor Drive, Sausalito, California 94965 ' **
- ** ' Telephone (415) 331-9900 ' **
- ***********************************************************************
- ** ' (c) Copyright 1984, Revisions 1985 - 1990 SBT Corporation ' **
- ** ' All Rights Reserved by SBT Corporation ' **
- ** ' ' **
- ***********************************************************************
- ** ' 06/04/90 = Last Update ** SYSINST.PRG ** Version 6.35.00 ' **
- ***********************************************************************
- * ' System wide install program, called by XXINST.PRG
- *
- SET INTENSITY ON
- RELEASE m0cmddr, m0sysdr, mchars, m0border, m0switchar, m0drvpict, ;
- m0cname, m0company, m0color, m0date, m0port, m0stpprn, m0prnesc, m0litebar
- PUBLIC m0cmddr, m0sysdr, mchars, m0border, m0switchar, m0drvpict, ;
- m0cname, m0company, m0color, m0date, m0port, m0stpprn, m0prnesc, m0litebar
- STORE .f. TO m0stpprn, m0prnesc
- IF TYPE('m0single') = 'U'
- RELEASE m0single
- PUBLIC m0single
- STORE .f. TO m0single
- ENDIF
- IF TYPE('m0trial') = 'U'
- RELEASE m0trial
- PUBLIC m0trial
- STORE .f. TO m0trial
- ENDIF
- SET STATUS OFF
- DO CASE
- CASE ISCOLOR()
- SET COLOR TO W+/B,N/W,B
- STORE 'W+ /B ,N /W ,B ' TO m0color
- CASE 'MAC' $ UPPER(OS()) .AND. fox
- SET COLOR TO N/W,W/N,N
- STORE 'N /W ,W /N ,N ' TO m0color
- OTHERWISE
- SET COLOR TO W+/N,N/W,N
- STORE 'W+ /N ,N /W ,N ' TO m0color
- ENDCASE
- CLEAR
- IF .NOT. m0single
- SET EXCLUSIVE OFF
- ENDIF
- STORE 'Y' TO ibmcomp
- CLEAR GETS
- DO CASE
- CASE 'MAC' $ UPPER(OS())
- STORE 'M' TO mos
- CASE 'NIX' $ UPPER(OS())
- STORE 'X' TO mos
- OTHERWISE
- STORE 'D' TO mos
- ENDCASE
- CLEAR
- STORE 'Install Program' TO m0cname
- STORE '=============================================' + ' ' + ;
- TRIM(m0cname) + ' ' + '=============================================' ;
- TO m0company
- STORE SUBSTR(m0company,(LEN(m0company) - 76)/2,78) + mversion TO m0company
- @ 1,40 - INT(LEN(m0system)/2) SAY m0system
- @ 1,73 SAY SUBSTR(m0company,79,6)
- @ 2,1 SAY SUBSTR(m0company,1,78)
- @ 4,5 SAY 'What type of Operating System are you using ? ===>'
- @ 4,56 GET mos PICTURE '!'
- @ 6,5 SAY "'D' for PCDOS, MS-DOS, PC-MOS/386"
- @ 7,5 SAY "'M' for Apple Macintosh"
- @ 8,5 SAY "'X' for Xenix/Unix supporting SCO FoxBASE+"
- @ 9,5 SAY "'A' for Atari ST"
- @ 10,5 SAY "'Q' to Quit"
- READ SAVE
- DO WHILE .NOT. mos $ 'DXAMQ'
- ?? CHR(7)
- READ SAVE
- ENDDO
- CLEAR GETS
- @ 4,0 CLEAR
- DO CASE
- CASE mos $ 'DA'
- STORE '\' TO m0switchar
- STORE '!:!!!!!!!!!!!!!!!!!!!!!!!!!!!!' TO m0drvpict
- CASE mos = 'X'
- STORE '/' TO m0switchar
- STORE 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' TO m0drvpict
- CASE mos = 'M'
- STORE ':' TO m0switchar
- STORE 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' TO m0drvpict
- OTHERWISE
- CLOSE DATABASES
- CLEAR ALL
- CLEAR
- CANCEL
- ENDCASE
- * ' This to prevent overwriting customers files
- IF m0pgmid $ 'AR.JC.PO.SO.MA.AP.CM.TS'
- @ 23,0
- @ 23,2 SAY '***** Checking System Lookup Tables *****'
- IF .NOT. FILE ('systabl.dbf')
- IF FILE ('systablx.dbf')
- RENAME systablx.dbf TO systabl.dbf
- ENDIF
- ELSE
- IF FILE ('systablx.dbf')
- DELETE FILE systablx.dbf
- ENDIF
- ENDIF
- IF .NOT. FILE ('systabc.ndx')
- IF FILE ('systabcx.ndx')
- RENAME systabcx.ndx TO systabc.ndx
- ENDIF
- ELSE
- IF FILE ('systabcx.ndx')
- DELETE FILE systabcx.ndx
- ENDIF
- ENDIF
- IF .NOT. FILE ('systabn.ndx')
- IF FILE ('systabnx.ndx')
- RENAME systabnx.ndx TO systabn.ndx
- ENDIF
- ELSE
- IF FILE ('systabnx.ndx')
- DELETE FILE systabnx.ndx
- ENDIF
- ENDIF
- ENDIF
- IF .NOT. FILE('sysdata.dbf')
- IF .NOT. FILE('sysd&m0pgmid.3.dbf')
- STORE ' ' TO mans
- ?? CHR(7)
- CLEAR
- @ 2,4 SAY 'Warning [9002] - SYSDATA.DBF Missing.'
- @ 4,4 SAY 'Informational only - No data has been lost.'
- @ 6,4 SAY 'Neither the SYSDATA.DBF nor the SYSD' + m0pgmid + ;
- '3.DBF system files'
- @ 7,4 SAY 'are in the current drive and directory. Make sure one of the '
- @ 8,4 SAY 'system files is present and try again.'
- @ 10,4 SAY 'Installation Cancelled. Press any key to continue...' ;
- GET mans
- READ
- SET TALK ON
- SET SAFETY ON
- CLEAR ALL
- CANCEL
- ENDIF
- RENAME sysd&m0pgmid.3.dbf TO sysdata.dbf
- ELSE
- USE sysdata
- IF .NOT. m0single
- STORE FLOCK() TO lockedf
- IF .NOT. lockedf
- @ 23,3 SAY 'File ' + UPPER(DBF()) + '. Attempting to lock file...'
- DO WHILE .NOT. lockedf
- STORE FLOCK() TO lockedf
- ENDDO
- @ 23,0
- ENDIF
- ENDIF
- STORE .t. TO mupdated
- IF LEN(sysid) < 4
- STORE .f. TO mupdated
- ELSE
- IF LEN(drive) < 200
- STORE .f. TO mupdated
- ELSE
- IF LEN(link) < 200
- STORE .f. TO mupdated
- ENDIF
- ENDIF
- ENDIF
- IF .NOT. mupdated
- COPY TO sysbuil.dbf STRUCTURE EXTENDED
- USE sysbuil EXCLUSIVE
- LOCATE FOR field_name = 'SYSID'
- REPLACE field_len WITH 4
- LOCATE FOR field_name = 'DRIVE'
- REPLACE field_len WITH 200
- LOCATE FOR field_name = 'LINK'
- REPLACE field_len WITH 200
- @ 4,1 SAY 'Updating existing SYSDATA.DBF file structure. '
- USE
- CREATE systemp.dbf FROM sysbuil.dbf
- USE systemp EXCLUSIVE
- APPEND FROM sysdata
- IF .NOT. m0pgmid = 'MM'
- REPLACE ALL sysid WITH m0pgmid + '01' FOR SUBSTR(sysid,1,2) = m0pgmid
- ENDIF
- USE
- DELETE FILE sysdata.dbf
- DELETE FILE sysbuil.dbf
- RENAME systemp.dbf TO sysdata.dbf
- USE sysdata
- ENDIF && mupdated
- IF m0pgmid = 'MM'
- LOCATE FOR UPPER(SUBSTR(sysid,1,2)) = 'M0'
- ELSE
- LOCATE FOR UPPER(SUBSTR(sysid,1,2)) = m0pgmid
- ENDIF
- IF EOF()
- IF .NOT. m0single
- IF .NOT. lockedf
- @ 23,3 SAY 'File ' + UPPER(DBF()) + '. Attempting to lock file...'
- DO WHILE .NOT. lockedf
- STORE FLOCK() TO lockedf
- ENDDO
- @ 23,0
- ENDIF
- ENDIF
- IF FILE('sysd&m0pgmid.3.dbf')
- IF m0pgmid = 'MM'
- APPEND FROM sysd&m0pgmid.3.dbf FOR UPPER(SUBSTR(sysid,1,2)) = 'M0'
- ELSE
- APPEND FROM sysd&m0pgmid.3.dbf FOR UPPER(SUBSTR(sysid,1,2)) = m0pgmid
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- USE sysdata
- IF .NOT. m0single
- STORE FLOCK() TO lockedf
- IF .NOT. lockedf
- @ 23,3 SAY 'File ' + UPPER(DBF()) + '. Attempting to lock file...'
- DO WHILE .NOT. lockedf
- STORE FLOCK() TO lockedf
- ENDDO
- @ 23,0
- ENDIF
- ENDIF
- IF ('MAC' $ UPPER(OS()) .AND. fox)
- STORE 'N' TO revvideo
- ELSE
- STORE 'Y' TO revvideo
- ENDIF
- STORE 'N' TO mcolon
- IF mos $ 'DX'
- @ 4,0 CLEAR
- @ 4,5 SAY 'Are you using an IBM PC (or compatible) computer ? ' + ;
- '(Y/N) ====> ' GET ibmcomp PICTURE 'Y'
- READ
- CLEAR GETS
- ELSE
- STORE 'N' TO ibmcomp
- ENDIF
- @ 23,0
- @ 23,2 SAY '***** Preparing System File *****'
- IF m0pgmid = 'MM'
- LOCATE FOR UPPER(SUBSTR(sysid,1,2)) = 'M0' .AND. SUBSTR(sysid,3,2) = ' '
- ELSE
- LOCATE FOR UPPER(SUBSTR(sysid,1,2)) = m0pgmid .AND. SUBSTR(sysid,3,2) <> ' '
- ENDIF
- IF EOF()
- APPEND BLANK
- DO CASE
- CASE m0pgmid = 'MM' .AND. 'MAC' $ UPPER(OS()) .AND. fox
- REPLACE sysid WITH 'M0', pass2 WITH 'D ', drive WITH ;
- 'C:' + SPACE(28) + 'C:' + SPACE(28) + 'C:' + SPACE(28) + 'YN' + ;
- SPACE(105) + SUBSTR(m0vers,1,1) + SUBSTR(m0vers,3,2)
- CASE m0pgmid = 'MM'
- REPLACE sysid WITH 'M0', pass2 WITH 'D ', drive WITH ;
- 'C:' + SPACE(28) + 'C:' + SPACE(28) + 'C:' + SPACE(28) + 'NN' + ;
- SPACE(105) + SUBSTR(m0vers,1,1) + SUBSTR(m0vers,3,2)
- CASE m0pgmid = 'PR' .AND. 'MAC' $ UPPER(OS()) .AND. fox
- REPLACE sysid WITH m0pgmid + '01', pass2 WITH 'D ', drive WITH ;
- 'C:' + SPACE(28) + 'C:' + SPACE(28) + 'C:' + SPACE(28) + 'YN' + ;
- SPACE(105) + SUBSTR(m0vers,1,1) + SUBSTR(m0vers,3,2)
- CASE m0pgmid = 'PR'
- REPLACE sysid WITH m0pgmid + '01', pass2 WITH 'D ', drive WITH ;
- 'C:' + SPACE(28) + 'C:' + SPACE(28) + 'C:' + SPACE(28) + 'NN' + ;
- SPACE(105) + SUBSTR(m0vers,1,1) + SUBSTR(m0vers,3,2)
- CASE 'MAC' $ UPPER(OS()) .AND. fox
- REPLACE sysid WITH m0pgmid + '01', pass2 WITH 'D ', drive WITH ;
- 'C:' + SPACE(28) + 'C:' + SPACE(28) + 'C:' + SPACE(28) + 'Y' + ;
- SPACE(106) + SUBSTR(m0vers,1,1) + SUBSTR(m0vers,3,2)
- REPLACE printer WITH '10 N'
- OTHERWISE
- REPLACE sysid WITH m0pgmid + '01', pass2 WITH 'D ', drive WITH ;
- 'C:' + SPACE(28) + 'C:' + SPACE(28) + 'C:' + SPACE(28) + 'N' + ;
- SPACE(106) + SUBSTR(m0vers,1,1) + SUBSTR(m0vers,3,2)
- REPLACE printer WITH '10 N'
- ENDCASE
- REPLACE printer WITH '10 N'
- DO CASE
- CASE m0pgmid $ 'AP.SO.PO'
- REPLACE link WITH 'N' + SPACE(199), int1 WITH 10000
- CASE m0pgmid = 'AR'
- REPLACE link WITH 'N01C:' + SPACE(195), int1 WITH 10000
- CASE m0pgmid = 'JC'
- REPLACE link WITH 'N' + SPACE(32) + 'N' + SPACE(32) + 'N' + ;
- SPACE(32) + 'Y'
- CASE m0pgmid = 'AS'
- REPLACE link WITH 'N' + SPACE(199), int1 WITH 10000
- CASE m0pgmid = 'DB'
- REPLACE link WITH 'N01CC:' + SPACE(194), int1 WITH 10000, ;
- int2 WITH 0, int3 WITH 0
- CASE m0pgmid = 'MA'
- REPLACE link WITH 'N01C:' + SPACE(195), int1 WITH 10000
- CASE m0pgmid = 'MN'
- REPLACE link WITH 'N01C:' + SPACE(195)
- CASE m0pgmid = 'PR'
- REPLACE link WITH 'NNC:' + SPACE(28) + 'C:' + SPACE(28) + 'Y0101'
- ENDCASE
- ENDIF
- IF DELETED()
- RECALL
- ENDIF
- LOCATE FOR UPPER(sysid) = 'MM '
- STORE .t. TO ok
- IF EOF()
- STORE .f. TO ok
- ELSE
- IF DELETED()
- RECALL
- ENDIF
- IF SUBSTR(str3,20,3) <> ibmcomp + revvideo + mcolon .OR. ;
- SUBSTR(link,1,2) <> m0switchar + mos
- STORE .f. TO ok
- ENDIF
- ENDIF
- IF .NOT. ok
- IF EOF()
- APPEND BLANK
- REPLACE sysid WITH 'MM '
- ENDIF
- * ' Fields used in MM record:
- * ' Directory path separator: SUBSTR(link,1,1)
- * ' Operating Sys Type (D/M/X/A): SUBSTR(link,1,1)
- * ' Last date logged on: SUBSTR(str8,1,8)
- * ' IBM compatible (Y/N): SUBSTR(str3,20,1)
- * ' Left arrow character: SUBSTR(str3,23,1)
- * ' 10 arrow characters: SUBSTR(str3,24,10)
- * ' Right arrow character: SUBSTR(str3,34,1)
- * ' Menu border characters: str2 + SUBSTR(str3,1,14)
- DO CASE
- CASE mcmax
- STORE CHR(231) TO toplft
- STORE CHR(242) TO topmid
- STORE CHR(232) TO toprt
- STORE CHR(233) TO bottlft
- STORE CHR(243) TO bottmid
- STORE CHR(234) TO bottrt
- STORE CHR(229) TO vertedge
- STORE CHR(218) TO vertcntr
- STORE CHR(230) TO boldch
- STORE CHR(219) TO centch
- STORE CHR(240) TO centlft
- STORE CHR(228) TO cross
- STORE CHR(241) TO centrt
- STORE '>' TO rtarrow
- STORE '<' TO lftarrow
- STORE CHR(230) TO arrow
- CASE ibmcomp = 'Y'
- STORE CHR(201) TO toplft
- STORE CHR(209) TO topmid
- STORE CHR(187) TO toprt
- STORE CHR(200) TO bottlft
- STORE CHR(207) TO bottmid
- STORE CHR(188) TO bottrt
- STORE CHR(186) TO vertedge
- STORE CHR(179) TO vertcntr
- STORE CHR(205) TO boldch
- STORE CHR(196) TO centch
- STORE CHR(199) TO centlft
- STORE CHR(197) TO cross
- STORE CHR(182) TO centrt
- IF mos = 'D'
- STORE CHR(16) TO rtarrow
- STORE CHR(17) TO lftarrow
- ELSE
- STORE '>' TO rtarrow
- STORE '<' TO lftarrow
- ENDIF
- STORE CHR(205) TO arrow
- OTHERWISE
- STORE '+' TO toplft
- STORE '-' TO topmid
- STORE '+' TO toprt
- STORE '+' TO bottlft
- STORE '-' TO bottmid
- STORE '+' TO bottrt
- STORE '|' TO vertedge
- STORE '|' TO vertcntr
- STORE '-' TO boldch
- STORE '-' TO centch
- STORE '|' TO centlft
- STORE '+' TO cross
- STORE '|' TO centrt
- STORE '>' TO rtarrow
- STORE '<' TO lftarrow
- STORE '=' TO arrow
- ENDCASE
- STORE boldch + boldch + boldch + boldch + boldch TO bold
- STORE bold + bold + bold + bold TO bold
- STORE bold + bold + bold + bold TO bold
- STORE centch + centch + centch + centch + centch TO cent
- STORE cent + cent + cent + cent TO cent
- STORE cent + cent TO cent
- STORE centlft + SUBSTR(cent,1,36) + cross + SUBSTR(cent,1,37) + centrt TO ;
- cent
- STORE lftarrow + arrow + arrow + arrow + arrow + arrow + arrow + ;
- arrow + arrow + arrow + arrow + rtarrow TO arrow
- STORE toplft + topmid + toprt + bottlft + bottmid + bottrt TO m0border
- STORE m0border + vertedge + vertcntr + ' ' + bold + cent TO m0border
- STORE m0border + ' ' + ibmcomp + revvideo + mcolon + arrow TO m0border
- REPLACE link WITH m0switchar + mos + SUBSTR(link,3,198), str2 WITH ;
- SUBSTR(m0border,1,150), str3 WITH SUBSTR(m0border,151,34) + SUBSTR(str3,35)
- ENDIF && .NOT. ok
- STORE a->str2 + SUBSTR(a->str3,1,34) TO m0border
- IF SUBSTR(m0border,170,1) = 'Y' .OR. mcmax
- STORE SUBSTR(m0border,10,45) + ' ' + TRIM(m0cname) + ' ' + ;
- SUBSTR(m0border,10,45) TO m0company
- ELSE
- STORE '=============================================' + ' ' + ;
- TRIM(m0cname) + ' ' + '=============================================' ;
- TO m0company
- ENDIF
- STORE SUBSTR(m0company,(LEN(m0company) - 76)/2,78) + mversion TO m0company
- SET DELIMITER OFF
- @ 1,40 - INT(LEN(m0system)/2) SAY m0system
- @ 1,73 SAY SUBSTR(m0company,79,6)
- @ 2,1 SAY SUBSTR(m0company,1,78)
- STORE .t. TO mfirst
- IF ibmcomp = 'Y' .OR. ('MAC' $ UPPER(OS()) .AND. fox)
- @ 4,0 CLEAR
- * ' Monitor type and color setup
- IF SUBSTR(str5,1,1) <> ' '
- STORE SUBSTR(str5,1,1) TO m0monitor
- ENDIF
- STORE TRIM(LTRIM(SUBSTR(str5,2,25))) TO m0color
- STORE '[ Sample Enhanced Text ]' TO msg
- DO CASE
- CASE LEN(TRIM(m0color)) > 0
- STORE TRIM(m0color) TO mcolor
- DO WHILE ' ' $ mcolor
- STORE AT(' ',mcolor) TO mpos
- STORE SUBSTR(mcolor,1,mpos-1) + SUBSTR(mcolor,mpos+1) TO mcolor
- ENDDO
- SET COLOR TO &mcolor
- CASE ISCOLOR()
- SET COLOR TO W+/B,N/W,B
- STORE 'W+ /B ,N /W ,B ' TO m0color
- CASE 'MAC' $ UPPER(OS()) .AND. fox
- SET COLOR TO N/W,W/N,N
- STORE 'N /W ,W /N ,N ' TO m0color
- OTHERWISE
- SET COLOR TO W+/N,N/W,N
- STORE 'W+ /N ,N /W ,N ' TO m0color
- ENDCASE
- DO WHILE .t.
- CLEAR
- @ 1,40 - INT(LEN(m0system)/2) SAY m0system
- @ 1,73 SAY SUBSTR(m0company,79,6)
- @ 2,1 SAY SUBSTR(m0company,1,78)
- IF mfirst
- @ 4,0 CLEAR
- @ 4,5 SAY 'Monitor Type (Color/Mono/Ask on startup) ' + ;
- SUBSTR(m0border,181,5) GET m0monitor PICTURE '!'
- READ SAVE
- DO WHILE .NOT. m0monitor $ 'CMA'
- ?? CHR(7)
- READ SAVE
- ENDDO
- ENDIF
- CLEAR GETS
- @ 4,0 CLEAR
- IF mans = 'Y'
- EXIT
- ENDIF
- @ 6,5 GET msg
- @ 6,46 SAY '[ Sample Standard Text ]'
- CLEAR GETS
- @ 10,5 SAY 'Color: Letter Code:'
- @ 12,5 SAY 'Black N'
- IF m0monitor = 'M'
- @ 8,5 SAY 'Enter shadings:'
- @ 9,8 SAY '(add + after letter for high intensity - foreground only)'
- @ 13,5 SAY 'White W'
- @ 14,5 SAY 'Underlined U'
- STORE 'N ,W ,U ,N+ ,W+ ,U+ ,' TO mvalid
- ELSE
- IF m0monitor = 'A'
- @ 4,5 SAY 'Enter the color combinations you want when you choose ' + ;
- 'color on startup.'
- ENDIF
- @ 8,5 SAY 'Enter colors:'
- @ 9,8 SAY '(add + after letter for high intensity - foreground only)'
- @ 13,5 SAY 'Blue B'
- @ 14,5 SAY 'Green G'
- @ 15,5 SAY 'Cyan BG'
- @ 10,45 SAY 'Color: Letter Code:'
- @ 12,45 SAY 'Red R'
- @ 13,45 SAY 'Magenta RB'
- @ 14,45 SAY 'Brown GR'
- @ 15,45 SAY 'White W'
- STORE 'N ,R ,B ,RB ,G ,GR ,BG ,W ,N+ ,R+ ,B+ ,RB+,G+ ,GR+,' + ;
- 'BG+,W+ ,' TO mvalid
- ENDIF && m0monitor = 'M'
- STORE SUBSTR(m0color,1,3) TO mstf
- STORE SUBSTR(m0color,5,3) TO mstb
- STORE SUBSTR(m0color,9,3) TO menf
- STORE SUBSTR(m0color,13,3) TO menb
- STORE SUBSTR(m0color,17,3) TO mbrd
- STORE SUBSTR(mbrd+SPACE(3),1,3) TO mbrd
- DO WHILE .t.
- @ 18,3 SAY 'Standard Text Foreground: ' GET mstf PICTURE '!!!'
- @ 18,49 SAY 'Standard Text Background: ' GET mstb PICTURE '!!!'
- @ 19,3 SAY 'Enhanced Text Foreground: ' GET menf PICTURE '!!!'
- @ 19,49 SAY 'Enhanced Text Background: ' GET menb PICTURE '!!!'
- IF m0monitor = 'M'
- @ 20,3 SAY 'Screen Border Color: ' GET mbrd PICTURE '!!!'
- ELSE
- @ 20,3 SAY 'Screen Border Shading: ' GET mbrd PICTURE '!!!'
- ENDIF
- @ 20,35 SAY SUBSTR(m0border,173,3) + ;
- ' (May not appear, hardware dependent.)'
- IF mfirst
- STORE .f. TO mfirst
- CLEAR GETS
- EXIT
- ENDIF
- READ
- @ 22,0
- STORE .t. TO mok, mstfok, mstbok, menfok, menbok, mbrdok
- STORE IIF(',' $ mstf .OR. .NOT. mstf $ mvalid, .f., mok) TO mok, mstfok
- STORE IIF(',' $ mstb .OR. .NOT. mstb $ mvalid, .f., mok) TO mok, mstbok
- STORE IIF(',' $ menf .OR. .NOT. menf $ mvalid, .f., mok) TO mok, menfok
- STORE IIF(',' $ menb .OR. .NOT. menb $ mvalid, .f., mok) TO mok, menbok
- STORE IIF(',' $ mbrd .OR. .NOT. mbrd $ mvalid, .f., mok) TO mok, mbrdok
- IF mok
- STORE mstf + '/' + mstb + ',' + menf + '/' + menb + ',' + mbrd TO mcolor
- STORE SUBSTR(mcolor + SPACE(25),1,25) TO m0color
- STORE TRIM(LTRIM(mcolor)) TO mcolor
- DO WHILE ' ' $ mcolor
- STORE AT(' ',mcolor) TO mpos
- STORE SUBSTR(mcolor,1,mpos-1) + SUBSTR(mcolor,mpos+1) TO mcolor
- ENDDO
- SET COLOR TO &mcolor
- EXIT
- ENDIF
- ?? CHR(7)
- DO CASE
- CASE .NOT. mstfok
- @ 22,5 SAY ;
- 'Error in Standard Text Foreground specification. Please reenter...'
- CASE .NOT. mstbok
- @ 22,5 SAY ;
- 'Error in Standard Text Background specification. Please reenter...'
- CASE .NOT. menfok
- @ 22,5 SAY ;
- 'Error in Enhanced Text Foreground specification. Please reenter...'
- CASE .NOT. menbok
- @ 22,5 SAY ;
- 'Error in Enhanced Text Background specification. Please reenter...'
- CASE .NOT. mbrdok
- @ 22,5 SAY ;
- 'Error in Standard Text Border specification. Please reenter...'
- ENDCASE
- ENDDO && WHILE .t.
- @ 6,5 GET msg
- @ 6,46 SAY '[ Sample Standard Text ]'
- CLEAR GETS
- STORE 'Y' TO mans
- IF m0monitor = 'M'
- @ 23,5 SAY 'Are these shadings okay ? (Y/N) ' + ;
- SUBSTR(m0border,181,5) GET mans PICTURE 'Y'
- ELSE
- @ 23,5 SAY 'Are these color combinations okay ? (Y/N) ' + ;
- SUBSTR(m0border,181,5) GET mans PICTURE 'Y'
- ENDIF
- READ
- IF mans = 'Y'
- EXIT
- ENDIF
- ENDDO && WHILE .t.
- ELSE
- STORE 'W+ /N ,N /W ,N ' TO m0color
- STORE 'M' TO m0monitor
- ENDIF && ibmcomp = 'Y'
- CLEAR
- @ 1,40 - INT(LEN(m0system)/2) SAY m0system
- @ 1,73 SAY SUBSTR(m0company,79,6)
- @ 2,1 SAY SUBSTR(m0company,1,78)
- IF CTOD(SUBSTR(a->str8,1,8)) > DATE()
- STORE CTOD(SUBSTR(str8,1,8)) TO m0date
- ELSE
- STORE DATE() TO m0date
- STORE DTOC(m0date) TO mdate
- CLEAR GETS
- @ 10,10 SAY "Please enter today's date (Mo/Da/Yr) " + ;
- SUBSTR(m0border,180,6)
- @ 10,53 GET mdate PICTURE '##/##/##'
- READ SAVE
- DO WHILE DTOC(CTOD(mdate)) <> mdate
- ?? CHR(7)
- @ 10,65 SAY 'Invalid Date.'
- READ SAVE
- @ 10,65
- ENDDO
- @ 10,53 SAY mdate PICTURE '##/##/##'
- CLEAR GETS
- STORE CTOD(mdate) TO m0date
- ENDIF
- IF m0pgmid = 'MM'
- LOCATE FOR UPPER(SUBSTR(sysid,1,2)) = 'M0' .AND. SUBSTR(sysid,3,2) = ' '
- ELSE
- LOCATE FOR UPPER(SUBSTR(sysid,1,2)) = m0pgmid .AND. SUBSTR(sysid,3,2) <> ' '
- ENDIF
- STORE SUBSTR(drive,1,30) TO m0cmddr
- STORE SUBSTR(drive,31,30) TO m0sysdr
- STORE SUBSTR(a->printer,1,2) TO mchars
- IF m0pgmid = 'GL' .AND. SUBSTR(drive,198,3) = ' '
- STORE SUBSTR(drive,1,1) + ':' + SPACE(28) TO m0cmddr
- STORE SUBSTR(drive,2,1) + ':' + SPACE(28) TO m0sysdr
- ENDIF
- IF 'MAC' $ UPPER(OS()) .AND. fox
- STORE '12' TO mchars
- STORE SUBSTR(a->printer,3,1) TO m0port
- ELSE
- STORE ' ' TO m0port
- ENDIF
- IF .NOT. ('MAC' $ UPPER(OS()) .AND. fox)
- @ 13,10 SAY 'Printer Characters Spacing ' + SUBSTR(m0border,182,4)
- @ 13,42 GET mchars PICTURE '##'
- @ 14,10 SAY '(10 or 12 characters/inch)'
- @ 16,10 SAY 'Enter the spacing your printer will be set up to.'
- @ 17,10 SAY 'You must also set your printer to this spacing.'
- ELSE
- @ 13,10 SAY 'Printer connected to port ' + SUBSTR(m0border,181,5)
- @ 13,42 GET m0port PICTURE '!'
- @ 14,10 SAY '(Printer/Modem)'
- ENDIF
- READ
- IF 'MAC' $ UPPER(OS()) .AND. fox
- DO WHILE .NOT. m0port $ 'PM'
- ?? CHR(7)
- @ 13,42 GET m0port PICTURE '!'
- @ 13,49 SAY SUBSTR(m0border,173, 3) + " Enter 'P' or 'M'"
- READ
- @ 13,49
- ENDDO
- CLEAR GETS
- ELSE
- DO WHILE mchars <> '10' .AND. mchars <> '12'
- ?? CHR(7)
- @ 13,42 GET mchars PICTURE '##'
- @ 13,49 SAY SUBSTR(m0border,173, 3) + " Enter '10' or '12'"
- READ
- @ 13,49
- ENDDO
- CLEAR GETS
- ENDIF
- @ 4,0 CLEAR
- @ 1,1 SAY DTOC(m0date)
- @ 6,3 SAY 'Program Drive\Directory ' + SUBSTR(m0border,179,7)
- @ 6,35 GET m0cmddr PICTURE "&m0drvpict"
- @ 7,35 SAY 'Drive containing *.PRG and *.FRM files.'
- @ 10,3 SAY 'System Data Drive\Directory ' + SUBSTR(m0border,183,3)
- @ 10,35 GET m0sysdr PICTURE "&m0drvpict"
- @ 11,35 SAY 'Drive containing SYSDATA.DBF, any'
- @ 12,35 SAY 'other System files which may be present.'
- @ 13,35 SAY '(SYSTABL.DBF, SYSTABC.NDX, SYSTABN.NDX'
- @ 14,35 SAY 'and/or SYS' + m0pgmid + 'MN.DBF).'
- @ 17,3 SAY 'NOTE:'
- @ 18,7 SAY ;
- 'You will enter the location of your Data files when you add a company.'
- @ 19,7 SAY 'You can change the location using the Change option on the'
- @ 20,7 SAY 'Setup Information or System Access Menu.'
- READ
- IF SUBSTR(m0cmddr,1,1) = ' ' .OR. SUBSTR(m0sysdr,1,1) = ' '
- STORE .f. TO mok
- ELSE
- STORE .t. TO mok
- ENDIF
- DO WHILE mok
- STORE TRIM(m0cmddr) TO m0cmddr
- IF m0switchar = '\'
- IF LEN(m0cmddr) > 2
- IF SUBSTR(m0cmddr,3,1) <> m0switchar
- STORE SUBSTR(m0cmddr,1,2) + m0switchar + ;
- SUBSTR(m0cmddr,3,LEN(m0cmddr) - 2) TO m0cmddr
- ENDIF
- ENDIF
- IF LEN(m0cmddr) > 3 .AND. SUBSTR(m0cmddr,LEN(m0cmddr),1) <> m0switchar
- STORE SUBSTR(m0cmddr,1,LEN(m0cmddr)) + m0switchar TO m0cmddr
- ENDIF
- ELSE
- IF LEN(m0cmddr) > 0
- IF SUBSTR(m0cmddr,LEN(m0cmddr),1) <> m0switchar
- STORE SUBSTR(m0cmddr,1,LEN(m0cmddr)) + m0switchar TO m0cmddr
- ENDIF
- ENDIF
- ENDIF
- IF LEN(TRIM(m0cmddr)) >= 30
- STORE SUBSTR(m0cmddr,1,29) + m0switchar TO m0cmddr
- ENDIF
- IF .NOT. ' ' $ m0cmddr
- DO CASE
- CASE clipper .OR. xquicks
- STORE .t. TO mfound
- CASE FILE('&m0cmddr.&m0pgmid..prg')
- STORE .t. TO mfound
- CASE FILE('&m0cmddr.&m0pgmid..fox')
- STORE .t. TO mfound
- CASE FILE('&m0cmddr.&m0pgmid..fxp')
- STORE .t. TO mfound
- CASE FILE('&m0cmddr.&m0pgmid..cod')
- STORE .t. TO mfound
- CASE FILE('&m0cmddr.&m0pgmid..cmd')
- STORE .t. TO mfound
- CASE FILE('&m0cmddr.&m0pgmid..run')
- STORE .t. TO mfound
- CASE FILE('&m0cmddr.&m0pgmid..dbo')
- STORE .t. TO mfound
- OTHERWISE
- STORE .f. TO mfound
- ENDCASE
- IF mfound
- EXIT
- ENDIF
- ENDIF
- STORE SUBSTR(m0cmddr + SPACE(30),1,30) TO m0cmddr
- ?? CHR(7)
- @ 6,35 GET m0cmddr PICTURE "&m0drvpict"
- @ 22,2 SAY 'Invalid Program Drive or Directory. ' + ;
- 'Please reenter or blank to quit...'
- READ
- @ 22,0 CLEAR
- IF SUBSTR(m0cmddr,1,1) = ' '
- STORE .f. TO mok
- EXIT
- ENDIF
- ENDDO && WHILE mok
- CLEAR GETS
- DO WHILE mok
- STORE TRIM(m0sysdr) TO m0sysdr
- IF m0switchar = '\'
- IF LEN(m0sysdr) > 2
- IF SUBSTR(m0sysdr,3,1) <> m0switchar
- STORE SUBSTR(m0sysdr,1,2) + m0switchar + ;
- SUBSTR(m0sysdr,3,LEN(m0sysdr) - 2) TO m0sysdr
- ENDIF
- ENDIF
- IF LEN(m0sysdr) > 3 .AND. SUBSTR(m0sysdr,LEN(m0sysdr),1) <> m0switchar
- STORE SUBSTR(m0sysdr,1,LEN(m0sysdr)) + m0switchar TO m0sysdr
- ENDIF
- ELSE
- IF LEN(m0sysdr) > 0
- IF SUBSTR(m0sysdr,LEN(m0sysdr),1) <> m0switchar
- STORE SUBSTR(m0sysdr,1,LEN(m0sysdr)) + m0switchar TO m0sysdr
- ENDIF
- ENDIF
- ENDIF
- IF LEN(TRIM(m0sysdr)) >= 30
- STORE SUBSTR(m0sysdr,1,29) + m0switchar TO m0sysdr
- ENDIF
- IF .NOT. ' ' $ m0sysdr
- IF FILE('&m0sysdr.sysdata.dbf')
- EXIT
- ENDIF
- ENDIF
- STORE SUBSTR(m0sysdr + SPACE(30),1,30) TO m0sysdr
- ?? CHR(7)
- @ 10,35 GET m0sysdr PICTURE "&m0drvpict"
- @ 22,2 SAY 'Invalid System Drive or Directory. ' + ;
- 'Please reenter or blank to quit...'
- READ
- @ 22,0 CLEAR
- IF SUBSTR(m0sysdr,1,1) = ' '
- STORE .f. TO mok
- EXIT
- ENDIF
- ENDDO && WHILE mok
- CLEAR GETS
- IF mok
- @ 6,35 SAY SUBSTR(m0cmddr + SPACE(30),1,30) PICTURE "&m0drvpict"
- @ 10,35 SAY SUBSTR(m0sysdr + SPACE(30),1,30) PICTURE "&m0drvpict"
- STORE 'Y' TO mans
- @ 22,3 SAY 'Update System File ? (Y/N) ' + SUBSTR(m0border,179,7) ;
- GET mans PICTURE 'Y'
- READ
- @ 22,0
- IF mans = 'N'
- STORE .f. TO mok
- ENDIF
- ENDIF && mok
- IF .NOT. mok
- UNLOCK
- CLEAR
- @ 2,1 SAY 'Install Cancelled...'
- @ 4,1 SAY '***** Install Program Normal End *****'
- SET DEFAULT TO
- SET TALK ON
- SET SAFETY ON
- CLEAR ALL
- CANCEL
- ENDIF && .NOT. mok
- LOCATE FOR UPPER(sysid) = 'MM '
- REPLACE str8 WITH DTOC(m0date) + SUBSTR(a->str8,9,2)
- REPLACE str5 WITH m0monitor + m0color + SUBSTR(str5,27,4)
- REPLACE ALL printer WITH mchars + m0port + SUBSTR(a->printer,4,7) FOR ;
- UPPER(SUBSTR(a->sysid,1,2)) = m0pgmid
- STORE .f. TO m0litebar
- DO CASE
- CASE VAL(m0vers) < 6.30 .AND. .NOT. (m0pgmid = 'MA' .AND. VAL(m0vers) < 615)
- * ' leave litebar false for non supported versions
- CASE clipper .AND. .NOT. ('86' $ VERSION())
- STORE .t. TO m0litebar
- CASE fox .AND. ' 2.' $ VERSION()
- STORE .t. TO m0litebar
- ENDCASE
- IF m0litebar
- * ' Must index the menu files here..accessed before regular XXUTIL.PRG
- STORE 'SYS' + m0pgmid + 'MN' TO menuf
- STORE 'SYS' + m0pgmid + 'MO' TO menuo
- IF FILE ('&m0sysdr.&menuf..dbf')
- @ 23,0
- @ 23,2 SAY '***** Building Indexes for Light Bar Menus *****'
- USE &m0sysdr.&menuf
- COPY TO &m0sysdr.tempfile FOR .NOT. DELETED()
- USE
- DELETE FILE &m0sysdr.&menuf..dbf
- RENAME &m0sysdr.tempfile.dbf TO &m0sysdr.&menuf..dbf
- IF FILE ('&m0sysdr.&menuf..ndx')
- DELETE FILE &m0sysdr.&menuf..ndx
- ENDIF
- IF FILE ('&m0sysdr.&menuo..ndx')
- DELETE FILE &m0sysdr.&menuo..ndx
- ENDIF
- USE &m0sysdr.&menuf
- INDEX ON menuprg+SUBSTR(STR(1000 + disprow + dispcol,4,0),2,3) ;
- TO &m0sysdr.&menuo..ndx
- INDEX ON menuprg+SUBSTR(title,1,1) TO &m0sysdr.&menuf..ndx
- @ 23,0
- @ 23,0
- @ 23,2 SAY '***** Deleting any Previous Light Bar MEM files *****'
- USE &m0sysdr.sysdata.dbf
- SET FILTER TO SUBSTR(sysid,1,2) = m0pgmid
- GO TOP
- DO WHILE .NOT. EOF()
- STORE TRIM(SUBSTR(drive,61,30)) + m0pgmid + 'MENU' + SUBSTR(sysid,3,2) ;
- TO m0arrayf
- IF FILE ('&m0arrayf..mem')
- DELETE FILE &m0arrayf..mem
- ENDIF
- SKIP
- ENDDO
- ENDIF
- ENDIF
- * ' set litebar to false in case calling conversion, where it must be off
- STORE .f. TO m0litebar
- USE &m0sysdr.sysdata
- IF .NOT. m0single
- STORE FLOCK() TO lockedf
- IF .NOT. lockedf
- @ 23,3 SAY 'File ' + UPPER(DBF()) + '. Attempting to lock file...'
- DO WHILE .NOT. lockedf
- STORE FLOCK() TO lockedf
- ENDDO
- @ 23,0
- ENDIF
- ENDIF
- RETURN
- *
- * ' $Revision: 1.27 $
- * ' $Date: 29 May 1990 17:34:34 $
- **********************
- ** ' SYSINST.PRG ' **
- ** ' 868 Lines ' **
- **********************