Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: XOBUENV

XOBUENV.m

Go to the documentation of this file.
XOBUENV ;; ld/alb - VistaLink Environment Check ; 08/08/2003  08:44
 ;;1.5;Foundations;;Sep 09, 2005
 ;;Foundations Toolbox Release v1.5 [Build: 1.5.0.026]
 ;
 ;
EN ;- entry point
 ;
 ;- programmer variables check
 DO PROG IF $GET(XPDABORT) GOTO ENQ
 ;
 ;- operating system check
 DO OSCHK IF $GET(XPDABORT) GOTO ENQ
 ;
 ;- check for presence of obsolete SYSTEM file (#18)
 DO FILE18
 ;
 ;- passed load check
 IF '$GET(XPDENV),'$GET(XPDABORT) WRITE !!?1,">>> VistALink environment check completed for KIDS Load a Distribution option.",!
 ;
 ;- passed install check
 IF $GET(XPDENV)=1,'$GET(XPDABORT) WRITE !!?1,">>> VistALink environment check completed for KIDS Install Package option.",!
 ;
ENQ QUIT
 ;
PROG ;- check enviroment for programmer variables
 ;
 WRITE !?1,">>> Checking environment...",!
 IF +$GET(DUZ)'>0!($GET(DUZ(0))'="@") DO
 . SET XPDABORT=1
 . WRITE !,"     You must first initialize programmer environment by running ^XUP.",!
 QUIT
 ;
OSCHK ;- check enviroment for operating system (DSM or OpenM)
 ;
 NEW XOBOS
 SET XOBOS=$PIECE($GET(^%ZOSF("OS")),"^")
 IF XOBOS'["DSM"&(XOBOS'["OpenM") DO
 . SET XPDABORT=1
 . DO PRNTXT("OSMSG")
 QUIT
 ;
FILE18 ;- check for obsolete Kernel file #18 which is in VistALink's numberspace
 ;
 NEW I,LINE,XOBABORT,XOBASK
 ;
 ;- file #18 not found
 IF '$$FILECHK() GOTO FILE18Q
 ;
 ;- file found; display user msg
 DO PRNTXT("INTRO")
 ;
 ;- if load, ask if they want file deletion instructions
 IF 'XPDENV DO  GOTO FILE18Q
 . DO:$$ASKINSTR()>0 TOP,PRNTXT("INSTR1"),PAUSE,PRNTXT("INSTR2"),PAUSE
 ;
 ;- if install, ask if user wants to abort install
 ;- if yes, ask if they want file deletion instructions
 SET XOBABORT=$$ASKINSTL()
 IF XOBABORT DO  QUIT
 . IF XOBABORT=1 DO:$$ASKINSTR()>0 TOP,PRNTXT("INSTR1"),PAUSE,PRNTXT("INSTR2"),PAUSE
 . SET XPDABORT=2
 ;
 ;- if user wants to continue install, ask again to be sure
 IF XOBABORT=0 DO
 . SET XOBASK=$$REASK()
 . IF XOBASK<1 DO
 .. IF XOBASK=0 DO:$$ASKINSTR()>0 TOP,PRNTXT("INSTR1"),PAUSE,PRNTXT("INSTR2"),PAUSE
 .. SET XPDABORT=2
FILE18Q QUIT
 ;
ASKINSTL() ;- ask if user wants to abort install
 ;
 NEW XOB0,XOBA,XOBARR,XOBB
 SET XOB0="YAO"
 SET XOBA=" Do you want to abort the installation now? "
 SET XOBB="YES"
 SET XOBARR(1)="     NOTE:"
 SET XOBARR(2)="       If you choose to abort the installation, please do a global listing"
 SET XOBARR(3)="       of file ^DIC(18, and ^DD(18, after deleting the file to ensure that"
 SET XOBARR(4)="       the SYSTEM file (#18) is completely deleted from your system before"
 SET XOBARR(5)="       reinstalling the VistALink package.  If you need additional help"
 SET XOBARR(6)="       deleting the file, please contact National VistA Support (NVS)."
 SET XOBARR(7)=" "
 QUIT $$ANSWER(XOB0,XOBA,XOBB,.XOBARR)
 ;
