- PRSDCOMP ;HISC/FPT,GWB-COMPUTED FIELDS FOR 450 & 459 ;12/09/2002
- ;;4.0;PAID;**78**;Sep 21, 1995
- EN1 ;calculate computed fields
- S ZERO=$G(^PRST(459,PPIEN,"P",IEN,0))
- S ONE=$G(^PRST(459,PPIEN,"P",IEN,1))
- S TWO=$G(^PRST(459,PPIEN,"P",IEN,2))
- S THREE=$G(^PRST(459,PPIEN,"P",IEN,3))
- S FOUR=$G(^PRST(459,PPIEN,"P",IEN,4))
- S FIVE=$G(^PRST(459,PPIEN,"P",IEN,5))
- S SIX=$G(^PRST(459,PPIEN,"P",IEN,6))
- S SUBACCT=$P(ZERO,U,9),PAYPLAN=$P(ZERO,U,3)
- S MEDICARE=$P(ONE,U,6),VAFICA=$P(ONE,U,10),VALICOST=$P(ONE,U,15),VAHBCOST=$P(ONE,U,18),VARETIRE=$P(ONE,U,21)
- S TSP=$P(TWO,U,13)+$P(TWO,U,14)+$P(TWO,U,15)+$P(TWO,U,16)+$P(TWO,U,17)+$P(TWO,U,18)
- S SEVPAY=$P(THREE,U,2)
- S ALUSED=$P(FOUR,U,1),SLUSED=$P(FOUR,U,2)
- S GROSSPAY=$P(FIVE,U,1),ANNUITY=$P(FIVE,U,4),BASEPAY=$P(FIVE,U,5),HOLPAY=$P(FIVE,U,8),ONCALL=$P(FIVE,U,13),OTPAY=$P(FIVE,U,14),SATPAY=$P(FIVE,U,17),STANDPAY=$P(FIVE,U,18),SUNPAY=$P(FIVE,U,19)
- S LIVING=$P(FIVE,U,22),AWARDS=$P(FIVE,U,24),SESAWARD=$P(FIVE,U,25),LUMPSUM=$P(FIVE,U,26),MOVING=$P(FIVE,U,28),UNIFORM=$P(FIVE,U,29)
- S MDDDPAY=$P(SIX,U,3)
- ;gross pay plus benefits
- S COMPUTED=GROSSPAY+UNIFORM+MEDICARE+VALICOST+VAHBCOST+VAFICA+VARETIRE+TSP+ANNUITY D DECIMAL
- S $P(^PRST(459,PPIEN,"P",IEN,8),U,1)=COMPUTED,$P(^PRSPC(IEN,"PAY"),U,10)=COMPUTED
- ;annual leave used
- S COMPUTED=$S(SUBACCT=81!(SUBACCT=71)!(PAYPLAN="Y"):ALUSED*8,1:ALUSED) D DECIMAL
- S $P(^PRST(459,PPIEN,"P",IEN,4),U,7)=COMPUTED,$P(^PRSPC(IEN,"ANNUAL"),U,14)=COMPUTED
- ;sick leave used
- S COMPUTED=$S(SUBACCT=81!(SUBACCT=71)!(PAYPLAN="Y"):SLUSED*8,1:SLUSED) D DECIMAL
- S $P(^PRST(459,PPIEN,"P",IEN,4),U,8)=COMPUTED,$P(^PRSPC(IEN,"SICK"),U,8)=COMPUTED
- I $D(^PRSPC(IEN,"BOND1")),$P(^PRSPC(IEN,"BOND1"),U,11)="Y" K ^PRSPC(IEN,"BOND1")
- I $D(^PRSPC(IEN,"BOND2")),$P(^PRSPC(IEN,"BOND2"),U,10)="Y" K ^PRSPC(IEN,"BOND2")
- I $D(^PRSPC(IEN,"BOND3")),$P(^PRSPC(IEN,"BOND3"),U,10)="Y" K ^PRSPC(IEN,"BOND3")
- I $D(^PRSPC(IEN,"BOND4")),$P(^PRSPC(IEN,"BOND4"),U,10)="Y" K ^PRSPC(IEN,"BOND4")
- KILL1 K ALUSED,ANNUITY,AWARDS,BASEPAY,COMPUTED,FOUR,FIVE,GROSSPAY,HOLPAY,LIVING,LUMPSUM,MDDDPAY,MEDICARE,MOVING,ONCALL,ONE,OTPAY
- K PAYPLAN,SATPAY,SESAWARD,SEVPAY,SIX,SLUSED,STANDPAY,SUBACCT,SUNPAY,THREE,TSP,TWO,UNIFORM,VAFICA,VAHBCOST,VALICOST,VARETIRE,ZERO
- Q
- DECIMAL ;check decimal digits
- S:COMPUTED'["." COMPUTED=COMPUTED_"."
- S:$L($P(COMPUTED,".",1))=0 COMPUTED="0"_COMPUTED
- S:$L($P(COMPUTED,".",2))=0 COMPUTED=COMPUTED_"00"
- S:$L($P(COMPUTED,".",2))=1 COMPUTED=COMPUTED_"0"
- Q
- FTE ;FTE computation
- S FTEE=DATA,DB=$P(^PRSPC(IEN,0),U,10),NH8B=$P(^PRSPC(IEN,0),U,16) D
- .I DB=1,FTEE=0 S $P(^PRSPC(IEN,"MISC4"),U,11)=1 Q
- .I DB=1,FTEE>0 S $P(^PRSPC(IEN,"MISC4"),U,11)="."_FTEE Q
- .I DB=2,NH8B=1 S $P(^PRSPC(IEN,"MISC4"),U,11)=0 Q
- .I DB=2 S FTEE=$FN(NH8B/80,"",2),$P(^PRSPC(IEN,"MISC4"),U,11)=+FTEE Q
- .I DB=3,FTEE=0 S $P(^PRSPC(IEN,"MISC4"),U,11)=0 Q
- .I DB=3,FTEE>0 S $P(^PRSPC(IEN,"MISC4"),U,11)="."_FTEE
- S NODE=""
- K DB,FTEE,NH8B Q
- BONDS ;Savings Bond Balance computation
- I $D(^PRSPC(IEN,"BOND1")) S $P(^PRSPC(IEN,"BOND1"),U,9)="" I $P(RCD,":",8)="" D
- .S SBBAL=$P(^PRSPC(IEN,"BOND1"),U,5)
- .S SBEPP=$P(^PRSPC(IEN,"BOND1"),U,10)
- .S SBDEM=$P(^PRSPC(IEN,"BOND1"),U,11)
- .S SBDEM=$S(SBDEM=4:50,SBDEM=8:100,SBDEM="B":250,SBDEM="D":500,SBDEM="F":2500,1:0)
- .I SBEPP+SBBAL=SBDEM S $P(^PRSPC(IEN,"BOND1"),U,5)=""
- I $D(^PRSPC(IEN,"BOND2")) S $P(^PRSPC(IEN,"BOND2"),U,8)="" I $P(RCD,":",9)="" D
- .S SBBAL=$P(^PRSPC(IEN,"BOND2"),U,4)
- .S SBEPP=$P(^PRSPC(IEN,"BOND2"),U,9)
- .S SBDEM=$P(^PRSPC(IEN,"BOND2"),U,10)
- .S SBDEM=$S(SBDEM=4:50,SBDEM=8:100,SBDEM="B":250,SBDEM="D":500,SBDEM="F":2500,1:0)
- .I SBEPP+SBBAL=SBDEM S $P(^PRSPC(IEN,"BOND2"),U,4)=""
- I $D(^PRSPC(IEN,"BOND3")) S $P(^PRSPC(IEN,"BOND3"),U,8)="" I $P(RCD,":",9)="" D
- .S SBBAL=$P(^PRSPC(IEN,"BOND3"),U,4)
- .S SBEPP=$P(^PRSPC(IEN,"BOND3"),U,9)
- .S SBDEM=$P(^PRSPC(IEN,"BOND3"),U,10)
- .S SBDEM=$S(SBDEM=4:50,SBDEM=8:100,SBDEM="B":250,SBDEM="D":500,SBDEM="F":2500,1:0)
- .I SBEPP+SBBAL=SBDEM S $P(^PRSPC(IEN,"BOND3"),U,4)=""
- I $D(^PRSPC(IEN,"BOND4")) S $P(^PRSPC(IEN,"BOND4"),U,8)="" I $P(RCD,":",9)="" D
- .S SBBAL=$P(^PRSPC(IEN,"BOND4"),U,4)
- .S SBEPP=$P(^PRSPC(IEN,"BOND4"),U,9)
- .S SBDEM=$P(^PRSPC(IEN,"BOND4"),U,10)
- .S SBDEM=$S(SBDEM=4:50,SBDEM=8:100,SBDEM="B":250,SBDEM="D":500,SBDEM="F":2500,1:0)
- .I SBEPP+SBBAL=SBDEM S $P(^PRSPC(IEN,"BOND4"),U,4)=""
- K SBBAL,SBEPP,SBDEM Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPRSDCOMP 4379 printed Mar 13, 2025@21:30:10 Page 2
- PRSDCOMP ;HISC/FPT,GWB-COMPUTED FIELDS FOR 450 & 459 ;12/09/2002
- +1 ;;4.0;PAID;**78**;Sep 21, 1995
- EN1 ;calculate computed fields
- +1 SET ZERO=$GET(^PRST(459,PPIEN,"P",IEN,0))
- +2 SET ONE=$GET(^PRST(459,PPIEN,"P",IEN,1))
- +3 SET TWO=$GET(^PRST(459,PPIEN,"P",IEN,2))
- +4 SET THREE=$GET(^PRST(459,PPIEN,"P",IEN,3))
- +5 SET FOUR=$GET(^PRST(459,PPIEN,"P",IEN,4))
- +6 SET FIVE=$GET(^PRST(459,PPIEN,"P",IEN,5))
- +7 SET SIX=$GET(^PRST(459,PPIEN,"P",IEN,6))
- +8 SET SUBACCT=$PIECE(ZERO,U,9)
- SET PAYPLAN=$PIECE(ZERO,U,3)
- +9 SET MEDICARE=$PIECE(ONE,U,6)
- SET VAFICA=$PIECE(ONE,U,10)
- SET VALICOST=$PIECE(ONE,U,15)
- SET VAHBCOST=$PIECE(ONE,U,18)
- SET VARETIRE=$PIECE(ONE,U,21)
- +10 SET TSP=$PIECE(TWO,U,13)+$PIECE(TWO,U,14)+$PIECE(TWO,U,15)+$PIECE(TWO,U,16)+$PIECE(TWO,U,17)+$PIECE(TWO,U,18)
- +11 SET SEVPAY=$PIECE(THREE,U,2)
- +12 SET ALUSED=$PIECE(FOUR,U,1)
- SET SLUSED=$PIECE(FOUR,U,2)
- +13 SET GROSSPAY=$PIECE(FIVE,U,1)
- SET ANNUITY=$PIECE(FIVE,U,4)
- SET BASEPAY=$PIECE(FIVE,U,5)
- SET HOLPAY=$PIECE(FIVE,U,8)
- SET ONCALL=$PIECE(FIVE,U,13)
- SET OTPAY=$PIECE(FIVE,U,14)
- SET SATPAY=$PIECE(FIVE,U,17)
- SET STANDPAY=$PIECE(FIVE,U,18)
- SET SUNPAY=$PIECE(FIVE,U,19)
- +14 SET LIVING=$PIECE(FIVE,U,22)
- SET AWARDS=$PIECE(FIVE,U,24)
- SET SESAWARD=$PIECE(FIVE,U,25)
- SET LUMPSUM=$PIECE(FIVE,U,26)
- SET MOVING=$PIECE(FIVE,U,28)
- SET UNIFORM=$PIECE(FIVE,U,29)
- +15 SET MDDDPAY=$PIECE(SIX,U,3)
- +16 ;gross pay plus benefits
- +17 SET COMPUTED=GROSSPAY+UNIFORM+MEDICARE+VALICOST+VAHBCOST+VAFICA+VARETIRE+TSP+ANNUITY
- DO DECIMAL
- +18 SET $PIECE(^PRST(459,PPIEN,"P",IEN,8),U,1)=COMPUTED
- SET $PIECE(^PRSPC(IEN,"PAY"),U,10)=COMPUTED
- +19 ;annual leave used
- +20 SET COMPUTED=$SELECT(SUBACCT=81!(SUBACCT=71)!(PAYPLAN="Y"):ALUSED*8,1:ALUSED)
- DO DECIMAL
- +21 SET $PIECE(^PRST(459,PPIEN,"P",IEN,4),U,7)=COMPUTED
- SET $PIECE(^PRSPC(IEN,"ANNUAL"),U,14)=COMPUTED
- +22 ;sick leave used
- +23 SET COMPUTED=$SELECT(SUBACCT=81!(SUBACCT=71)!(PAYPLAN="Y"):SLUSED*8,1:SLUSED)
- DO DECIMAL
- +24 SET $PIECE(^PRST(459,PPIEN,"P",IEN,4),U,8)=COMPUTED
- SET $PIECE(^PRSPC(IEN,"SICK"),U,8)=COMPUTED
- +25 IF $DATA(^PRSPC(IEN,"BOND1"))
- IF $PIECE(^PRSPC(IEN,"BOND1"),U,11)="Y"
- KILL ^PRSPC(IEN,"BOND1")
- +26 IF $DATA(^PRSPC(IEN,"BOND2"))
- IF $PIECE(^PRSPC(IEN,"BOND2"),U,10)="Y"
- KILL ^PRSPC(IEN,"BOND2")
- +27 IF $DATA(^PRSPC(IEN,"BOND3"))
- IF $PIECE(^PRSPC(IEN,"BOND3"),U,10)="Y"
- KILL ^PRSPC(IEN,"BOND3")
- +28 IF $DATA(^PRSPC(IEN,"BOND4"))
- IF $PIECE(^PRSPC(IEN,"BOND4"),U,10)="Y"
- KILL ^PRSPC(IEN,"BOND4")
- KILL1 KILL ALUSED,ANNUITY,AWARDS,BASEPAY,COMPUTED,FOUR,FIVE,GROSSPAY,HOLPAY,LIVING,LUMPSUM,MDDDPAY,MEDICARE,MOVING,ONCALL,ONE,OTPAY
- +1 KILL PAYPLAN,SATPAY,SESAWARD,SEVPAY,SIX,SLUSED,STANDPAY,SUBACCT,SUNPAY,THREE,TSP,TWO,UNIFORM,VAFICA,VAHBCOST,VALICOST,VARETIRE,ZERO
- +2 QUIT
- DECIMAL ;check decimal digits
- +1 if COMPUTED'["."
- SET COMPUTED=COMPUTED_"."
- +2 if $LENGTH($PIECE(COMPUTED,".",1))=0
- SET COMPUTED="0"_COMPUTED
- +3 if $LENGTH($PIECE(COMPUTED,".",2))=0
- SET COMPUTED=COMPUTED_"00"
- +4 if $LENGTH($PIECE(COMPUTED,".",2))=1
- SET COMPUTED=COMPUTED_"0"
- +5 QUIT
- FTE ;FTE computation
- +1 SET FTEE=DATA
- SET DB=$PIECE(^PRSPC(IEN,0),U,10)
- SET NH8B=$PIECE(^PRSPC(IEN,0),U,16)
- Begin DoDot:1
- +2 IF DB=1
- IF FTEE=0
- SET $PIECE(^PRSPC(IEN,"MISC4"),U,11)=1
- QUIT
- +3 IF DB=1
- IF FTEE>0
- SET $PIECE(^PRSPC(IEN,"MISC4"),U,11)="."_FTEE
- QUIT
- +4 IF DB=2
- IF NH8B=1
- SET $PIECE(^PRSPC(IEN,"MISC4"),U,11)=0
- QUIT
- +5 IF DB=2
- SET FTEE=$FNUMBER(NH8B/80,"",2)
- SET $PIECE(^PRSPC(IEN,"MISC4"),U,11)=+FTEE
- QUIT
- +6 IF DB=3
- IF FTEE=0
- SET $PIECE(^PRSPC(IEN,"MISC4"),U,11)=0
- QUIT
- +7 IF DB=3
- IF FTEE>0
- SET $PIECE(^PRSPC(IEN,"MISC4"),U,11)="."_FTEE
- End DoDot:1
- +8 SET NODE=""
- +9 KILL DB,FTEE,NH8B
- QUIT
- BONDS ;Savings Bond Balance computation
- +1 IF $DATA(^PRSPC(IEN,"BOND1"))
- SET $PIECE(^PRSPC(IEN,"BOND1"),U,9)=""
- IF $PIECE(RCD,":",8)=""
- Begin DoDot:1
- +2 SET SBBAL=$PIECE(^PRSPC(IEN,"BOND1"),U,5)
- +3 SET SBEPP=$PIECE(^PRSPC(IEN,"BOND1"),U,10)
- +4 SET SBDEM=$PIECE(^PRSPC(IEN,"BOND1"),U,11)
- +5 SET SBDEM=$SELECT(SBDEM=4:50,SBDEM=8:100,SBDEM="B":250,SBDEM="D":500,SBDEM="F":2500,1:0)
- +6 IF SBEPP+SBBAL=SBDEM
- SET $PIECE(^PRSPC(IEN,"BOND1"),U,5)=""
- End DoDot:1
- +7 IF $DATA(^PRSPC(IEN,"BOND2"))
- SET $PIECE(^PRSPC(IEN,"BOND2"),U,8)=""
- IF $PIECE(RCD,":",9)=""
- Begin DoDot:1
- +8 SET SBBAL=$PIECE(^PRSPC(IEN,"BOND2"),U,4)
- +9 SET SBEPP=$PIECE(^PRSPC(IEN,"BOND2"),U,9)
- +10 SET SBDEM=$PIECE(^PRSPC(IEN,"BOND2"),U,10)
- +11 SET SBDEM=$SELECT(SBDEM=4:50,SBDEM=8:100,SBDEM="B":250,SBDEM="D":500,SBDEM="F":2500,1:0)
- +12 IF SBEPP+SBBAL=SBDEM
- SET $PIECE(^PRSPC(IEN,"BOND2"),U,4)=""
- End DoDot:1
- +13 IF $DATA(^PRSPC(IEN,"BOND3"))
- SET $PIECE(^PRSPC(IEN,"BOND3"),U,8)=""
- IF $PIECE(RCD,":",9)=""
- Begin DoDot:1
- +14 SET SBBAL=$PIECE(^PRSPC(IEN,"BOND3"),U,4)
- +15 SET SBEPP=$PIECE(^PRSPC(IEN,"BOND3"),U,9)
- +16 SET SBDEM=$PIECE(^PRSPC(IEN,"BOND3"),U,10)
- +17 SET SBDEM=$SELECT(SBDEM=4:50,SBDEM=8:100,SBDEM="B":250,SBDEM="D":500,SBDEM="F":2500,1:0)
- +18 IF SBEPP+SBBAL=SBDEM
- SET $PIECE(^PRSPC(IEN,"BOND3"),U,4)=""
- End DoDot:1
- +19 IF $DATA(^PRSPC(IEN,"BOND4"))
- SET $PIECE(^PRSPC(IEN,"BOND4"),U,8)=""
- IF $PIECE(RCD,":",9)=""
- Begin DoDot:1
- +20 SET SBBAL=$PIECE(^PRSPC(IEN,"BOND4"),U,4)
- +21 SET SBEPP=$PIECE(^PRSPC(IEN,"BOND4"),U,9)
- +22 SET SBDEM=$PIECE(^PRSPC(IEN,"BOND4"),U,10)
- +23 SET SBDEM=$SELECT(SBDEM=4:50,SBDEM=8:100,SBDEM="B":250,SBDEM="D":500,SBDEM="F":2500,1:0)
- +24 IF SBEPP+SBBAL=SBDEM
- SET $PIECE(^PRSPC(IEN,"BOND4"),U,4)=""
- End DoDot:1
- +25 KILL SBBAL,SBEPP,SBDEM
- QUIT