1 | PRSDUTIL ;HISC/MGD-PAID DOWNLOAD UTILITY SUB-ROUTINES ;09/10/2003
|
---|
2 | ;;4.0;PAID;**32,82,99**;Sep 21, 1995
|
---|
3 | PIC9 ;Replace 0s
|
---|
4 | S DIF=LTH-$L(GRPVAL) I DIF>0 F FF=1:1:DIF S GRPVAL="0"_GRPVAL
|
---|
5 | K DIF,FF Q
|
---|
6 | SIGN ;Sign conversion
|
---|
7 | S L=$L(DATA),S=$E(DATA,L)
|
---|
8 | S LC=$S(S="{":0,S="A":1,S="B":2,S="C":3,S="D":4,S="E":5,S="F":6,S="G":7,S="H":8,S="I":9,S="}":0,S="J":1,S="K":2,S="L":3,S="M":4,S="N":5,S="O":6,S="P":7,S="Q":8,S="R":9,1:S)
|
---|
9 | S DATA=$E(DATA,1,L-1)_LC
|
---|
10 | S:(S="}")!(S="J")!(S="K")!(S="L")!(S="M")!(S="N")!(S="O")!(S="P")!(S="Q")!(S="R") DATA="-"_DATA
|
---|
11 | K L,LC,S Q
|
---|
12 | D ;.0
|
---|
13 | S L=$L(DATA),DATA=$E(DATA,1,L-1)_"."_$E(DATA,L) K L G RZ
|
---|
14 | DD ;.00
|
---|
15 | S L=$L(DATA),DATA=$E(DATA,1,L-2)_"."_$E(DATA,L-1,L) K L G RZ
|
---|
16 | DDD ;.000
|
---|
17 | S L=$L(DATA),DATA=$E(DATA,1,L-3)_"."_$E(DATA,L-2,L) K L G RZ
|
---|
18 | DDDD ;.0000
|
---|
19 | S L=$L(DATA),DATA=$E(DATA,1,L-4)_"."_$E(DATA,L-3,L) K L G RZ
|
---|
20 | DDDDD ;.00000
|
---|
21 | S L=$L(DATA),DATA=$E(DATA,1,L-5)_"."_$E(DATA,L-4,L) K L G RZ
|
---|
22 | AHRS ;Acct hrs
|
---|
23 | S L=$L(DATA),LD=$E(DATA,L),FD=$E(DATA,1,L-1)
|
---|
24 | S LD=$S(LD=0:"00",LD=1:25,LD=2:50,LD=3:75,1:LD)
|
---|
25 | S DATA=FD_"."_LD,DATA=+DATA
|
---|
26 | K FD,L,LD G RZ
|
---|
27 | PCT ;%
|
---|
28 | S:+$P(DATA,".",2)=0 DATA=DATA\1
|
---|
29 | S DATA=DATA_"%" Q
|
---|
30 | RZ ;Remove leading 0s
|
---|
31 | I +DATA=0 S DATA="" Q
|
---|
32 | S FC=$E(DATA,1)
|
---|
33 | S $P(DATA,".")=+$P(DATA,".")
|
---|
34 | I FC="-",$E(DATA,1)'="-" S DATA="-"_DATA
|
---|
35 | K FC Q
|
---|
36 | DATE ;Convert Austin Date to Fileman Date
|
---|
37 | ;Austin's date has form xxYYMMDD or YYYYMMDD
|
---|
38 | Q:DATA=""
|
---|
39 | I $E(DATA,5,8)="0000" S DATA="" Q
|
---|
40 | N X,Y,%DT,DTOUT
|
---|
41 | S X=$E(DATA,5,8)_$S(+$E(DATA)'=$E(DATA):$E(DATA,3,4),1:$E(DATA,1,4))
|
---|
42 | S %DT="" D ^%DT
|
---|
43 | S DATA=$S(Y>0:Y,1:"")
|
---|
44 | Q
|
---|
45 | LZ ;Insert leading 0s
|
---|
46 | F UUU=1:1:L-$L(DATA) S DATA=0_DATA
|
---|
47 | K L,UUU Q
|
---|
48 | RTS ;Remove trailing spaces
|
---|
49 | Q:$E(DATA,$L(DATA))'=" "
|
---|
50 | F SLOOP=$L(DATA):-1 Q:$E(DATA,SLOOP)'=" " S DATA=$E(DATA,1,SLOOP-1)
|
---|
51 | K SLOOP Q
|
---|
52 | OT ;Output trans
|
---|
53 | Q:Y="" S IEN454=0,IEN454=$O(^PRSP(454,1,SUB454,"B",Y,IEN454))
|
---|
54 | I IEN454>0,$P(^PRSP(454,1,SUB454,IEN454,0),U,2)'="" S Y=$P(^PRSP(454,1,SUB454,IEN454,0),U,2) I SUB454="ORG",$D(^PRSP(454.1,Y,0)) S Y=$P(^PRSP(454.1,Y,0),U,1)
|
---|
55 | K IEN454,SUB454 Q
|
---|
56 | SOT ;State
|
---|
57 | Q:Y=""
|
---|
58 | S IEN5=0,IEN5=$O(^DIC(5,"C",Y,IEN5))
|
---|
59 | S Y=$S(IEN5>0:$P(^DIC(5,IEN5,0),U,1),1:Y)
|
---|
60 | K IEN5 Q
|
---|
61 | AC ;Asgmnt code
|
---|
62 | Q:Y=""
|
---|
63 | S AC="",AC1="",OSC=$E($P(^PRSPC(D0,0),U,17),1,4)
|
---|
64 | F LLL=0:0 S LLL=$O(^PRSP(454,1,"ASS","B",Y,LLL)) Q:LLL="" D Q:AC'=""
|
---|
65 | .S OCCS=$P(^PRSP(454,1,"ASS",LLL,0),U,3)
|
---|
66 | .I OCCS="" S AC1=$P(^PRSP(454,1,"ASS",LLL,0),"^",2)
|
---|
67 | .I OCCS[OSC S AC=$P(^PRSP(454,1,"ASS",LLL,0),"^",2)
|
---|
68 | S Y=$S(AC'="":AC,1:AC1)
|
---|
69 | K AC,AC1,LLL,OCCS,OSC Q
|
---|
70 | TITLE ;Title
|
---|
71 | I DATA=" " S DATA="" Q
|
---|
72 | S LD=$E(DATA,6) S:LD'?1N $P(^PRSPC(IEN,0),U,42)=LD
|
---|
73 | I $P(^PRSPC(IEN,0),U,42)?1U&(LD?1N) S $P(^PRSPC(IEN,0),U,42)=""
|
---|
74 | K LD Q
|
---|
75 | NH ;Norm Hrs
|
---|
76 | S DATA=+DATA,DB=$P(^PRSPC(IEN,0),U,10)
|
---|
77 | S NH=$S(DATA>0:DATA,DB=1:80,DB=2:DATA,DB=3:0,1:0)
|
---|
78 | S $P(^PRSPC(IEN,0),U,50)=NH
|
---|
79 | K DB,NH Q
|
---|
80 | STEP ;Step
|
---|
81 | I DATA=" " S DATA="" Q
|
---|
82 | S:$E(DATA,1)=" " DATA=$E(DATA,2) Q
|
---|
83 | ORGCC ;Org/Cost Cntr
|
---|
84 | I DBNAME="MXORGCOD" S COST=$E(DATA,1,4),$P(^PRSPC(IEN,0),U,18)=COST
|
---|
85 | S CCORG=$E(DATA,1,4)_":"_$E(DATA,5,8)
|
---|
86 | I '$D(^PRSP(454,1,"ORG","B",CCORG)) K DD,DO S DIC="^PRSP(454,1,""ORG"",",DIC(0)="L",DLAYGO=454,X=CCORG D FILE^DICN S ^TMP($J,"ORG",CCORG)=""
|
---|
87 | K COST,CCORG,DIC,DLAYGO,X Q
|
---|
88 | PVAE ;Prior VA Exp
|
---|
89 | F ABC=1:1:$L(DATA) S PV=$E(DATA,ABC),PIECE=$S(PV="A":1,PV="B":2,PV="C":3,PV="D":4,PV="E":5,PV="F":6,PV="G":7,PV="H":8,PV="I":9,PV="J":10,PV="K":11,PV="L":12,PV="M":13,PV=0:ABC,1:"") S:PIECE'="" $P(^PRSPC(IEN,NODE),U,PIECE)=PV
|
---|
90 | K ABC,PV Q
|
---|
91 | ZIP ;Zip
|
---|
92 | I +DATA=0 S DATA="" Q
|
---|
93 | I $E(DATA,6,9)="0000" S DATA=$E(DATA,1,5) Q
|
---|
94 | S DATA=$E(DATA,1,5)_"-"_$E(DATA,6,9) Q
|
---|
95 | NPLWOP ;Nonpay & LWOP Hrs
|
---|
96 | S LVGRP=$P(^PRSPC(IEN,0),U,15)
|
---|
97 | S NPLWOP=$S((LVGRP=4)!(LVGRP=5):$J((DATA/14)*80,1,0),1:DATA)
|
---|
98 | I DBNAME="ANONPATIME" S $P(^PRSPC(IEN,1),U,43)=NPLWOP S:TYPE="P" $P(^PRST(459,PPIEN,"P",IEN,6),U,5)=NPLWOP
|
---|
99 | I DBNAME="ALWOPUSED" S $P(^PRSPC(IEN,"LWOP"),U,11)=NPLWOP S:TYPE="P" $P(^PRST(459,PPIEN,"P",IEN,4),U,9)=NPLWOP
|
---|
100 | K LVGRP,NPLWOP Q
|
---|
101 | NEWSSN ;New SSN
|
---|
102 | I $L(DATA)<9 S L=9 D LZ
|
---|
103 | Q
|
---|
104 | COMP ;0 out comp time bal
|
---|
105 | I DATA="",$E(^PRSPC(IEN,"COMP"),1,7)="^^^^^^^",$P(^PRSPC(IEN,"COMP"),U,9)'="" F ABC=9:1:17 S $P(^PRSPC(IEN,"COMP"),U,ABC)=""
|
---|
106 | Q
|
---|
107 | OST ;Occupation Series & Title Output Transform
|
---|
108 | S OSC=Y,OSC14=$E(Y,1,4),OSC15=$E(Y,1,5),LD=$E(Y,6)
|
---|
109 | G:LD?1N OSTOT
|
---|
110 | I OSC14<2200 S NLD=$S((LD="A")!(LD="J"):1,(LD="B")!(LD="K"):2,(LD="C")!(LD="L"):3,(LD="D")!(LD="M"):4,(LD="E")!(LD="N"):5,(LD="F")!(LD="O"):6,(LD="G")!(LD="P"):7,(LD="H")!(LD="Q"):8,(LD="I")!(LD="R"):9,1:LD) S Y=OSC15_NLD
|
---|
111 | I OSC14>2600,LD'?1N S Y=OSC15_"0"
|
---|
112 | OSTOT S SUB454="OCC" D OT^PRSDUTIL K SUB454
|
---|
113 | I OSC14<2200,(LD="A")!(LD="B")!(LD="C")!(LD="D")!(LD="E")!(LD="F")!(LD="G")!(LD="H")!(LD="I") S:(Y'["OFFICER")!(Y="POLICE OFFICER") Y="SUPERVISORY "_Y G OSTEX
|
---|
114 | I OSC14<2200,(LD="J")!(LD="K")!(LD="L")!(LD="M")!(LD="N")!(LD="O")!(LD="P")!(LD="Q")!(LD="R") S Y="LEAD "_Y G OSTEX
|
---|
115 | I OSC14>2600,(LD="F")!(LD="G")!(LD="H")!(LD="L")!(LD="S") S SUF=$S(LD="H":" HELPER",LD="L":" LEADER",LD="F":" FOREMAN",LD="G":" GENERAL FOREMAN",LD="S":" SUPERVISOR",1:LD),Y=Y_SUF
|
---|
116 | OSTEX K OSC,OSC14,OSC15,LD,NLD,SUF
|
---|
117 | Q
|
---|
118 | ;
|
---|
119 | LD ; Set Labor Distribution fields into Multiple.
|
---|
120 | N PRSTMP
|
---|
121 | S PRSTMP=DATA,DATA=$E(DATA,1,4)
|
---|
122 | D LD^PRSDSET
|
---|
123 | S DATA=PRSTMP
|
---|
124 | Q
|
---|
125 | ;==============================================================
|
---|
126 | PATCH32 ;Subprograms LOOP450 and DTCMP are post-installation routines
|
---|
127 | ;for patch PRS*4*32. They have no other intended use.
|
---|
128 | ;Convert fields that have received year 2000 dates from Austin.
|
---|
129 | ;Loop thru all employee records. Within employee records loop thru
|
---|
130 | ;the 9 nodes (see ND variable) in each record that contain potential
|
---|
131 | ;problem dates. Traverse the up arrow delimited data in each node,
|
---|
132 | ;but only check the pieces defined in the CHECK array nodes.
|
---|
133 | ;Convert dates in those fields that fall between jan 01, 1900 and
|
---|
134 | ;DEC 31, 1910 inclusively. The conversion will only change the
|
---|
135 | ;century to the 21st.
|
---|
136 | ;
|
---|
137 | ;
|
---|
138 | Q
|
---|
139 | ;==============================================================
|
---|
140 | LOOP450 ;
|
---|
141 | ;
|
---|
142 | ;****Keep post-installation from running on subsequent patch installs
|
---|
143 | I $$PATCH^XPDUTL("PRS*4.0*32") D MSSG(0) Q
|
---|
144 | ;
|
---|
145 | D MSSG(1)
|
---|
146 | N CHECK,ND,REC,PIECES,XPDIDTOT,DIV,%
|
---|
147 | S CHECK(0)="51^"
|
---|
148 | S CHECK(1)="30^"
|
---|
149 | S CHECK(2)="2^3^4^5^6^7^8^9^10^11^12^13^14^15^16^17^18^20^22^23^24^25^26^27^28^29^30^31^32^"
|
---|
150 | S CHECK(3)="1^2^3^4^5^6^7^8^9^10^11^12^13^14^15^16^19^20^21^22^"
|
---|
151 | S CHECK(4)="1^2^3^4^5^6^7^8^9^10^11^12^13^14^15^16^17^18^19^20^"
|
---|
152 | S CHECK("PCD")="4^"
|
---|
153 | S CHECK("MSD2")="9^"
|
---|
154 | S CHECK("BOND1")="12^"
|
---|
155 | S CHECK("BOND2")="11^"
|
---|
156 | S CHECK("TSP1")="5^12^14^"
|
---|
157 | ;
|
---|
158 | S XPDIDTOT=$P($G(^PRSPC(0)),"^",4)
|
---|
159 | S DIV=XPDIDTOT\20
|
---|
160 | S %=0
|
---|
161 | S REC=0 F S REC=$O(^PRSPC(REC)) Q:REC'>0 D
|
---|
162 | . S %=%+1
|
---|
163 | . I '(%#DIV) D UPDATE^XPDID(%)
|
---|
164 | . S ND=""
|
---|
165 | . F S ND=$O(CHECK(ND)) Q:ND="" D
|
---|
166 | .. I $G(^PRSPC(REC,ND))'="" D
|
---|
167 | ... S PIECES=CHECK(ND)
|
---|
168 | ... D DTCMP(REC,ND,$G(^PRSPC(REC,ND)),PIECES)
|
---|
169 | Q
|
---|
170 | ;==============================================================
|
---|
171 | DTCMP(IEN,NODE,DATANODE,PIECES) ;
|
---|
172 | ;Look at all PEICES in a single DATANODE of an employee's record
|
---|
173 | ;and convert dates from 1900-1910 to respective dates in 2000-2010.
|
---|
174 | N PIECE,NEXT,NEWDATE,DATA
|
---|
175 | F NEXT=1:1 S PIECE=$P(PIECES,"^",NEXT) Q:PIECE="" D
|
---|
176 | . S DATA=$P(DATANODE,"^",PIECE)
|
---|
177 | . I (DATA<2110101),(DATA>1991231) D
|
---|
178 | .. S NEWDATE="3"_$E(DATA,2,7)
|
---|
179 | .. S $P(^PRSPC(IEN,NODE),"^",PIECE)=NEWDATE
|
---|
180 | Q
|
---|
181 | ;==============================================================
|
---|
182 | MSSG(FLAG) ;OUT PUT POST INSTALLATION MESSAGE.
|
---|
183 | N MSSG
|
---|
184 | I FLAG S MSSG="Checking date fields in File 450."
|
---|
185 | E S MSSG="Date fields not checked. Checked during previous install of PRS*4*32"
|
---|
186 | D MES^XPDUTL(MSSG)
|
---|
187 | Q
|
---|
188 | ;==============================================================
|
---|