REASK() ;- ask user again if they want to continue with install (pre-init will
 ;         delete file #18)
 ;
 NEW XOB0,XOBA,XOBARR,XOBB
 SET XOB0="YAO"
 SET XOBA=" Are you sure you want to continue? "
 SET XOBB="NO"
 SET XOBARR(1)=" "
 SET XOBARR(2)="     NOTE:"
 SET XOBARR(3)="       Continuing with the installation will delete the SYSTEM file (#18)"
 SET XOBARR(4)="       using the FileMan Data Dictionary Deletion call (EN^DIU2)."
 SET XOBARR(5)=" "
 QUIT $$ANSWER(XOB0,XOBA,XOBB,.XOBARR)
 ;
ASKINSTR() ;- ask if user wants file deletion instructions
 ;
 NEW XOB0,XOBA,XOBARR,XOBB
 SET XOB0="YAO"
 SET XOBA=" Would you like instructions on how to delete SYSTEM file (#18)? "
 SET XOBB="YES"
 SET XOBARR(1)=" "
 QUIT $$ANSWER(XOB0,XOBA,XOBB,.XOBARR)
 ;
ANSWER(XOB0,XOBA,XOBB,XOBARR) ;wrap FileMan DIR Reader call
 ;
 ;  Input:
 ;    XOB0   - DIR(0) string
 ;    XOBA   - DIR("A") string
 ;    XOBB   - DIR("B") string
 ;    XOBARR - DIR("A",x) string
 ;
 ;  Output:
 ;   Function Value - Internal value returned from ^DIR (0 for No, 1 for
 ;                    YES) or -1 if user up-arrows or the read times out.
 ;
 NEW DIR,DIRUT,X,Y  ; ^DIR variables
 ;
 SET DIR(0)=XOB0
 SET DIR("A")=$GET(XOBA)
 IF $DATA(XOBARR)>1 MERGE DIR("A")=XOBARR
 IF $GET(XOBB)'="" SET DIR("B")=XOBB
 DO ^DIR KILL DIR
 QUIT $SELECT($DATA(DIRUT):-1,1:$PIECE(Y,U))
 ;
FILECHK() ;- Check for file 18
 ;
 NEW XOBA,XOBFIL
 SET XOBA=0
 DO FILE^DID(18,"","NAME","XOBFIL")
 IF $GET(XOBFIL("NAME"))="SYSTEM",($$VFILE^DILFD(18)) SET XOBA=1
 IF $DATA(^DIC(18))!$DATA(^DD(18)) SET XOBA=1
 QUIT XOBA
 ;
PRNTXT(TEXT) ;- display user text
 ;
 QUIT:$GET(TEXT)=""
 NEW I,LINE
 FOR I=1:1 SET LINE=$PIECE($TEXT(@TEXT+I),";;",2) QUIT:LINE="$END"  WRITE !,LINE
 QUIT
 ;
TOP ;- top of screen
 ;
 QUIT:$EXTRACT(IOST,1,2)'="C-"
 IF $Y>1 WRITE @IOF
 QUIT
 ;
PAUSE ;- enhance readability of text
 ;
 QUIT:$EXTRACT(IOST,1,2)'="C-"
 WRITE ! SET DIR(0)="E",DIR("A")="Press return to continue" DO ^DIR KILL DIR WRITE !
 QUIT
 ;
INTRO ;- display message to user explaining file #18
 ;; >>>>>>>>>> ATTENTION: File SYSTEM (#18) was found on your system. <<<<<<<<<<
 ;;     
 ;;     SYSTEM file #18 was the precursor to the KERNEL SYSTEMS PARAMETER
 ;;     file and is obsolete.  The SYSTEM file uses the same numberspace
 ;;     that VistALink is assigned and must be deleted before VistALink
 ;;     can be installed.  You may wish to manually backup and manually
 ;;     delete file #18.
 ;;     
 ;;     If you do not manually delete file #18 and it is still on your system
 ;;     during the installation phase, you will be prompted with a series of
 ;;     questions.  The questions will allow you to abort the installation or
 ;;     allow the installation to safely delete the SYSTEM file for you.
 ;;     
 ;;$END
 ;
INSTR1 ;- user instructions to delete file #18
 ;;
 ;;
 ;;     ********      How to delete the SYSTEM file (#18)     ********
 ;;
 ;;
 ;;     1)  From the programmer prompt, go to the FileMan main menu
 ;;
 ;;     2)  Choose option 6, UTILITY FUNCTIONS
 ;;
 ;;     3)  Choose option 6, EDIT FILE
 ;;
 ;;     4)  MODIFY WHAT FILE: // 18  SYSTEM
 ;;
 ;;     5)  Do you want to use the screen-mode version? YES// YES
 ;;         (recommend using screen-mode because you can exit out without
 ;;         saving your changes if necessary)
 ;;
 ;;     6)  At the FILE NAME: prompt (which should have the name SYSTEM
 ;;         in it), type @
 ;;$END
 ;
INSTR2 ;- user instructions to delete file #18 (continued)
 ;;
 ;;
 ;;     7)  It will then ask the following questions:
 ;;           DO YOU WANT JUST TO DELETE THE FILE CONTENTS,
 ;;                    & KEEP THE FILE DEFINITION? No// No   (No)
 ;;              IS IT OK TO DELETE THE '^DIC(18)' GLOBAL? Yes// Yes   (Yes)
 ;;                  SURE YOU WANT TO DELETE THE ENTIRE FILE? No// Yes  (Yes)
 ;;           Deleting the DATA DICTIONARY...
 ;;           Deleting the INPUT TEMPLATES....
 ;;           Deleting the PRINT TEMPLATES...
 ;;           Deleting the SORT TEMPLATES...
 ;;           Deleting the FORMS...
 ;;
 ;;     8)  The last step is a global listing to check that file #18 and its DD
 ;;         have been deleted.  Here's an example:
 ;;           cor> D ^%G
 ;;           Global ^DIC(18,
 ;;           DIC(18,
 ;;           Global ^DD(18,
 ;;           DD(18,
 ;;           Global ^
 ;;$END
 ;
OSMSG ;- Message to user if operating system is not Cache or DSM
 ;;
 ;;     VistALink has been tested on Cache and DSM. It has not been tested
 ;;     or programmed to be compatible yet on other M implementations, 
 ;;     therefore installation will abort.
 ;;     
 ;;$END
 ;