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

INHUT3.m

Go to the documentation of this file.
  1. INHUT3 ;WFH,JPD; 27 Nov 95 11:42; Tools Interface ZIS front-end function
  1. ;;3.01;BHL IHS Interfaces with GIS;;JUL 01, 2001
  1. ;COPYRIGHT 1991-2000 SAIC
  1. ;
  1. ZIS(INRTN,INZVARS,INZIOM,INASK) ; Ask op for device, do ZTRTN.
  1. ; INRTN(req)=Name of routine does report output."^rou" or "label^rou".
  1. ; INZVARS(op)=Names of variables to pass ZTRTN. Separate names
  1. ; with "^". Example: "INBEG^INHEAD(^INTYPE". Or can be array by
  1. ; ref. like the ZTSAVE taskman array.
  1. ; INZIOM(op)=Width. Def 80. Avoids(disregards)interaction about width
  1. ; INASK = If 0, ask for device
  1. ; If 1, overwrite flatfile INHSYS.RPT with new data
  1. ; If 2, append output to INHSYS.RPT
  1. ; If 3, no output
  1. ;
  1. S INASK=+$G(INASK) S:'$G(INZIOM) INZIOM=80
  1. F Q:$$ZISASK W !?5,"Try again.",!
  1. Q
  1. ; Query device. False to ask again.
  1. ZISASK() N %,%ZIS,IO,IOP,POP S %ZIS="NP"
  1. S (INZLIM("POP"),INZLIM("ZTSK"))=0
  1. ; If user needs to define a device, call ^%ZIS w/o open.
  1. ; If timeout or "^", reset to terminal & quit
  1. I 'INASK D ^%ZIS I POP S IOP="",%ZIS="" D ^%ZIS K DTOUT Q 1
  1. I INASK,INASK'=3 S IO=$G(INRPTNM) I IO="" W *7,!,?5,"Invalid Flat File Name!" Q 0
  1. ; force to specified length, even if user said otherwise
  1. S IOM=INZIOM
  1. ; user said slave, but not allowed
  1. I $D(IO("S")) D Q 0
  1. .W *7,!?5,"Sorry, this report cannot be sent to slave."
  1. ; user said queue to something - should not occur from value
  1. ; of %ZIS above
  1. I $D(IO("Q")) W *7,!?5,"This report cannot be queued!" Q 0
  1. ; user input "passed muster"; do variable setup
  1. S IOP=ION_";"_IOM_";"_IOSL
  1. ; not queing: open device, do report, close, & quit
  1. I INASK'=3 D OPENIT Q:POP 0
  1. N INZDEF,INZIOM,INZOPTN,INZLIM,INZPRMPT,INZVARS
  1. D:INRTN]"" @INRTN I $E(IOST)="C",IOM>80,$D(IOA(80)) W @IOA(80)
  1. ; Close Flat File or device
  1. Q:INASK=3 1 I INASK D
  1. .I $$CLOSESEQ^%ZTFS1(IO)
  1. E D ^%ZISC
  1. Q 1
  1. ;
  1. RUNTSK U IO D @INRTN D:$G(ZTSK) CLNUP^%ZTLOAD(ZTSK) D ^%ZISC Q
  1. ;
  1. ; Internal routine to open device
  1. OPENIT I INASK N RNAME S RNAME=$$OPENSEQ^%ZTFS1(IO,"W"_$S(INASK=1:"B",1:"A")),POP=0 U IO Q
  1. S POP=0,%ZIS="" D ^%ZIS
  1. I POP S IOP="" D ^%ZIS W *7,!?5,"Device busy."
  1. U IO I $E(IOST)="C",IOM>80,$D(IOA(132)) W @IOA(132)
  1. Q
  1. RMRTN(%FIND) ;Clean up IB routines used
  1. ; INPUT: %FIND - Prefix of routines to remove
  1. ; i.e., IBxxxx
  1. Q:$E(%FIND,1,2)'="IB" N I,X,EX S I=0,EX=^%ZOSF("DEL")
  1. F S I=$$HEXUP^INHSYS04(I),X=%FIND_$S($L(I)<2:"0"_I,1:I) Q:'$$ROUTEST^%ZTF(X) X EX
  1. S X=%FIND_"W" I $$ROUTEST^%ZTF(X) X EX
  1. Q
  1. ; Internal routine to setup taskman array
  1. ZTSAVE N I K ZTSAVE
  1. I $D(INZVARS)<10 S INZVARS=$G(INZVARS) D Q
  1. .F I=1:1 S %=$P(INZVARS,U,I) Q:%="" S ZTSAVE(%)=""
  1. S I="" F S I=$O(INZVARS(I)) Q:I="" S ZTSAVE(I)=INZVARS(I)
  1. Q
  1. ORDER(GL,VAR,ST,END,EX) ;MOVE TO %ZTF
  1. ; Perform indirect $Order and execute line for each
  1. ; Inputs:
  1. ; GL - Global name VAR - Variable to use for $O
  1. ; ST - Starting place in Global
  1. ; END - Ending condition EX - Excutable code for each node
  1. Q:$G(EX)=""!($G(END)="")!($G(ST)="")!($G(VAR)="")!($G(GL)="")
  1. N @VAR,C S @VAR=ST,C=$E(GL,$L(GL)) Q:C=")"
  1. I C'=",",C'="(" S GL=GL_"("
  1. S GL=GL_VAR_")"
  1. ;S GL=GL_"("_VAR_")"
  1. 12 S @VAR=$O(@GL) I @END Q
  1. X EX G 12
  1. ;===========================================
  1. TR(X) ; Calculate Valid VMS filename for TRANSACTION TYPE by translating
  1. ; " " to "_", all other invalid characters to "-"
  1. ; Input should be the TRANSACTION TYPE NAME field
  1. ; Extention must be added by calling routine
  1. Q $TR(X," .;()/*#@^&%<>,?[]{}|\`~':""","_--------------------------")