source: FOIAVistA/tag/r/NOIS-FSC/FSCRPXG.m@ 1456

Last change on this file since 1456 was 628, checked in by George Lilly, 15 years ago

initial load of FOIAVistA 6/30/08 version

File size: 2.2 KB
Line 
1FSCRPXG ;SLC/STAFF-NOIS RPC Driver - General Use ;1/13/98 16:36
2 ;;1.1;NOIS;;Sep 06, 1998
3 ;
4RPC(OUTPUT,INPUT) ;
5 ; routes all NOIS Workstation Calls
6 ; ensures user is authorized to use NOIS
7 ; input array sent from client should be within a safe partition size
8 ; IN and OUT arrays are not being used, param passing uses TMP instead
9 N FSCDEV,FIRSTNUM,INLINE,IN,MAX,NUM,OK,OUT,OUTLINE,RTN,START K IN,OUT
10 S MAX=30 ; max # lines that can be sent to client
11 S FSCDEV=1
12 S FIRSTNUM=+$O(INPUT(""))
13 S INLINE=$G(INPUT(FIRSTNUM))
14 S OK=1
15 I $P(INLINE,U,10)=1 D I 'OK Q ; 1st input
16 .K ^TMP("FSCRPC",$J)
17 .I $$SHUTDOWN D Q
18 ..S OK=0
19 ..S ^TMP("FSCRPC",$J,"OUTPUT",0)="^1"
20 ..S OUTPUT=$NA(^TMP("FSCRPC",$J,"OUTPUT"))
21 .M ^TMP("FSCRPC",$J,"INPUT")=INPUT
22 E D
23 .I $P(INLINE,U,4) D ; more input being sent
24 ..S START=$O(^TMP("FSCRPC",$J,"INPUT",""),-1)
25 ..S NUM=0 F S NUM=$O(INPUT(NUM)) Q:NUM<1 D
26 ...S START=START+1
27 ...S ^TMP("FSCRPC",$J,"INPUT",START)=INPUT(NUM)
28 K INPUT,OUTPUT
29 S OUTLINE="^0"
30 S OK=1
31 I $E($P(INLINE,U,2),1,6)="FSCRPC" D I 'OK Q
32 .S RTN=$P(INLINE,U,1,2)
33 .;I '$L($T(@RTN)) S $P(OUTLINE,U,3)=1 Q ; cancel if invalid routine
34 .I $P(INLINE,U,4) Q ; don't process until no more input
35 .I $P(INLINE,U,5) D MORE(MAX,OUTLINE,.OUTPUT) S OK=0 Q ; send more output
36 .K ^TMP("FSCRPC",$J,"OUTPUT")
37 .S RTN=RTN_"(.IN,.OUT)" D @RTN
38 .;D MENUS^FSCRPXM(DUZ,.OUTLINE)
39 .K ^TMP("FSCRPC",$J,"INPUT")
40 I +$G(^TMP("FSCRPC",$J,"OUTPUT"))<MAX D
41 .S ^TMP("FSCRPC",$J,"OUTPUT",0)=OUTLINE
42 .S OUTPUT=$NA(^TMP("FSCRPC",$J,"OUTPUT"))
43 E D MORE(MAX,OUTLINE,.OUTPUT)
44 Q
45 ;
46MORE(MAX,OUTLINE,OUTPUT) ;
47 N CNT,COUNT,LINE,NUM
48 K ^TMP("FSCRPC",$J,"OUTPUTLONG")
49 S (CNT,NUM)=0 F S NUM=$O(^TMP("FSCRPC",$J,"OUTPUT",NUM)) Q:NUM<1 Q:CNT'<MAX S LINE=^(NUM) D
50 .S CNT=CNT+1
51 .S ^TMP("FSCRPC",$J,"OUTPUTLONG",CNT)=LINE
52 .K ^TMP("FSCRPC",$J,"OUTPUT",NUM)
53 I $O(^TMP("FSCRPC",$J,"OUTPUT",0))>0 S $P(OUTLINE,U,5)=1 ; more to come
54 E S $P(OUTLINE,U,5)=0 K ^TMP("FSCRPC",$J,"INPUT"),^TMP("FSCRPC",$J,"OUTPUT")
55 S ^TMP("FSCRPC",$J,"OUTPUTLONG",0)=OUTLINE
56 S OUTPUT=$NA(^TMP("FSCRPC",$J,"OUTPUTLONG"))
57 Q
58 ;
59TEST(X) ; $$(routine entry) -> 0 or 1 if exists on system
60 X ^%ZOSF("TEST") Q $T
61 ;
62SHUTDOWN() ; $$ -> 1 or 0 to shutdown applications
63 I $P($G(^FSC("PARAM",1,2)),U) Q 1
64 Q 0
Note: See TracBrowser for help on using the repository browser.