AFSLACHT ;IHS/OIRM/DSD/JLG - WRITE TO TRAVEL-ACH FORMAT FILE; [ 09/26/2005 12:53 PM ]
;;3.0t1;1166 APPROVALS FOR PAYMENT;**19**;AUG 31, 2005
;Original JDM
;Part 2 - Gen. Treasury ECS/ACH-format file from Unix Treasury Tape-format file.
FRD ;EP
;****** Open & rd tape file & send to ascii formatted file ******
;
;Var AFSLFY is being stuffed into a field that is being changed from
;a 2 digit to a 4 digit FY. The var is not being manipulated in this
;routine so no change required here.
;
S (AFSLRCT,AFSLSAMT)=0
S AFSLZROS="000000000000"
S AFSLSPAC=" "
F I=1:1:10 S AFSLASY(I)=" ",AFSLSAM(I)="000000000000"
OPENFLS S %FN=AFSEXFN
S %IN=1
S (AFSLBFL1,AFSLBFL2,AFSLBFL3,AFSLBFL4,AFSLBFL5,AFSLGFLG)=0
S (AFSLXA,AFSLXC,AFSLXX,AFSLTMXX)=""
D OPENHFS^AFSLCK1
I $D(AFSERMSG) D ERROR^AFSLCK1 G FINI
I $D(AFSJFLG) G FINI
S AFSLTDEV=%DEV K %DEV
READTFL ;rd tp fle
U AFSLTDEV R X:DTIME I X=""!($A(X)=-1)!($E(X,1,3))="C01" G FINI
ITEM ;process pmt data
I $E(X,1,3)="C01" G FINI
I $E(X,1,3)="&01" D G:$D(AFSJFLG) FINI G:$D(AFSLMFLG) FINI G READTFL
.S AFSLSCHD=$E(X,4,13)
.S AFSLALC=$E(X,27,34)
.S AFSLAID=$P(^AFSLPRM(1,2),U,8)
.S AFSLRECN="000000"
.S AFSLRFC=$P(^AFSLPRM(1,2),U,3)
.D ALCC
I $E(X,1,3)="A01"&($E(X,4,13)=AFSLSCHD) D G READTFL
.S AFSLANAM=$E(X,72,80)
I $E(X,1,3)="A01"&($E(X,4,13)'=AFSLSCHD) D G READTFL
.S AFSLANAM=AFSLANAM_$E(X,4,19)
.S AFSLADR1=$E(X,20,44)
.S AFSLADR2=$E(X,45,69)
.D BLCC
I $E(X,1,3)="B01"&($E(X,47)="B") D G READTFL
.S AFSLRCT=AFSLRCT+1
.S AFSLENCD=$E(X,14)
.S AFSLTSSN=$E(X,15,23)
.S AFSLTAMT=$E(X,27,36)
.S AFSLSAMT=AFSLSAMT+AFSLTAMT
.S AFSLTNAM=$E(X,48,80)
.S AFSLBFL1=1
I $E(X,1,3)="B01"&(AFSLBFL1=1) D G READTFL
.S AFSLBFL1=0
.S AFSLADD1=$E(X,4,38)
.S AFSLBFL2=1
I $E(X,1,3)="B01"&(AFSLBFL2=1) D G READTFL
.S AFSLBFL2=0
.S AFSLADD2=$E(X,4,38)
.S AFSLADD3=$E(X,39,68)
.S AFSLBFL3=1
I $E(X,1,3)="B01"&(AFSLBFL3=1) D G READTFL
.S AFSLBFL3=0
.S AFSLADD4=$E(X,4,33)
.S AFSLPTYP="A"
.S AFSLACSY=$E(X,34,49)
.S AFSLBFL4=1
I $E(X,1,3)="B01"&(AFSLBFL4=1) D G READTFL
.S AFSLBFL4=0
.S AFSLPCNT=$E(X,5,6)
.S AFSLBFL5=1
.K AFSLPREC
.D READLP
G READTFL
Q
READLP ;rd 1-14 pd-for rcds & create AFSLPREC(1-14)
F J=1:1:AFSLPCNT D
.U AFSLTDEV R X:DTIME
.U AFSLSDEV G:X=""!($A(X)=-1)!(AFSLGFLG=1) FINI D:AFSLXFLG'=1 SETPREC
D PMTREC
Q
SETPREC ;set AFSLPREC(J)
S AFSLPREC(J)=$E(X,4,58)
Q
ALCC ;********Create Transmission Hdr Rcd & ALC Ctl rcd*********
D SHDR^AFSLACH2 Q:$D(AFSLMFLG)
S AFSLAID=AFSLAID_$E(" ",1,10-$L(AFSLAID))
I AFSLXFLG=3 S AFSLPNOT="P"
I '$D(AFSLPNOT) S AFSLPNOT=" "
S AFSLPNOT=" "
S AFSLALCC="02"_"000001"_AFSLSCHD_" "_" "_AFSLALC_" "_"&"_AFSLPNOT_$E(AFSLB50,2,50)_AFSLB50_AFSLB50_AFSLB50_AFSLB50_AFSLB50_AFSLB50_$E(AFSLB50,1,35)
D WRTALCC
Q
BLCC ;******** Create Agcy Billing Addr Ctl Rcd ********
S AFSLBLCC="03"_"000002"_AFSLSCHD_" "_"0000000000000"_" "_"A"_AFSLANAM_AFSLADR1_AFSLADR2_$E(AFSLB50,1,25)_" "_AFSLB50_AFSLB50_AFSLB50_AFSLB50_AFSLB50_$E(AFSLB50,1,25)
U AFSLKDEV W AFSLBLCC
U AFSLKDEV
Q
PMTREC ;***************** Create pmt rcd *****************
;AFSLENCD=Enclosure Code (2) or Acct. Type (C=Ckg, S=Svgs)..GET FROM 1166 AFP ACH-PERSON file
S AFSLTNAM=AFSLTNAM_$E($$SPACE^AFSLUTLM(35),1,35-$L(AFSLTNAM)),AFSLRECN=$E($$ZERO^AFSLUTLM(6),1,6-$L(AFSLRCT))_AFSLRCT
S AFSLTAMT=$E($$ZERO^AFSLUTLM(10),1,10-$L(AFSLTAMT))_AFSLTAMT
S AFSLAID=AFSLAID_$E(AFSLB50,1,10-$L(AFSLAID))
ASKSSN ;
S AFSLSKED=$E(AFSLSCHD,5,10) D ^AFSLSKLU
S AFSLNXPN=0
SKLOOP ;
I '$O(^AFSLAFP(AFSLYNOD,1,AFSLSFND,1,AFSLNXPN)) G SKEND
S AFSLNXPN=$O(^AFSLAFP(AFSLYNOD,1,AFSLSFND,1,AFSLNXPN))
S AFSLPNDX=$P(^AFSLAFP(AFSLYNOD,1,AFSLSFND,1,AFSLNXPN,0),U,24) ;THL
S AFSLPSSN=$P(^AFSLAFP(AFSLYNOD,1,AFSLSFND,1,AFSLNXPN,1),U,22)
S AFSLPAMT=$P(^AFSLAFP(AFSLYNOD,1,AFSLSFND,1,AFSLNXPN,0),U,11)
S AFSLPAMT=$P(AFSLPAMT,".",1)_$P(AFSLPAMT,".",2),AFSLPAMT=$E("00000000",1,8-$L(AFSLPAMT))_AFSLPAMT
I AFSLTSSN=AFSLPSSN&(AFSLPAMT=AFSLTAMT) S AFSLAPPN=$P(^AFSLAFP(AFSLYNOD,1,AFSLSFND,1,AFSLNXPN,1),U,21) G SKEND
G SKLOOP
SKEND ;
S AFSLAPPN=AFSLACSY
SKPSK ;
I AFSLTSSN="" K DIR S DIR(0)="F^9:9",DIR("A")="Enter Person SSN (i.e., 123456789)" U AFSLSDEV D ^DIR I X'?9N W !,"FOLLOW EXAMPLES GIVEN!",*7,! G ASKSSN
S AFSLPID=AFSLTSSN
S AFSLVND=AFSLPID U 0 S AFSLTMPL=1 D ^AFSLEMLU K AFSLTMPL
I AFSLPFND'="XX" S AFSLPNDX=AFSLPNOD
I '$D(^ACRAU(AFSLPNDX,19)) S AFSLIDN="" D ASKACH
I $D(AFSLQFLG) S AFSLRFLG=1 K AFSLQFLG Q
S AFSLIDN=AFSLPNDX
S AFSLENCD=$P(^ACRAU(AFSLIDN,19),U,1),AFSLRTN=$P(^ACRAU(AFSLIDN,19),U,2),AFSLDAN=$P(^ACRAU(AFSLIDN,19),U,3)
S AFSLRTN=AFSLRTN_$E("000000000",1,9-$L(AFSLRTN))
S AFSLDAN=AFSLDAN_$E(" ",1,17-$L(AFSLDAN))
S AFSLTSSN=AFSLTSSN_$E(AFSLB50,1,16-$L(AFSLTSSN))
S AFSLPYID=$E(AFSLTSSN,1,9)
S AFSLPYNM=$E(AFSLTNAM,1,22)
D GETPIDL
I '$D(AFSLPIDL) S AFSLPIDL=""
S AFSLPIDL=AFSLPIDL_$E(AFSLB80,1,80-$L(AFSLPIDL))
WRTPMT ;
S AFSLALCP="04"_AFSLRECN_AFSLSCHD_" "_AFSLENCD_AFSLPYID_" "_"00000000000"
S AFSLAPPN=AFSLAPPN_$E(" ",1,16-$L(AFSLAPPN))
S AFSLALCP=AFSLALCP_AFSLTAMT_"B"_AFSLPYNM_" "_AFSLRTN_AFSLDAN_AFSLB50_AFSLB50_" "_" "_AFSLAPPN_AFSLB50_AFSLPIDL
S AFSLPCNT=$E("00",1,2-$L(AFSLPCNT))_AFSLPCNT
S AFSLSYMT=AFSLSYMT+AFSLTAMT
I '$D(AFSLTOT(AFSLAPPN)) S AFSLTOT(AFSLAPPN)=0
S AFSLTOT(AFSLAPPN)=AFSLTOT(AFSLAPPN)+AFSLTAMT
S AFSLASY(1)=AFSLAPPN,AFSLSAM(1)=$E("000000000000",1,12-$L(AFSLSYMT))_AFSLSYMT
U AFSLKDEV W AFSLALCP
PIDLINE ;
U AFSLKDEV W AFSLB50_$E(AFSLB50,1,27)
Q
WRTALCC ;write alc ctl rcd
S %FN="/usr/spool/afsdata/"_AFSLNXDK_"-"_AFSLMMDD,%IN=0
I '$D(^AFSLPRM(1,3)) G SKPPRM
I $P(^AFSLPRM(1,3),U,1)'="" S %FN=$P(^AFSLPRM(1,3),U,1)_"/"_AFSLNXDK_"-"_AFSLMMDD
SKPPRM ;
D OPENHFS^AFSLCK1
I $D(AFSERMSG) U AFSLSDEV W !,AFSERMSG
I Y>0 U AFSLSDEV W !,"UNABLE TO OPEN DISKETTE FILE FOR WRITE!"
I Y=1 U AFSLSDEV W !,"No HFS Device available...",! R !,"PRESS <RETURN>",AFSLRTNX:300
I Y=2 U AFSLSDEV W !,"Trying to open a new file for read (R) mode...",!
I Y=3 U AFSLSDEV W !,"Passed fls by ref...",!
I Y=4 U AFSLSDEV W !,"Invalid fi length...",!
I Y>0 S AFSJFLG=1 Q
S AFSLKDEV=%DEV K %DEV
U AFSLKDEV W AFSLSHDR,AFSLALCC
U AFSLSDEV
Q
WRTPRX ;
U AFSLKDEV W AFSLRCTY_AFSLRECN_AFSLSCHD_" "
Q
WRTSCR ;write alc schd ctl rcd
S %H=$H
D YX^%DTC
S AFSLNOW=X_$E(%,1,5)
S AFSLMMDD=$E(X,4,7)
S AFSLSICT=$E($$ZERO^AFSLUTLM(7),1,7-$L(AFSLRCT))_AFSLRCT
S AFSLSAMT=$E($$ZERO^AFSLUTLM(12),1,12-$L(AFSLSAMT))_AFSLSAMT
S AFSLRECN=AFSLRECN+1
S AFSLRECN=$E($$ZERO^AFSLUTLM(6),1,6-$L(AFSLRECN))_AFSLRECN
S AFSLSCR="09"_AFSLRECN_AFSLSCHD_" "_"9999999999999"_AFSLSICT_AFSLSAMT_"C"
S AFSLNXAN="",AFSLACT=0
I '$D(AFSLTOT(AFSLENCD)) S AFSLTOT(AFSLENCD)=0
NXAPN ;
I AFSLACT=10 G QNXAPN
I '$O(AFSLTOT(AFSLNXAN)) D G NXAPN
.S AFSLSCR=AFSLSCR_" 000000000000"
.S AFSLACT=AFSLACT+1
S AFSLNXAN=$O(AFSLTOT(AFSLNXAN))
I AFSLTOT(AFSLNXAN)="" S AFSLTOT(AFSLNXAN)=0
S AFSLTOT(AFSLNXAN)=$E("000000000000",1,12-$L(AFSLTOT(AFSLNXAN)))_AFSLTOT(AFSLNXAN)
S AFSLSCR=AFSLSCR_AFSLNXAN_AFSLTOT(AFSLNXAN)
S AFSLACT=AFSLACT+1
G NXAPN
QNXAPN ;
U AFSLKDEV W AFSLSCR
F M=1:1:105 U AFSLKDEV W " "
S AFSLNXTD=AFSLNXDK_"-"_AFSLMMDD
S X=AFSLNOW
S DIC="^AFSLDKGL("
S DIC(0)="ML"
U AFSLSDEV
D ^DIC
S DIE="^AFSLDKGL(",DA=$P(Y,U,1)
S DR="1///^S X=AFSLFY" D ^DIE ;This field being changed to 4 digits
S DR="2///^S X=AFSLSCHD" D ^DIE
S DR="3///^S X=AFSLEXFN" D ^DIE
S DR="4///^S X=AFSLNXTD" D ^DIE
S DR="5///^S X=AFSLRCT" D ^DIE
S DR="6///^S X=AFSLSAMT" D ^DIE
Q
FINI ;
I $E(X,1,3)="C01"&('$D(AFSJFLG)) D WRTSCR,WRTSTRL^AFSLACH2
I '$D(AFSLTDEV) G FINI2
S IO=AFSLTDEV D ^%ZISC
FINI2 ;
I '$D(AFSLKDEV) G FINI3
S IO=AFSLKDEV D ^%ZISC
FINI3 ;
I $D(%DEV) S IO=%DEV D ^%ZISC
Q
W AFSLSYMT
W AFSLSYMT
ASKACH ;
I '$O(^VA(200,"SSN",AFSLTSSN,0)) D Q
.U AFSLSDEV W !,"Can't find person: ",AFSLTNAM," in PERSON File anymore,",!,"or SSN/INFO been changed or person has been deleted!",!,"SKIPPING PAYMENT. "
.S AFSLQFLG=1
S AFSLNXVX=0
S AFSLVCT=0
NXVNLP ;
I '$O(^VA(200,"SSN",AFSLTSSN,AFSLNXVX)) G EXITLP
S AFSLNXVX=$O(^VA(200,"SSN",AFSLTSSN,AFSLNXVX))
S AFSLVCT=AFSLVCT+1
G NXVNLP
EXITLP ;
I AFSLVCT>1 G SSNDUPS
S AFSLTNOD=$O(^VA(200,"SSN",AFSLTSSN,0))
;S X=$P(^VA(200,AFSLTNOD,0),U,1) ;ACR*2.1*19.02 IM16848
S X=$$NAME2^ACRFUTL1(AFSLTNOD) ;ACR*2.1*19.02 IM16848
U AFSLSDEV W !,"Person: ",$E(AFSLTNAM,1,22)," doesn't yet have needed ACH information.",!,"PLEASE ENTER ALL REQUESTED INFO NOW...",!!
H 5
Q
SSNDUPS ;
U AFSLSDEV W !!,"NAME: ",AFSLTNAM,!,"SSN: ",AFSLTSSN,!
W !,"There is more than one person in PERSON file with this person's SSN."
W !,"So, I need you to select the one to get information from.",!!
S X=$E(AFSLTSSN,1,10)
S DIC="^VA(200,"
S DIC(0)="QM"
D ^DIC
R !,"PRESS RETURN",AFSLRTNX:300
Q
GETPIDX ;GET CORRECT ADDENDUM (PAYMENT IDENT INFO) FM PAYMENT
;
GETPIDL ;GET CORRECT ADDENDUM (PAYMENT IDENT INFO) FM PAYMENT
S AFSLPIDX=AFSLPREC(1)
I $E(AFSLPIDX,4)'="*" D FINDAST
S AFSLPIDL=$E(AFSLPIDX,1,80)
S AFSLPIDL=AFSLPIDL_$E(AFSLB80,1,80-$L(AFSLPIDL))
Q
FINDAST ;
F K=1:1:79 I $E(AFSLPIDX,K)="*" S AFSLASTX=K Q
I AFSLASTX=80 Q
I AFSLASTX'>4 Q
S AFSLASTZ=AFSLASTX-3
S AFSLPIDX=$E(AFSLPIDX,AFSLASTZ,80)
Q
AFSLACHT ;IHS/OIRM/DSD/JLG - WRITE TO TRAVEL-ACH FORMAT FILE; [ 09/26/2005 12:53 PM ]
+1 ;;3.0t1;1166 APPROVALS FOR PAYMENT;**19**;AUG 31, 2005
+2 ;Original JDM
+3 ;Part 2 - Gen. Treasury ECS/ACH-format file from Unix Treasury Tape-format file.
FRD ;EP
+1 ;****** Open & rd tape file & send to ascii formatted file ******
+2 ;
+3 ;Var AFSLFY is being stuffed into a field that is being changed from
+4 ;a 2 digit to a 4 digit FY. The var is not being manipulated in this
+5 ;routine so no change required here.
+6 ;
+7 SET (AFSLRCT,AFSLSAMT)=0
+8 SET AFSLZROS="000000000000"
+9 SET AFSLSPAC=" "
+10 FOR I=1:1:10
SET AFSLASY(I)=" "
SET AFSLSAM(I)="000000000000"
OPENFLS SET %FN=AFSEXFN
+1 SET %IN=1
+2 SET (AFSLBFL1,AFSLBFL2,AFSLBFL3,AFSLBFL4,AFSLBFL5,AFSLGFLG)=0
+3 SET (AFSLXA,AFSLXC,AFSLXX,AFSLTMXX)=""
+4 DO OPENHFS^AFSLCK1
+5 IF $DATA(AFSERMSG)
DO ERROR^AFSLCK1
GOTO FINI
+6 IF $DATA(AFSJFLG)
GOTO FINI
+7 SET AFSLTDEV=%DEV
KILL %DEV
READTFL ;rd tp fle
+1 USE AFSLTDEV
READ X:DTIME
IF X=""!($ASCII(X)=-1)!($EXTRACT(X,1,3))="C01"
GOTO FINI
ITEM ;process pmt data
+1 IF $EXTRACT(X,1,3)="C01"
GOTO FINI
+2 IF $EXTRACT(X,1,3)="&01"
Begin DoDot:1
+3 SET AFSLSCHD=$EXTRACT(X,4,13)
+4 SET AFSLALC=$EXTRACT(X,27,34)
+5 SET AFSLAID=$PIECE(^AFSLPRM(1,2),U,8)
+6 SET AFSLRECN="000000"
+7 SET AFSLRFC=$PIECE(^AFSLPRM(1,2),U,3)
+8 DO ALCC
End DoDot:1
IF $DATA(AFSJFLG)
GOTO FINI
IF $DATA(AFSLMFLG)
GOTO FINI
GOTO READTFL
+9 IF $EXTRACT(X,1,3)="A01"&($EXTRACT(X,4,13)=AFSLSCHD)
Begin DoDot:1
+10 SET AFSLANAM=$EXTRACT(X,72,80)
End DoDot:1
GOTO READTFL
+11 IF $EXTRACT(X,1,3)="A01"&($EXTRACT(X,4,13)'=AFSLSCHD)
Begin DoDot:1
+12 SET AFSLANAM=AFSLANAM_$EXTRACT(X,4,19)
+13 SET AFSLADR1=$EXTRACT(X,20,44)
+14 SET AFSLADR2=$EXTRACT(X,45,69)
+15 DO BLCC
End DoDot:1
GOTO READTFL
+16 IF $EXTRACT(X,1,3)="B01"&($EXTRACT(X,47)="B")
Begin DoDot:1
+17 SET AFSLRCT=AFSLRCT+1
+18 SET AFSLENCD=$EXTRACT(X,14)
+19 SET AFSLTSSN=$EXTRACT(X,15,23)
+20 SET AFSLTAMT=$EXTRACT(X,27,36)
+21 SET AFSLSAMT=AFSLSAMT+AFSLTAMT
+22 SET AFSLTNAM=$EXTRACT(X,48,80)
+23 SET AFSLBFL1=1
End DoDot:1
GOTO READTFL
+24 IF $EXTRACT(X,1,3)="B01"&(AFSLBFL1=1)
Begin DoDot:1
+25 SET AFSLBFL1=0
+26 SET AFSLADD1=$EXTRACT(X,4,38)
+27 SET AFSLBFL2=1
End DoDot:1
GOTO READTFL
+28 IF $EXTRACT(X,1,3)="B01"&(AFSLBFL2=1)
Begin DoDot:1
+29 SET AFSLBFL2=0
+30 SET AFSLADD2=$EXTRACT(X,4,38)
+31 SET AFSLADD3=$EXTRACT(X,39,68)
+32 SET AFSLBFL3=1
End DoDot:1
GOTO READTFL
+33 IF $EXTRACT(X,1,3)="B01"&(AFSLBFL3=1)
Begin DoDot:1
+34 SET AFSLBFL3=0
+35 SET AFSLADD4=$EXTRACT(X,4,33)
+36 SET AFSLPTYP="A"
+37 SET AFSLACSY=$EXTRACT(X,34,49)
+38 SET AFSLBFL4=1
End DoDot:1
GOTO READTFL
+39 IF $EXTRACT(X,1,3)="B01"&(AFSLBFL4=1)
Begin DoDot:1
+40 SET AFSLBFL4=0
+41 SET AFSLPCNT=$EXTRACT(X,5,6)
+42 SET AFSLBFL5=1
+43 KILL AFSLPREC
+44 DO READLP
End DoDot:1
GOTO READTFL
+45 GOTO READTFL
+46 QUIT
READLP ;rd 1-14 pd-for rcds & create AFSLPREC(1-14)
+1 FOR J=1:1:AFSLPCNT
Begin DoDot:1
+2 USE AFSLTDEV
READ X:DTIME
+3 USE AFSLSDEV
IF X=""!($ASCII(X)=-1)!(AFSLGFLG=1)
GOTO FINI
IF AFSLXFLG'=1
DO SETPREC
End DoDot:1
+4 DO PMTREC
+5 QUIT
SETPREC ;set AFSLPREC(J)
+1 SET AFSLPREC(J)=$EXTRACT(X,4,58)
+2 QUIT
ALCC ;********Create Transmission Hdr Rcd & ALC Ctl rcd*********
+1 DO SHDR^AFSLACH2
IF $DATA(AFSLMFLG)
QUIT
+2 SET AFSLAID=AFSLAID_$EXTRACT(" ",1,10-$LENGTH(AFSLAID))
+3 IF AFSLXFLG=3
SET AFSLPNOT="P"
+4 IF '$DATA(AFSLPNOT)
SET AFSLPNOT=" "
+5 SET AFSLPNOT=" "
+6 SET AFSLALCC="02"_"000001"_AFSLSCHD_" "_" "_AFSLALC_" "_"&"_AFSLPNOT_$EXTRACT(AFSLB50,2,50)_AFSLB50_AFSLB50_AFSLB50_AFSLB50_AFSLB50_AFSLB50_$EXTRACT(AFSLB50,1,35)
+7 DO WRTALCC
+8 QUIT
BLCC ;******** Create Agcy Billing Addr Ctl Rcd ********
+1 SET AFSLBLCC="03"_"000002"_AFSLSCHD_" "_"0000000000000"_" "_"A"_AFSLANAM_AFSLADR1_AFSLADR2_$EXTRACT(AFSLB50,1,25)_" "_AFSLB50_AFSLB50_AFSLB50_AFSLB50_AFSLB50_$EXTRACT(AFSLB50,1,25)
+2 USE AFSLKDEV
WRITE AFSLBLCC
+3 USE AFSLKDEV
+4 QUIT
PMTREC ;***************** Create pmt rcd *****************
+1 ;AFSLENCD=Enclosure Code (2) or Acct. Type (C=Ckg, S=Svgs)..GET FROM 1166 AFP ACH-PERSON file
+2 SET AFSLTNAM=AFSLTNAM_$EXTRACT($$SPACE^AFSLUTLM(35),1,35-$LENGTH(AFSLTNAM))
SET AFSLRECN=$EXTRACT($$ZERO^AFSLUTLM(6),1,6-$LENGTH(AFSLRCT))_AFSLRCT
+3 SET AFSLTAMT=$EXTRACT($$ZERO^AFSLUTLM(10),1,10-$LENGTH(AFSLTAMT))_AFSLTAMT
+4 SET AFSLAID=AFSLAID_$EXTRACT(AFSLB50,1,10-$LENGTH(AFSLAID))
ASKSSN ;
+1 SET AFSLSKED=$EXTRACT(AFSLSCHD,5,10)
DO ^AFSLSKLU
+2 SET AFSLNXPN=0
SKLOOP ;
+1 IF '$ORDER(^AFSLAFP(AFSLYNOD,1,AFSLSFND,1,AFSLNXPN))
GOTO SKEND
+2 SET AFSLNXPN=$ORDER(^AFSLAFP(AFSLYNOD,1,AFSLSFND,1,AFSLNXPN))
+3 ;THL
SET AFSLPNDX=$PIECE(^AFSLAFP(AFSLYNOD,1,AFSLSFND,1,AFSLNXPN,0),U,24)
+4 SET AFSLPSSN=$PIECE(^AFSLAFP(AFSLYNOD,1,AFSLSFND,1,AFSLNXPN,1),U,22)
+5 SET AFSLPAMT=$PIECE(^AFSLAFP(AFSLYNOD,1,AFSLSFND,1,AFSLNXPN,0),U,11)
+6 SET AFSLPAMT=$PIECE(AFSLPAMT,".",1)_$PIECE(AFSLPAMT,".",2)
SET AFSLPAMT=$EXTRACT("00000000",1,8-$LENGTH(AFSLPAMT))_AFSLPAMT
+7 IF AFSLTSSN=AFSLPSSN&(AFSLPAMT=AFSLTAMT)
SET AFSLAPPN=$PIECE(^AFSLAFP(AFSLYNOD,1,AFSLSFND,1,AFSLNXPN,1),U,21)
GOTO SKEND
+8 GOTO SKLOOP
SKEND ;
+1 SET AFSLAPPN=AFSLACSY
SKPSK ;
+1 IF AFSLTSSN=""
KILL DIR
SET DIR(0)="F^9:9"
SET DIR("A")="Enter Person SSN (i.e., 123456789)"
USE AFSLSDEV
DO ^DIR
IF X'?9N
WRITE !,"FOLLOW EXAMPLES GIVEN!",*7,!
GOTO ASKSSN
+2 SET AFSLPID=AFSLTSSN
+3 SET AFSLVND=AFSLPID
USE 0
SET AFSLTMPL=1
DO ^AFSLEMLU
KILL AFSLTMPL
+4 IF AFSLPFND'="XX"
SET AFSLPNDX=AFSLPNOD
+5 IF '$DATA(^ACRAU(AFSLPNDX,19))
SET AFSLIDN=""
DO ASKACH
+6 IF $DATA(AFSLQFLG)
SET AFSLRFLG=1
KILL AFSLQFLG
QUIT
+7 SET AFSLIDN=AFSLPNDX
+8 SET AFSLENCD=$PIECE(^ACRAU(AFSLIDN,19),U,1)
SET AFSLRTN=$PIECE(^ACRAU(AFSLIDN,19),U,2)
SET AFSLDAN=$PIECE(^ACRAU(AFSLIDN,19),U,3)
+9 SET AFSLRTN=AFSLRTN_$EXTRACT("000000000",1,9-$LENGTH(AFSLRTN))
+10 SET AFSLDAN=AFSLDAN_$EXTRACT(" ",1,17-$LENGTH(AFSLDAN))
+11 SET AFSLTSSN=AFSLTSSN_$EXTRACT(AFSLB50,1,16-$LENGTH(AFSLTSSN))
+12 SET AFSLPYID=$EXTRACT(AFSLTSSN,1,9)
+13 SET AFSLPYNM=$EXTRACT(AFSLTNAM,1,22)
+14 DO GETPIDL
+15 IF '$DATA(AFSLPIDL)
SET AFSLPIDL=""
+16 SET AFSLPIDL=AFSLPIDL_$EXTRACT(AFSLB80,1,80-$LENGTH(AFSLPIDL))
WRTPMT ;
+1 SET AFSLALCP="04"_AFSLRECN_AFSLSCHD_" "_AFSLENCD_AFSLPYID_" "_"00000000000"
+2 SET AFSLAPPN=AFSLAPPN_$EXTRACT(" ",1,16-$LENGTH(AFSLAPPN))
+3 SET AFSLALCP=AFSLALCP_AFSLTAMT_"B"_AFSLPYNM_" "_AFSLRTN_AFSLDAN_AFSLB50_AFSLB50_" "_" "_AFSLAPPN_AFSLB50_AFSLPIDL
+4 SET AFSLPCNT=$EXTRACT("00",1,2-$LENGTH(AFSLPCNT))_AFSLPCNT
+5 SET AFSLSYMT=AFSLSYMT+AFSLTAMT
+6 IF '$DATA(AFSLTOT(AFSLAPPN))
SET AFSLTOT(AFSLAPPN)=0
+7 SET AFSLTOT(AFSLAPPN)=AFSLTOT(AFSLAPPN)+AFSLTAMT
+8 SET AFSLASY(1)=AFSLAPPN
SET AFSLSAM(1)=$EXTRACT("000000000000",1,12-$LENGTH(AFSLSYMT))_AFSLSYMT
+9 USE AFSLKDEV
WRITE AFSLALCP
PIDLINE ;
+1 USE AFSLKDEV
WRITE AFSLB50_$EXTRACT(AFSLB50,1,27)
+2 QUIT
WRTALCC ;write alc ctl rcd
+1 SET %FN="/usr/spool/afsdata/"_AFSLNXDK_"-"_AFSLMMDD
SET %IN=0
+2 IF '$DATA(^AFSLPRM(1,3))
GOTO SKPPRM
+3 IF $PIECE(^AFSLPRM(1,3),U,1)'=""
SET %FN=$PIECE(^AFSLPRM(1,3),U,1)_"/"_AFSLNXDK_"-"_AFSLMMDD
SKPPRM ;
+1 DO OPENHFS^AFSLCK1
+2 IF $DATA(AFSERMSG)
USE AFSLSDEV
WRITE !,AFSERMSG
+3 IF Y>0
USE AFSLSDEV
WRITE !,"UNABLE TO OPEN DISKETTE FILE FOR WRITE!"
+4 IF Y=1
USE AFSLSDEV
WRITE !,"No HFS Device available...",!
READ !,"PRESS <RETURN>",AFSLRTNX:300
+5 IF Y=2
USE AFSLSDEV
WRITE !,"Trying to open a new file for read (R) mode...",!
+6 IF Y=3
USE AFSLSDEV
WRITE !,"Passed fls by ref...",!
+7 IF Y=4
USE AFSLSDEV
WRITE !,"Invalid fi length...",!
+8 IF Y>0
SET AFSJFLG=1
QUIT
+9 SET AFSLKDEV=%DEV
KILL %DEV
+10 USE AFSLKDEV
WRITE AFSLSHDR,AFSLALCC
+11 USE AFSLSDEV
+12 QUIT
WRTPRX ;
+1 USE AFSLKDEV
WRITE AFSLRCTY_AFSLRECN_AFSLSCHD_" "
+2 QUIT
WRTSCR ;write alc schd ctl rcd
+1 SET %H=$HOROLOG
+2 DO YX^%DTC
+3 SET AFSLNOW=X_$EXTRACT(%,1,5)
+4 SET AFSLMMDD=$EXTRACT(X,4,7)
+5 SET AFSLSICT=$EXTRACT($$ZERO^AFSLUTLM(7),1,7-$LENGTH(AFSLRCT))_AFSLRCT
+6 SET AFSLSAMT=$EXTRACT($$ZERO^AFSLUTLM(12),1,12-$LENGTH(AFSLSAMT))_AFSLSAMT
+7 SET AFSLRECN=AFSLRECN+1
+8 SET AFSLRECN=$EXTRACT($$ZERO^AFSLUTLM(6),1,6-$LENGTH(AFSLRECN))_AFSLRECN
+9 SET AFSLSCR="09"_AFSLRECN_AFSLSCHD_" "_"9999999999999"_AFSLSICT_AFSLSAMT_"C"
+10 SET AFSLNXAN=""
SET AFSLACT=0
+11 IF '$DATA(AFSLTOT(AFSLENCD))
SET AFSLTOT(AFSLENCD)=0
NXAPN ;
+1 IF AFSLACT=10
GOTO QNXAPN
+2 IF '$ORDER(AFSLTOT(AFSLNXAN))
Begin DoDot:1
+3 SET AFSLSCR=AFSLSCR_" 000000000000"
+4 SET AFSLACT=AFSLACT+1
End DoDot:1
GOTO NXAPN
+5 SET AFSLNXAN=$ORDER(AFSLTOT(AFSLNXAN))
+6 IF AFSLTOT(AFSLNXAN)=""
SET AFSLTOT(AFSLNXAN)=0
+7 SET AFSLTOT(AFSLNXAN)=$EXTRACT("000000000000",1,12-$LENGTH(AFSLTOT(AFSLNXAN)))_AFSLTOT(AFSLNXAN)
+8 SET AFSLSCR=AFSLSCR_AFSLNXAN_AFSLTOT(AFSLNXAN)
+9 SET AFSLACT=AFSLACT+1
+10 GOTO NXAPN
QNXAPN ;
+1 USE AFSLKDEV
WRITE AFSLSCR
+2 FOR M=1:1:105
USE AFSLKDEV
WRITE " "
+3 SET AFSLNXTD=AFSLNXDK_"-"_AFSLMMDD
+4 SET X=AFSLNOW
+5 SET DIC="^AFSLDKGL("
+6 SET DIC(0)="ML"
+7 USE AFSLSDEV
+8 DO ^DIC
+9 SET DIE="^AFSLDKGL("
SET DA=$PIECE(Y,U,1)
+10 ;This field being changed to 4 digits
SET DR="1///^S X=AFSLFY"
DO ^DIE
+11 SET DR="2///^S X=AFSLSCHD"
DO ^DIE
+12 SET DR="3///^S X=AFSLEXFN"
DO ^DIE
+13 SET DR="4///^S X=AFSLNXTD"
DO ^DIE
+14 SET DR="5///^S X=AFSLRCT"
DO ^DIE
+15 SET DR="6///^S X=AFSLSAMT"
DO ^DIE
+16 QUIT
FINI ;
+1 IF $EXTRACT(X,1,3)="C01"&('$DATA(AFSJFLG))
DO WRTSCR
DO WRTSTRL^AFSLACH2
+2 IF '$DATA(AFSLTDEV)
GOTO FINI2
+3 SET IO=AFSLTDEV
DO ^%ZISC
FINI2 ;
+1 IF '$DATA(AFSLKDEV)
GOTO FINI3
+2 SET IO=AFSLKDEV
DO ^%ZISC
FINI3 ;
+1 IF $DATA(%DEV)
SET IO=%DEV
DO ^%ZISC
+2 QUIT
+3 WRITE AFSLSYMT
+4 WRITE AFSLSYMT
ASKACH ;
+1 IF '$ORDER(^VA(200,"SSN",AFSLTSSN,0))
Begin DoDot:1
+2 USE AFSLSDEV
WRITE !,"Can't find person: ",AFSLTNAM," in PERSON File anymore,",!,"or SSN/INFO been changed or person has been deleted!",!,"SKIPPING PAYMENT. "
+3 SET AFSLQFLG=1
End DoDot:1
QUIT
+4 SET AFSLNXVX=0
+5 SET AFSLVCT=0
NXVNLP ;
+1 IF '$ORDER(^VA(200,"SSN",AFSLTSSN,AFSLNXVX))
GOTO EXITLP
+2 SET AFSLNXVX=$ORDER(^VA(200,"SSN",AFSLTSSN,AFSLNXVX))
+3 SET AFSLVCT=AFSLVCT+1
+4 GOTO NXVNLP
EXITLP ;
+1 IF AFSLVCT>1
GOTO SSNDUPS
+2 SET AFSLTNOD=$ORDER(^VA(200,"SSN",AFSLTSSN,0))
+3 ;S X=$P(^VA(200,AFSLTNOD,0),U,1) ;ACR*2.1*19.02 IM16848
+4 ;ACR*2.1*19.02 IM16848
SET X=$$NAME2^ACRFUTL1(AFSLTNOD)
+5 USE AFSLSDEV
WRITE !,"Person: ",$EXTRACT(AFSLTNAM,1,22)," doesn't yet have needed ACH information.",!,"PLEASE ENTER ALL REQUESTED INFO NOW...",!!
+6 HANG 5
+7 QUIT
SSNDUPS ;
+1 USE AFSLSDEV
WRITE !!,"NAME: ",AFSLTNAM,!,"SSN: ",AFSLTSSN,!
+2 WRITE !,"There is more than one person in PERSON file with this person's SSN."
+3 WRITE !,"So, I need you to select the one to get information from.",!!
+4 SET X=$EXTRACT(AFSLTSSN,1,10)
+5 SET DIC="^VA(200,"
+6 SET DIC(0)="QM"
+7 DO ^DIC
+8 READ !,"PRESS RETURN",AFSLRTNX:300
+9 QUIT
GETPIDX ;GET CORRECT ADDENDUM (PAYMENT IDENT INFO) FM PAYMENT
+1 ;
GETPIDL ;GET CORRECT ADDENDUM (PAYMENT IDENT INFO) FM PAYMENT
+1 SET AFSLPIDX=AFSLPREC(1)
+2 IF $EXTRACT(AFSLPIDX,4)'="*"
DO FINDAST
+3 SET AFSLPIDL=$EXTRACT(AFSLPIDX,1,80)
+4 SET AFSLPIDL=AFSLPIDL_$EXTRACT(AFSLB80,1,80-$LENGTH(AFSLPIDL))
+5 QUIT
FINDAST ;
+1 FOR K=1:1:79
IF $EXTRACT(AFSLPIDX,K)="*"
SET AFSLASTX=K
QUIT
+2 IF AFSLASTX=80
QUIT
+3 IF AFSLASTX'>4
QUIT
+4 SET AFSLASTZ=AFSLASTX-3
+5 SET AFSLPIDX=$EXTRACT(AFSLPIDX,AFSLASTZ,80)
+6 QUIT