- INHSYS09 ;JPD; 5 Nov 98 13:29;gis sys con data installation utility
- ;;3.01;BHL IHS Interfaces with GIS;;JUL 01, 2001
- ;COPYRIGHT 1991-2000 SAIC
- Q
- START ;Single element transaction mover entry point
- ; This routine copy data from file entry to ^UTILITY($J,%FILE,%IEN
- ; Then expand the pointer fields to their actual value
- N INREPRT,INPOP,INCR,INNTRIES
- S INPOP=0,INCR=1
- D ENV^UTIL
- D DEBOFF
- W @IOF
- D GETFLE(.INNTRIES)
- I $D(INNTRIES) D
- .W !,"Do you want a report of what the file points to"
- .S INREPRT=$$YN^%ZTF(0)
- .I INREPRT D HEAD^INHSYS03(2)
- .S %FILE="" F S %FILE=$O(INNTRIES(%FILE)) Q:%FILE="" D
- ..S %OIEN="" F S %OIEN=$O(INNTRIES(%FILE,%OIEN)) Q:%OIEN="" D
- ...D COPY(%FILE,%OIEN,INREPRT)
- Q
- GETFLE(INNTRIES) ;Get file entry
- ; Output:
- ; INNTRIES - Array of Files and entries
- ; format - INNTRIES(FILE,IEN)="ENTRY NAME"
- N %FIL,DIC,Y
- F D Q:%FIL=-1
- .S DIC="^DIC(",DIC(0)="AEQ",DIC("A")="Enter File Name: "
- .D ^DIC
- .S %FIL=+Y
- .I +%FIL>0 F D GETELE(.INNTRIES,.Y) Q:Y=-1
- Q
- GETELE(INNTRIES,Y) ;Get file element
- ; Output:
- ; INNTRIES - Array of Files and entries
- ; format - INNTRIES(FILE,IEN)="ENTRY NAME"
- ; Y - File element entry
- N DIC
- S DIC(0)="AEQ",DIC("A")="Enter File Element Name: "
- S (%GBL,DIC)=^DIC($P(%FIL,U),0,"GL")
- D ^DIC
- I Y>0 S INNTRIES(%FIL,+Y)=$P(Y,U,2)
- Q
- COPY(%FILE,%OIEN,INREPRT,INOMIT) ;Front end expand any pointer any file
- ; %FILE - File Number
- ; %OIEN - Internal Entry Number
- ; INREPRT - 0 no report 1 yes
- ; INOMIT - Array of file and field to omit from transporting
- N %ROOT,%X,%Y,%SVIEN
- K ^UTILITY($J,%FILE,%OIEN)
- S %ROOT=^DIC(%FILE,0,"GL"),%SVIEN=%OIEN
- ;Copy data to ^UTILITY global
- S %Y="^UTILITY("_$J_","_%FILE_","_%OIEN_")",%X=%ROOT_%OIEN_")"
- M @%Y=@%X
- ;Expand pointers
- D EXPND(%OIEN,%FILE,%ROOT,%ROOT_%OIEN_",",1,%OIEN,INREPRT,%SVIEN,0,.INOMIT)
- Q
- EXPND(INY,%FILE,%ROOT,%BFR,%LEVL,DA,INREPRT,%SVIEN,%FND,INOMIT) ;Expand pointers
- ;input:
- ; INY - ien^.01
- ; %FILE - file number
- ; %ROOT - global root
- ; %BFR - storage buffer
- ; %LEVL - file/sub-file level
- ; DA - same as fileman documented DA
- ; INREPRT - if 1 reporting in effect, either user
- ; requested or flat file
- ; %SVIEN - top level ien since we could be in a multiple
- ; used at PRINT^INHSYS03 if INREPRT
- ; %FND - 1 - Target file not in package
- ; 0 - Target file in package
- ; Site specific files may not be exported. If
- ; this is an entry in one of those files, %FND will
- ; be equal to one. ex) DEVICE FILE
- ; INOMIT - Array of fields that are pointers to omit from package
- ; INOMIT(FILE#,FIELD#)
- ;local:
- ; %NODE - node
- ; %PIECE - uparrow piece
- ; %FLDNUM - field number
- ; %OIEN - old ien for sub-files
- ; %NBFR - the new storage buffer root name
- ; %DATA - node data strage variable
- ; P01 - .01 value
- ; %NRT - new global root
- ;
- N %NODE,%NODE1,%PIECE,%FLDNUM,DIE,%OIEN,%NBFR,%DATA,P01,%NRT,YY,DR,I,J
- N %Z0
- S %NODE=""
- F S %NODE=$O(^DD(%FILE,"GL",%NODE)) Q:%NODE="" D Q:INPOP
- .S %NODE1=%NODE
- .I $L(%NODE),+%NODE'=%NODE S %NODE=""""_%NODE_""""
- .;set new storage buffer root name
- .S %NBFR=%BFR_%NODE_","
- .;Loop through DD to get each piece of every node
- .S %PIECE=""
- .F S %PIECE=$O(^DD(%FILE,"GL",%NODE1,%PIECE)) Q:%PIECE="" D Q:INPOP
- ..S %FLDNUM=""
- ..;get fieldnum for each piece of every node
- ..F S %FLDNUM=$O(^DD(%FILE,"GL",%NODE1,%PIECE,%FLDNUM)) Q:'%FLDNUM D Q:INPOP
- ...;If word processing field
- ...I $$WP^INHSYSUT(+%FILE,%FLDNUM) Q
- ...;If piece is 0 could be multiple
- ...I %PIECE=0 D MULT(%NBFR,%NODE,%ROOT,.DA,%FILE,%FLDNUM,%LEVL,%SVIEN,.%FND) Q
- ...S %Z0=$G(^DD(%FILE,%FLDNUM,0))
- ...;If piece is not a pointer quit
- ...I $P(%Z0,U,2)'["P" Q
- ...D DATA^INHSYSUT($$RUT^INHSYSUT(%NBFR),%PIECE,.%DATA)
- ...I %DATA="" Q
- ...F K="2^%PTO","4^%NDPC" S @$P(K,U,2)=$P(%Z0,U,$P(K,U))
- ...I %LEVL>1 D MULT2(%NDPC,%FILE,%FLDNUM,%NBFR,%DATA,%SVIEN,INREPRT,.%FND) Q
- ...D FLD^INHSYS03(%PTO,%NDPC,.%FND,%FILE,%FLDNUM,.INOMIT)
- .Q:INPOP S %NODE=%NODE1
- Q
- MULT(%NBFR,%NODE,%ROOT,DA,%FILE,%FLDNUM,%LEVL,%SVIEN,%FND) ;Process multiple
- ;This module will process multiple as if it were an entire
- ;node and process each entry one piece at a time
- ; %NBFR - the new storage buffer root name
- ; %NODE - node
- ; %ROOT - global root
- ; DA - ien and "Multiple entry"
- ; %FILE - file number
- ; %FLDNUM - field number
- ; %LEVL - file/sub-file level
- N %OIEN,%NRT,X,NFLN,YY,%X,%Y,%NFLN,%DIC0,%Z0,%GBL
- S %DIC0="X"
- S %OIEN=0 F S %OIEN=$O(@$$RUT^INHSYSUT(%NBFR)@(%OIEN)) Q:'%OIEN D
- .N %NRT,ODA
- .;set x to current multiple node of UTILITY global
- .S X=^(%OIEN,0)
- .;get new root
- .S %NRT=%ROOT_DA_","_%NODE_","
- .S %NFLN=$P(^DD(%FILE,%FLDNUM,0),U,2)
- .S %Z0=$G(^DD(%FILE,%FLDNUM,0))
- .I $P(%Z0,U,2)["P" D I YY<0 D MSG^INHSYSUT(X,%NFLN,"",1,0) Q
- ..S %GBL="^"_$P(^DD(+%NFLN,.01,0),U,3)
- ..S X="`"_+X
- ..S YY=$$DIC^INHSYS05(%GBL,$P(X,U),%NFLN,%DIC0,.DA,%LEVL)
- .I $P(%Z0,U,2)'["P" S YY=$$DIC^INHSYS05(%NRT,$P(X,U),%NFLN,%DIC0,.DA,%LEVL) I YY<0 D MSG^INHSYSUT(X,%NFLN,"",1,0) Q
- .S ODA=DA,%X="DA",%Y="ODA" M @%Y=@%X ;D %XY^%RCR
- .D SETDA(.DA,%LEVL,+YY)
- .;every time you recusion into stuff, it processes multiple
- .;completely for each entry
- .D EXPND(YY,+%NFLN,%NRT,%NBFR_%OIEN_",",%LEVL+1,.DA,INREPRT,%SVIEN,.%FND)
- .K DA S DA=ODA,%Y="DA",%X="ODA" M @%Y=@%X ;D %XY^%RCR
- Q
- SETDA(DA,%LEVL,Y) ;Set DA level so fileman doesn't choke
- ; Input:
- ; DA - ien and "Multiple" entry #'s
- ; %LEVL - level in multiple
- ; Y - New entry number
- ; Output:
- ; DA - IEN and "Multiple" entry #'s
- N I
- F I=%LEVL:-1:3 S DA(I-1)=DA(I-2)
- S DA(1)=DA,DA=+Y
- Q
- MULT2(%NDPC,%FILE,%FLD,%NBFR,%DATA,%SVIEN,INREPRT,%FND) ;Process multiple
- ; Input:
- ; %NDPC - The node;piece
- ; %FILE - Source file number
- ; %FLD - Source field number
- ; %NBFR - Buffer of data
- ; %DATA - ien to be expanded
- ; %SVIEN - top level ien, used in PRINT^INHSYS03
- ; INREPRT - 0 no report 1 report
- ; %FND - 1 - Target file not in package
- ; 0 - Target file in package
- ; Site specific files may not be exported. If
- ; this is an entry in one of those files, %FND will
- ; be equal to one. ex) DEVICE FILE
- N INP01,%GBFR,%GBL,%PTO,%UPFL,%GBLN,%NOD
- S %PC=$P(%NDPC,";",2)
- ;Global root of file pointed to
- S %GBL="^"_$P(^DD(+%FILE,%FLD,0),U,3)
- ; File number of pointed to file
- S %PTO=$P(^DD(+%FILE,%FLD,0),U,2)
- S %PTO=+$E(%PTO,$F(%PTO,"P"),$L(%PTO))
- S %GBLN=%GBL_%DATA_",0)"
- I '$D(@%GBLN) W !,%FILE,?10,$P($G(^DIC(%FILE,0)),U),?38,%FLD," Broken Pointer ",%GBLN S INPOP=1 Q
- ;.01 of pointed to file
- S INP01=$P(@%GBLN,U)
- S %NOD=$P(%NBFR,@"^DIC($$UP^INHSYSUT(%FILE),0,""GL"")",2)
- S %GBFR=$$RUT^INHSYSUT("^UTILITY("_$J_","_$$UP^INHSYSUT(%FILE)_","_%NOD)
- S $P(@%GBFR,U,%PC)=INP01
- ;Root source file
- S %UPFL=$$UP^INHSYSUT(%FILE)
- I INREPRT D PRINT^INHSYS03(%FILE,%UPFL,%FLD,%PTO,INP01,%GBLN,%SVIEN,.%FND)
- Q
- ;
- DEBOFF ;Turn off debug for all background process
- N INBN,INBD,INBP
- S INBN="" F S INBN=$O(^INTHPC("B",INBN)) Q:INBN="" D
- .S INBD=$O(^INTHPC("B",INBN,0))
- .I $D(^INTHPC(INBD,9)) D
- ..S INBP=$P(^INTHPC(INBD,9),U,1)
- ..I INBP>0 D
- ...W !,"WARNING: Debug will be turned off for Background Process: ",INBN
- ...R !!?25,"Press <RETURN> To Continue",X:$S($D(DTIME):DTIME,1:300)
- ...S DR="9.01///@",DA=INBD,DIE=4004 D ^DIE
- Q
- ;
- INHSYS09 ;JPD; 5 Nov 98 13:29;gis sys con data installation utility
- +1 ;;3.01;BHL IHS Interfaces with GIS;;JUL 01, 2001
- +2 ;COPYRIGHT 1991-2000 SAIC
- +3 QUIT
- START ;Single element transaction mover entry point
- +1 ; This routine copy data from file entry to ^UTILITY($J,%FILE,%IEN
- +2 ; Then expand the pointer fields to their actual value
- +3 NEW INREPRT,INPOP,INCR,INNTRIES
- +4 SET INPOP=0
- SET INCR=1
- +5 DO ENV^UTIL
- +6 DO DEBOFF
- +7 WRITE @IOF
- +8 DO GETFLE(.INNTRIES)
- +9 IF $DATA(INNTRIES)
- Begin DoDot:1
- +10 WRITE !,"Do you want a report of what the file points to"
- +11 SET INREPRT=$$YN^%ZTF(0)
- +12 IF INREPRT
- DO HEAD^INHSYS03(2)
- +13 SET %FILE=""
- FOR
- SET %FILE=$ORDER(INNTRIES(%FILE))
- IF %FILE=""
- QUIT
- Begin DoDot:2
- +14 SET %OIEN=""
- FOR
- SET %OIEN=$ORDER(INNTRIES(%FILE,%OIEN))
- IF %OIEN=""
- QUIT
- Begin DoDot:3
- +15 DO COPY(%FILE,%OIEN,INREPRT)
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +16 QUIT
- GETFLE(INNTRIES) ;Get file entry
- +1 ; Output:
- +2 ; INNTRIES - Array of Files and entries
- +3 ; format - INNTRIES(FILE,IEN)="ENTRY NAME"
- +4 NEW %FIL,DIC,Y
- +5 FOR
- Begin DoDot:1
- +6 SET DIC="^DIC("
- SET DIC(0)="AEQ"
- SET DIC("A")="Enter File Name: "
- +7 DO ^DIC
- +8 SET %FIL=+Y
- +9 IF +%FIL>0
- FOR
- DO GETELE(.INNTRIES,.Y)
- IF Y=-1
- QUIT
- End DoDot:1
- IF %FIL=-1
- QUIT
- +10 QUIT
- GETELE(INNTRIES,Y) ;Get file element
- +1 ; Output:
- +2 ; INNTRIES - Array of Files and entries
- +3 ; format - INNTRIES(FILE,IEN)="ENTRY NAME"
- +4 ; Y - File element entry
- +5 NEW DIC
- +6 SET DIC(0)="AEQ"
- SET DIC("A")="Enter File Element Name: "
- +7 SET (%GBL,DIC)=^DIC($PIECE(%FIL,U),0,"GL")
- +8 DO ^DIC
- +9 IF Y>0
- SET INNTRIES(%FIL,+Y)=$PIECE(Y,U,2)
- +10 QUIT
- COPY(%FILE,%OIEN,INREPRT,INOMIT) ;Front end expand any pointer any file
- +1 ; %FILE - File Number
- +2 ; %OIEN - Internal Entry Number
- +3 ; INREPRT - 0 no report 1 yes
- +4 ; INOMIT - Array of file and field to omit from transporting
- +5 NEW %ROOT,%X,%Y,%SVIEN
- +6 KILL ^UTILITY($JOB,%FILE,%OIEN)
- +7 SET %ROOT=^DIC(%FILE,0,"GL")
- SET %SVIEN=%OIEN
- +8 ;Copy data to ^UTILITY global
- +9 SET %Y="^UTILITY("_$JOB_","_%FILE_","_%OIEN_")"
- SET %X=%ROOT_%OIEN_")"
- +10 MERGE @%Y=@%X
- +11 ;Expand pointers
- +12 DO EXPND(%OIEN,%FILE,%ROOT,%ROOT_%OIEN_",",1,%OIEN,INREPRT,%SVIEN,0,.INOMIT)
- +13 QUIT
- EXPND(INY,%FILE,%ROOT,%BFR,%LEVL,DA,INREPRT,%SVIEN,%FND,INOMIT) ;Expand pointers
- +1 ;input:
- +2 ; INY - ien^.01
- +3 ; %FILE - file number
- +4 ; %ROOT - global root
- +5 ; %BFR - storage buffer
- +6 ; %LEVL - file/sub-file level
- +7 ; DA - same as fileman documented DA
- +8 ; INREPRT - if 1 reporting in effect, either user
- +9 ; requested or flat file
- +10 ; %SVIEN - top level ien since we could be in a multiple
- +11 ; used at PRINT^INHSYS03 if INREPRT
- +12 ; %FND - 1 - Target file not in package
- +13 ; 0 - Target file in package
- +14 ; Site specific files may not be exported. If
- +15 ; this is an entry in one of those files, %FND will
- +16 ; be equal to one. ex) DEVICE FILE
- +17 ; INOMIT - Array of fields that are pointers to omit from package
- +18 ; INOMIT(FILE#,FIELD#)
- +19 ;local:
- +20 ; %NODE - node
- +21 ; %PIECE - uparrow piece
- +22 ; %FLDNUM - field number
- +23 ; %OIEN - old ien for sub-files
- +24 ; %NBFR - the new storage buffer root name
- +25 ; %DATA - node data strage variable
- +26 ; P01 - .01 value
- +27 ; %NRT - new global root
- +28 ;
- +29 NEW %NODE,%NODE1,%PIECE,%FLDNUM,DIE,%OIEN,%NBFR,%DATA,P01,%NRT,YY,DR,I,J
- +30 NEW %Z0
- +31 SET %NODE=""
- +32 FOR
- SET %NODE=$ORDER(^DD(%FILE,"GL",%NODE))
- IF %NODE=""
- QUIT
- Begin DoDot:1
- +33 SET %NODE1=%NODE
- +34 IF $LENGTH(%NODE)
- IF +%NODE'=%NODE
- SET %NODE=""""_%NODE_""""
- +35 ;set new storage buffer root name
- +36 SET %NBFR=%BFR_%NODE_","
- +37 ;Loop through DD to get each piece of every node
- +38 SET %PIECE=""
- +39 FOR
- SET %PIECE=$ORDER(^DD(%FILE,"GL",%NODE1,%PIECE))
- IF %PIECE=""
- QUIT
- Begin DoDot:2
- +40 SET %FLDNUM=""
- +41 ;get fieldnum for each piece of every node
- +42 FOR
- SET %FLDNUM=$ORDER(^DD(%FILE,"GL",%NODE1,%PIECE,%FLDNUM))
- IF '%FLDNUM
- QUIT
- Begin DoDot:3
- +43 ;If word processing field
- +44 IF $$WP^INHSYSUT(+%FILE,%FLDNUM)
- QUIT
- +45 ;If piece is 0 could be multiple
- +46 IF %PIECE=0
- DO MULT(%NBFR,%NODE,%ROOT,.DA,%FILE,%FLDNUM,%LEVL,%SVIEN,.%FND)
- QUIT
- +47 SET %Z0=$GET(^DD(%FILE,%FLDNUM,0))
- +48 ;If piece is not a pointer quit
- +49 IF $PIECE(%Z0,U,2)'["P"
- QUIT
- +50 DO DATA^INHSYSUT($$RUT^INHSYSUT(%NBFR),%PIECE,.%DATA)
- +51 IF %DATA=""
- QUIT
- +52 FOR K="2^%PTO","4^%NDPC"
- SET @$PIECE(K,U,2)=$PIECE(%Z0,U,$PIECE(K,U))
- +53 IF %LEVL>1
- DO MULT2(%NDPC,%FILE,%FLDNUM,%NBFR,%DATA,%SVIEN,INREPRT,.%FND)
- QUIT
- +54 DO FLD^INHSYS03(%PTO,%NDPC,.%FND,%FILE,%FLDNUM,.INOMIT)
- End DoDot:3
- IF INPOP
- QUIT
- End DoDot:2
- IF INPOP
- QUIT
- +55 IF INPOP
- QUIT
- SET %NODE=%NODE1
- End DoDot:1
- IF INPOP
- QUIT
- +56 QUIT
- MULT(%NBFR,%NODE,%ROOT,DA,%FILE,%FLDNUM,%LEVL,%SVIEN,%FND) ;Process multiple
- +1 ;This module will process multiple as if it were an entire
- +2 ;node and process each entry one piece at a time
- +3 ; %NBFR - the new storage buffer root name
- +4 ; %NODE - node
- +5 ; %ROOT - global root
- +6 ; DA - ien and "Multiple entry"
- +7 ; %FILE - file number
- +8 ; %FLDNUM - field number
- +9 ; %LEVL - file/sub-file level
- +10 NEW %OIEN,%NRT,X,NFLN,YY,%X,%Y,%NFLN,%DIC0,%Z0,%GBL
- +11 SET %DIC0="X"
- +12 SET %OIEN=0
- FOR
- SET %OIEN=$ORDER(@$$RUT^INHSYSUT(%NBFR)@(%OIEN))
- IF '%OIEN
- QUIT
- Begin DoDot:1
- +13 NEW %NRT,ODA
- +14 ;set x to current multiple node of UTILITY global
- +15 SET X=^(%OIEN,0)
- +16 ;get new root
- +17 SET %NRT=%ROOT_DA_","_%NODE_","
- +18 SET %NFLN=$PIECE(^DD(%FILE,%FLDNUM,0),U,2)
- +19 SET %Z0=$GET(^DD(%FILE,%FLDNUM,0))
- +20 IF $PIECE(%Z0,U,2)["P"
- Begin DoDot:2
- +21 SET %GBL="^"_$PIECE(^DD(+%NFLN,.01,0),U,3)
- +22 SET X="`"_+X
- +23 SET YY=$$DIC^INHSYS05(%GBL,$PIECE(X,U),%NFLN,%DIC0,.DA,%LEVL)
- End DoDot:2
- IF YY<0
- DO MSG^INHSYSUT(X,%NFLN,"",1,0)
- QUIT
- +24 IF $PIECE(%Z0,U,2)'["P"
- SET YY=$$DIC^INHSYS05(%NRT,$PIECE(X,U),%NFLN,%DIC0,.DA,%LEVL)
- IF YY<0
- DO MSG^INHSYSUT(X,%NFLN,"",1,0)
- QUIT
- +25 ;D %XY^%RCR
- SET ODA=DA
- SET %X="DA"
- SET %Y="ODA"
- MERGE @%Y=@%X
- +26 DO SETDA(.DA,%LEVL,+YY)
- +27 ;every time you recusion into stuff, it processes multiple
- +28 ;completely for each entry
- +29 DO EXPND(YY,+%NFLN,%NRT,%NBFR_%OIEN_",",%LEVL+1,.DA,INREPRT,%SVIEN,.%FND)
- +30 ;D %XY^%RCR
- KILL DA
- SET DA=ODA
- SET %Y="DA"
- SET %X="ODA"
- MERGE @%Y=@%X
- End DoDot:1
- +31 QUIT
- SETDA(DA,%LEVL,Y) ;Set DA level so fileman doesn't choke
- +1 ; Input:
- +2 ; DA - ien and "Multiple" entry #'s
- +3 ; %LEVL - level in multiple
- +4 ; Y - New entry number
- +5 ; Output:
- +6 ; DA - IEN and "Multiple" entry #'s
- +7 NEW I
- +8 FOR I=%LEVL:-1:3
- SET DA(I-1)=DA(I-2)
- +9 SET DA(1)=DA
- SET DA=+Y
- +10 QUIT
- MULT2(%NDPC,%FILE,%FLD,%NBFR,%DATA,%SVIEN,INREPRT,%FND) ;Process multiple
- +1 ; Input:
- +2 ; %NDPC - The node;piece
- +3 ; %FILE - Source file number
- +4 ; %FLD - Source field number
- +5 ; %NBFR - Buffer of data
- +6 ; %DATA - ien to be expanded
- +7 ; %SVIEN - top level ien, used in PRINT^INHSYS03
- +8 ; INREPRT - 0 no report 1 report
- +9 ; %FND - 1 - Target file not in package
- +10 ; 0 - Target file in package
- +11 ; Site specific files may not be exported. If
- +12 ; this is an entry in one of those files, %FND will
- +13 ; be equal to one. ex) DEVICE FILE
- +14 NEW INP01,%GBFR,%GBL,%PTO,%UPFL,%GBLN,%NOD
- +15 SET %PC=$PIECE(%NDPC,";",2)
- +16 ;Global root of file pointed to
- +17 SET %GBL="^"_$PIECE(^DD(+%FILE,%FLD,0),U,3)
- +18 ; File number of pointed to file
- +19 SET %PTO=$PIECE(^DD(+%FILE,%FLD,0),U,2)
- +20 SET %PTO=+$EXTRACT(%PTO,$FIND(%PTO,"P"),$LENGTH(%PTO))
- +21 SET %GBLN=%GBL_%DATA_",0)"
- +22 IF '$DATA(@%GBLN)
- WRITE !,%FILE,?10,$PIECE($GET(^DIC(%FILE,0)),U),?38,%FLD," Broken Pointer ",%GBLN
- SET INPOP=1
- QUIT
- +23 ;.01 of pointed to file
- +24 SET INP01=$PIECE(@%GBLN,U)
- +25 SET %NOD=$PIECE(%NBFR,@"^DIC($$UP^INHSYSUT(%FILE),0,""GL"")",2)
- +26 SET %GBFR=$$RUT^INHSYSUT("^UTILITY("_$JOB_","_$$UP^INHSYSUT(%FILE)_","_%NOD)
- +27 SET $PIECE(@%GBFR,U,%PC)=INP01
- +28 ;Root source file
- +29 SET %UPFL=$$UP^INHSYSUT(%FILE)
- +30 IF INREPRT
- DO PRINT^INHSYS03(%FILE,%UPFL,%FLD,%PTO,INP01,%GBLN,%SVIEN,.%FND)
- +31 QUIT
- +32 ;
- DEBOFF ;Turn off debug for all background process
- +1 NEW INBN,INBD,INBP
- +2 SET INBN=""
- FOR
- SET INBN=$ORDER(^INTHPC("B",INBN))
- IF INBN=""
- QUIT
- Begin DoDot:1
- +3 SET INBD=$ORDER(^INTHPC("B",INBN,0))
- +4 IF $DATA(^INTHPC(INBD,9))
- Begin DoDot:2
- +5 SET INBP=$PIECE(^INTHPC(INBD,9),U,1)
- +6 IF INBP>0
- Begin DoDot:3
- +7 WRITE !,"WARNING: Debug will be turned off for Background Process: ",INBN
- +8 READ !!?25,"Press <RETURN> To Continue",X:$SELECT($DATA(DTIME):DTIME,1:300)
- +9 SET DR="9.01///@"
- SET DA=INBD
- SET DIE=4004
- DO ^DIE
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +10 QUIT
- +11 ;