0001 SETERR GENERROR
0010 REM 0 "RCPCQURY - Paymover Query Order"
0011 REM "Authors - R1 - JPS"
0015 REM 0 - (COPYRIGHT) 15-22
0016 REM  Standards 8.0
0019 REM  OPEN SYSTEMS (R) Accounting Software
0020 REM  Copyright (c)1982,1987,1989,1991,1992 Open Systems Holdings Corp.
0021 REM  All Rights Reserved
0022 REM  OPEN SYSTEMS is a registered trademark of Open Systems Holdings Corp.
0045 LET TITLE$=" "+STBL("MENUDESC")+" ",YDISABLE$="D",FLAG=2
0090 LET C8$=C1$,C9$=C2$,FID0$=FID(0),FID0$=FID0$+FILL(4-LEN(FID0$))
0095 LET REMOVE_LOCK=0,FIRSTTIME=1
0099 GOSUB PROMPTS
0100 REM "Open Files" 
0110 LET F0=10,F$="RCCT"+STBL("CID"),TASK=2; GOSUB GENOPEN; DIM RCCT$:TPL$
0180 LET F0=30,F$="RCPC"+STBL("CID"),TASK=2; GOSUB GENOPEN; DIM RCPC$:TPL$
0185 LET F0=31,F$="RCMI"+STBL("CID"),TASK=2; GOSUB GENOPEN; DIM RCMI$:TPL$
0200 CALL "RCPCTPL"
0210 READ RECORD(FILE[30],KEY="01",DOM=0211)RCPC$; GOTO 0220
0215 LET X9$="Credit Card information has not been setup",O7=1; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO QUIT
0220 IF CVS(RCPC.LOCK$,3)<>"" THEN LET X9$="Credit Card functions are disabled on Terminal "+CVS(RCPC.LOCK$,3),O7=1; GOSUB GENERROR; GOTO QUIT
0230 REM "----- Get Default Merchant ID"
0235 LET MID$=""
0240 READ (FILE[31],KNUM=1,KEY="Y",DOM=0241)
0245 LET TEMP$=KEY(FILE[31],ERR=0246); IF TEMP$(1,1)="Y" THEN LET MID$=TEMP$(2,3)
0250 READ (FILE[31],KNUM=0,ERR=0251)
0300 LET M1$="###,###,###.00-",M2$="#,##0-"
0420 DEF FNRESP$(XML1$)
0421 LET XX=POS(XML1$=RESP$); IF XX=0 THEN RETURN ""
0422 LET XX1=POS($0A$=RESP$(XX)); IF XX1=0 THEN RETURN ""
0424 LET XX1=XX1+XX
0426 RETURN RESP$(XX+LEN(XML1$)+1,XX1-XX-LEN(XML1$)-2)
0428 FNEND
0430 DEF FNC(X$)=INT(80/2-LEN(X$)/2)
0440 DEF FNADD!(data!,KEY$,VAL$)
0442 data!.add(FNPAIR!(KEY$,CVS(VAL$,3)))
0444 RETURN data!
0446 FNEND
0450 DEF FNPAIR!(key$,val$)
0452 return new BasicNameValuePair(KEY$,VAL$)
0454 FNEND
0460 DEF FNQUERY_DEBIT$(XXX$)
0462 IF XXX$="2" THEN RETURN "QUERY_REFUND" ELSE RETURN "QUERY_PURCHASE"
0464 FNEND
0480 DEF FNQUERY$(XXX$)
0482 IF XXX$="2" THEN RETURN "QUERY_CREDIT" ELSE RETURN "QUERY_PAYMENT"
0484 FNEND
0500 DEF FN_HTTP_POST!(URL$, ENTITY!)
0505 REM sends the data in entity! to url$ and returns another entity containing the response
0510 httpClient! = HttpClientBuilder.create().build()
0515 httpPost! = new HttpPost(CVS(URL$,3))
0520 httpPost!.setEntity(ENTITY!)
0525 response! = httpClient!.execute(httpPost!)
0530 responseEntity! = response!.getEntity()
0535 rem response!.close()
0540 return responseEntity!
0545 FNEND
0899 REM 0 - (ARFIL) 899-970
0900 XXTB: IOLIST T0$,T1,T1$,T2$,T3$,T4$,T2; REM "all application tables"
0902 OSCN: IOLIST CN0$,CN1$,CN2$,CN3$
0904 ARBTXXX: IOLIST BC0$,BC1$,BC2$,BC3$[ALL],BC4$,BC1,BC2,BC3
0906 ARCCXXX: IOLIST CC0$,CC1,CC2$,CC3$,CC4$,CCCFF$,CCCFV$
0908 ARCRXXX: IOLIST CR0$,CR1$,CR1[ALL],CR2$,CR3$,CR2[ALL],CR4$,CR5$,CR6$,CRCFF$,CRCFV$
0910 ARCTXXX: IOLIST CTKEY$,CTSEQ$,CTORD$,CTBAT$
0912 ARCUXXX: IOLIST C0$,C1$,C2$,C3$,C4$,C5$,C1[ALL],C2[ALL],C3,C4,C8$,C5[ALL],C6,C9$,C7,C6$,C7$,C10$[ALL],C11$,C12$,C8,CCFF$,CCFV$
0914 ARDCXXX: IOLIST DC0$,DC1$,DC2$,DCCFF$,DCCFV$
0916 ARDEXXX: IOLIST DKEY$,DDESC$
0918 ARFCXXX: IOLIST FC0$,FC1$,FC1[ALL],FCCFF$,FCCFV$
0920 ARGLXXX: IOLIST GL0$,GL1$,GL2$,GLCFF$,GLCFV$
0922 ARHDXXX: IOLIST HD0$,HD1$
0924 ARHIXXX: IOLIST H0$,H1$,H2$,H3$,H4$,H1,H2,H3,H4,H5,H6,H7,H8,H9,H0,H5$,H6$,H9[ALL],H7$,H10,H8$,HCFF$,HCFV$
0926 ARHSXXX: IOLIST HS0$,HS1[ALL],HS2[ALL],HS1$,HS2$,HSCFF$,HSCFV$
0928 ARINXXX: IOLIST N0$,N1$,N1[ALL],N2$,N3$,NCFF$,NCFV$
0930 ARLSXXX: IOLIST LS0$,LS1$,LS2$,LS3$,LS4$,LS1[ALL],LS5$,LS6$,LS7$,LSCFF$,LSCFV$
0932 ARPYXXX: IOLIST P0$,P1$,P1,P2$,P2[ALL],P3$,P3,P4,P4$,P5$,PCFF$,PCFV$
0934 ARSAXXX: IOLIST S0$,S1$,S2$,S3$,S4$,SCFF$,SCFV$
0936 ARSHXXX: IOLIST SH0$,SH1$,SH2$,SH3$,SH4$,SHCFF$,SHCFV$
0938 ARSRXXX: IOLIST SR0$,SR1$,SR2$,SR3$,SR4$,SR0[ALL],SR1[ALL],SR2[ALL],SR3,SR4[ALL],SR5$,SRCFF$,SRCFV$
0940 ARTCXXX: IOLIST TC0$,TC1$,TC2$,TC1[ALL],TCCFF$,TCCFV$
0942 ARTDXXX: IOLIST TD0$,TD0,TD1$,TD1[ALL],TD2$,TD3$,TD2[ALL],TD3,TD4$,TD4,TD5[ALL],TD5$,TD6$,TD7$,TD8$,TD6[ALL],TD9$,TDCFF$,TDCFV$
0944 ARTHXXX: IOLIST TH0$,TH0,TH1$,TH1[ALL],TH2$,TH3$,TH2[ALL],TH3,TH4$,TH4,TH5[ALL],TH5$,TH6$,TH7$,TH8$,TH9$,TH10$,TH11$,TH12$,TH6[ALL],THCFF$,THCFV$
0946 BRBAXXX: IOLIST BA0$,BA1$,BA2$,BA3$,BA1,BA2,BA3,BA4$,BA5$,BA6$,BACFF$,BACFV$
0948 GLMAXXX: IOLIST G0$,G1$,G0[1],G2$,G0[2],G3$,G0[3],G1[ALL],G2[ALL],G3[ALL],G4$,G5$,G4[ALL]
0950 ALTGLMAXXX: IOLIST G0$,G1$,G0; REM "GLMAx SHORT FORM FOR EDITING"
0952 JOHIXXX: IOLIST JH0$,JH1$,JHT$,JH2$,JH3$,JH4$,JH4[ALL],JH5$,JH5,JH6,JH7,JHCFF$,JHCFV$
0954 JOBSXXX: IOLIST B0$,B1$,B2$,B3$,B0[ALL],B4$,B5$,B1[ALL],B2[ALL],B6$,B3,B4,B7$,B5[ALL],B6[ALL],B7[ALL],B8[ALL],B8$,B9$,B10$,B11$,B12$,BCFF$,BCFV$;REM "JOBS FILE"
0956 RMCDXXX: IOLIST RCD0$,RCD1$,RCD1[ALL],RCDCFF$,RCDCFF$
0957 ARCMXXX: IOLIST CM0$,CM1$,CM2$,CM3$,CM4$,CM5$,CMCFF$,SMCFV$
0958 RMGCXXX: IOLIST GC0$,GC1$,GC2$,GC3$,GC4$,GC5$,GC6$,GC7$,GC8$[ALL],GC9$[ALL],GC10$[ALL],GC11$[ALL],GCCFF$,GCCFV$
1000 REM 1000 "DATA ENTRY CONTROL" 
1001 ABANDON:
1010 GOSUB CLEAR_GLOBAL; GOSUB DISABLE_FIELDS
1050 DIM N1$(10),N2$(3)
1055 LET N2$(1)=MID$
1060 LET YDISABLE$="D"
1080 GOSUB DATA
1090 PAGEUP:
1200 MID:
1210 LET X0=3,X1=17,X3=0,X4=3,X$=N2$,Y$="",WINDID$="ARRCMIW1",SELVAL$="",GUI_ID=4000
1215 IF CVS(X$,3)="" THEN LET X9=1
1220 GOSUB GENINPUT; REM "Merchant ID"
1225 IF Y$="U" THEN GOTO MID
1230 LET N2$=X$+FILL(X4-LEN(X$))
1235 IF N2$=FILL(X4) THEN GOTO 1210
1240 READ RECORD(FILE[31],KEY=N2$,DOM=1241)RCMI$; GOTO 1250
1245 LET X9$="Merchant ID not on file"; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO MID
1250 IF X0$="V" THEN IF POS(RCMI.GATEWAY$="3")=0 THEN LET X9$="Cannot Void - Must use Web Portal."; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO MID
1300 LET X0=5,X1=22,X3=0,X4=10,X$=N1$,WINDID$="ARRCCTW2",SELVAL$="",GUI_ID=4010
1310 GOSUB GENINPUT
1315 IF Y$="U" THEN GOTO MID
1320 LET N1$=X$+FILL(X4-LEN(X$))
1325 IF N1$=FILL(X4) THEN LET X9$="Order ID is required"; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO 1300
1330 DIM RCCT$:FATTR(RCCT$); FIND RECORD(FILE[10],KEY=N1$,DOM=*NEXT)RCCT$; GOTO 1340
1335 let x9$="Warning - order not found in activity log."; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; IF X0$="V" THEN GOTO 1300
1340 IF RCCT.MID$<>RCMI.MID$ THEN LET X9$="This transaction was processed using Merchant ID "+RCCT.MID$; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO 1300
1345 IF X0$<>"V" THEN GOTO 1400
1350 IF POS(RCCT.COMMAND$="12",1)=0 THEN LET X9$="Can only void a Sale or Credit."; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO 1300
1355 IF RCCT.VOID_DATE>1 THEN LET X9$="Transaction already voided."; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO 1300
1360 IF CVS(RCCT.TRANSACTIONID$,3)="" OR CVS(RCCT.AUTH$,3)="" THEN LET X9$="Transaction was not authorized."; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO 1300
1365 IF RCCT.AMT=0 THEN LET X9$="Transaction Amount must be greater than zero."; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO 1300
2000 REM "Approve Screen"
2010 LET O7=2; GOSUB GENERROR
2015 IF Y$="U" THEN GOSUB CLEAR_GLOBAL; GOTO 1300
2020 IF Y$<>"P" THEN GOTO 2000
2025 IF X0$="V" THEN GOTO VOID_TRANSACTION
2030 LET DEBIT=0; IF POS("Y"=RCCT.DEBIT$) THEN LET DEBIT=1
2035 LET COMMAND$="1"; IF CVS(RCCT.COMMAND$,3)<>"" THEN LET COMMAND$=RCCT.COMMAND$
2040 LET ORDER_ID$=CVS(N1$,3); IF CVS(RCCT.ORDER_ID$,3)<>"" THEN LET ORDER_ID$=CVS(RCCT.ORDER_ID$,3)
2050 IF RCMI.GATEWAY$="1" THEN GOTO HOSTPAY else if RCMI.GATEWAY$="3" then goto VANTIV
2200 REM "Query Order - Direct Post"
2215 LET RESP$="",DO_AUTH$="Y",PRE_AUTH$=""
2220 LET N5=UNT; OPEN (N5,MODE="HOST="+CVS(RCMI.DP_URL$,3)+",PORT="+STR(RCMI.PORT),ERR=*next)"N5"; GOTO 2230
2225 LET X9$="Error Opening "+CVS(RCMI.DP_URL$,3); GOSUB GENERROR; GOTO 1000
2230 LET REQ$="POST /TransactionManager HTTP/1.0"; GOSUB WRITE_SSL
2235 LET REQ$="User-Agent: HTTPTool/1.0"; GOSUB WRITE_SSL
2240 LET REQ$="Content-Type: application/x-www-form-urlencoded"; GOSUB WRITE_SSL
2245 LET TRAN$="account_token="+CVS(RCMI.TOKEN$,3)
2250 LET TRAN$=TRAN$+"&charge_type="+"QUERY_PAYMENT"
2255 LET TRAN$=TRAN$+"&protocol_version=16"
2260 LET TRAN$=TRAN$+"&version_id="+CVS(RCMI.VERSION$,3)
2265 LET TRAN$=TRAN$+"&charge_total=0"
2270 LET TRAN$=TRAN$+"&transaction_type=CREDIT_CARD"
2275 LET TRAN$=TRAN$+"&order_id="+cvs(n1$,3)
2280 LET TRAN$=TRAN$+"&full_detail_flag=true"
2285 LET TRANLEN=LEN(TRAN$)
2290 LET REQ$="Content-Length: "+STR(TRANLEN); GOSUB WRITE_SSL
2295 LET REQ$=$0D$; GOSUB WRITE_SSL
2300 LET REQ$=TRAN$; GOSUB WRITE_SSL
2305 LET CTR=0
2310 WAIT MAX(1,RCPC.INIT)
2315 READ RECORD (N5,SIZ=1,TIM=1,ERR=2330)X$
2320 LET RESP$=RESP$+X$
2325 GOTO 2315
2330 IF RESP$="" THEN LET CTR=CTR+1; IF CTR>RCPC.MAX THEN LET X9$="Connectiontimed out.  Please retry"; GOSUB GENERROR; GOTO 2335 ELSE GOTO 2315
2335 CLOSE (N5,ERR=2340)
2340 IF cvs(RESP$,3)="" THEN GOTO 1000
2360 let x$=cvs(resp$,3); goto 3800
3000 rem "Query Order - Hostpay"
3005 HOSTPAY:
3100 use org.apache.http.impl.client.HttpClientBuilder
3105 use org.apache.http.client.methods.HttpPost
3110 use java.util.ArrayList
3115 use org.apache.http.message.BasicNameValuePair
3120 use org.apache.http.client.entity.UrlEncodedFormEntity
3125 use org.apache.http.util.EntityUtils
3130 use org.apache.commons.io.IOUtils
3135 use java.util.HashMap
3140 use org.apache.http.client.utils.URLEncodedUtils
3200 rem "--------- get HostPay Results"
3202 GET_HOSTPAY_RESULTS:
3210 LET RESP$="",X$="",ZIP$="",MSG$="",AUTH$="",TRANS_ID$="",TRAN$="",OK=0,ATTEMPTS=0
3220 data! = new ArrayList()
3225 fnadd!(data!,"account_token",RCMI.TOKEN$)
3230 IF DEBIT THEN fnadd!(data!,"transaction_type","DEBIT_CARD"); fnadd!(data!,"account_type","2"); fnadd!(data!,"charge_type",FNQUERY_DEBIT$(COMMAND$)) ELSE fnadd!(data!,"transaction_type","CREDIT_CARD"); fnadd!(data!,"charge_type",FNQUERY$(COMMAND$))
3235 fnadd!(data!,"protocol_version","16"); fnadd!(data!,"version_id",cvs(RCMI.VERSION$,3))
3240 fnadd!(data!,"order_id",cvs(ORDER_ID$,3))
3245 fnadd!(data!,"full_detail_flag","true")
3260 query_post! = new UrlEncodedFormEntity(data!)
3265 query_result!=fn_http_post!(RCMI.HP_QUERY_URL$,query_post!)
3270 WAIT MAX(1,RCPC.INIT)
3275 values! = URLEncodedUtils.parse(query_result!)
3280 valueMap! = new HashMap()
3285 if values!.size()<1 then let attempts=attempts+1; if attempts<3 then goto 3220 else let MSG$="Connection timed out.  Please retry"; GOSUB GENERROR; GOTO 1000
3295 for i=0 to values!.size()-1
3300 value!=values!.get(i)
3305 valueMap!.put(value!.getName(),value!.getValue())
3310 next i
3320 LET X$=STR(VALUES!)
3325 IF CVS(X$,3)="" THEN LET X9$="No information returned"; GOSUB GENERROR; GOTO 1000
3350 GOTO 3800
3500 REM "------- Vantiv"
3505 VANTIV:
3520 use org.apache.http.impl.client.HttpClientBuilder
3525 use org.apache.http.client.methods.HttpPost
3530 use java.util.ArrayList
3535 use org.apache.http.message.BasicNameValuePair
3540 use org.apache.http.client.entity.UrlEncodedFormEntity
3545 use org.apache.http.util.EntityUtils
3550 use org.apache.commons.io.IOUtils
3555 use java.util.HashMap
3560 use org.apache.http.client.utils.URLEncodedUtils
3565 use org.apache.http.entity.StringEntity
3590 DIM QUERY$:"REFERENCE:C(10*),TRANSID:C(10*),TRANSSETUP:C(10*),MSG:C(30*),APPROVED:N(1*)"
3595 IF X0$="V" THEN LET QUERY.TRANSID$=RCCT.TRANSACTIONID$ ELSE LET QUERY.REFERENCE$=RCCT.ORDER_ID$
3596 IF CVS(RCCT.ENTRY$,7)="GOCART" THEN LET QUERY.TRANSID$=RCCT.TRANSACTIONID$
3600 let xml$=""
3605 xml$=xml$+"<TransactionQuery xmlns="+$22$+"https://reporting.elementexpress.com"+$22$+">"
3610 let xml$=xml$+"<Credentials>"
3615 let xml$=xml$+"<AccountID>"+cvs(RCMI.TP_EXP_ACCOUNT$,3)+"</AccountID>"
3620 let xml$=xml$+"<AccountToken>"+cvs(RCMI.TOKEN$,3)+"</AccountToken>"
3625 let xml$=xml$+"<AcceptorID>"+cvs(RCMI.TP_EXP_ACCEPTOR$,3)+"</AcceptorID>"
3630 let xml$=xml$+"</Credentials>"
3635 let xml$=xml$+"<Application>"
3640 let xml$=xml$+"<ApplicationID>"+CVS(RCMI.TP_APP_ID$,3)+"</ApplicationID>"
3645 let xml$=xml$+"<ApplicationName>"+CVS(RCMI.TP_APP_NAME$,3)+"</ApplicationName>"
3650 let xml$=xml$+"<ApplicationVersion>"+CVS(RCMI.TP_APP_VERSION$,3)+"</ApplicationVersion>"
3655 let xml$=xml$+"</Application>"
3660 let xml$=xml$+"<Parameters>"
3665 IF CVS(QUERY.REFERENCE$,3)<>"" then let xml$=xml$+"<ReferenceNumber>"+CVS(QUERY.REFERENCE$,3)+"</ReferenceNumber>"
3670 IF CVS(QUERY.TRANSID$,3)<>"" then let xml$=xml$+"<TransactionID>"+CVS(QUERY.TRANSID$,3)+"</TransactionID>"
3675 IF CVS(QUERY.TRANSSETUP$,3)<>"" then let xml$=xml$+"<TransactionSetupID>"+CVS(QUERY.TRANSSETUP$,3)+"</TransactionSetupID>"
3680 let xml$=xml$+"</Parameters>"+"</TransactionQuery>"
3685 payment_query! = new StringEntity(xml$)
3690 httpClient! = HttpClientBuilder.create().build()
3695 httpPost! = new HttpPost(CVS(RCMI.TP_URL_QUERY$,3))
3700 httpPost!.setHeader("Content-type","text/xml")
3705 httpPost!.setEntity(payment_query!)
3710 response! = httpClient!.execute(httpPost!)
3715 result! = response!.getEntity()
3720 let json$ = ""; let json$=str(EntityUtils.toString(result!))
3730 if cvs(json$,3)="" then let X9$="No information returned"; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO 1000
3740 LET X$=json$; GOTO 3800
3800 LET F=UNT,DEVICE$="PF",OUTCOLS=132
3810 CALL "GENOUT.PUB",DEVICE$,F,OUTCOLS
3815 IF OUTCOLS=0 THEN LET O7=1; GOSUB GENERROR; GOTO 1000
3820 IF LEN(X$)<131 THEN PRINT (F)@(0),X$; GOTO 3850
3825 PRINT (F)@(0),X$(1,130); LET X$=X$(131)
3830 GOTO 3820
3850 CLOSE(F); LET F=0
3860 GOTO 1000
4000 REM "-------- Void Transaction - Vantiv"
4005 VOID_TRANSACTION:
4010 REM "------ Confirm"
4015 LET X8$="Void Transaction for "+RCCT.CUST$+" "+CVS(FNNUM$(RCCT.AMT,M1$),3)+"?"
4020 IF GUI THEN LET X$="",O7=10,X9$=X8$,X8$="",SAVEYDIS$=YDISABLE$,YDISABLE$=""; GOSUB GENERROR; IF Y$="E" THEN LET X$="YES" ELSE LET X$="NO " FI; LET YDISABLE$=SAVEYDIS$,SAVEYDIS$=""; GOTO 4070
4030 LET COL=INT(LEN(X8$)/2)+42; GOSUB GENERROR; REM "X8$ Message"
4040 LET X0=22,X1=COL,X3=5,X1$="",X4=3,X$="",Y$=""
4050 GOSUB GENINPUT
4055 LET X8$=" "; GOSUB GENERROR
4060 IF Y$="U" THEN GOTO ABANDON
4070 IF POS("Y"=X$)=0 THEN GOTO ABANDON
4100 GOSUB CHECK_FOR_LOCKS; IF OK=0 THEN GOTO ABANDON
4110 LET LOG=1; REM "Flag to write to RCCTx"
4120 CALL "RCPCVOID.PUB",RCMI$,RCCT$,"R1",X9$,LOG,APPROVED; REM "Always attempt a Full Reversal first, then a Void if this fails"
4125 IF APPROVED THEN GOTO 4140
4130 CALL "RCPCVOID.PUB",RCMI$,RCCT$,"V",X9$,LOG,APPROVED
4140 IF X9$<>"" THEN GOSUB CLEAR_GLOBAL; GOSUB GENERROR
4150 GOTO ABANDON
6000 REM 0 - (GENINPUT) 6000-6190
6001 GENINPUT: REM "08/10/2007 - General Input Routine Interface"
6005 LET WIND$=WINDID$,SEL$=SELVAL$,PRO$=PROGID$
6010 IF X9<>0 THEN GOTO 6100
6090 IF POS(Y$="PJQ") THEN LET WINDID$="",SELVAL$="",PROGID$=""; RETURN
6100 IF GUI=0 THEN CALL "GENINPUT.PUB",ERR=GENERROR,Z9$,Y$,(X0),(X1),(X2),(X3),(X4),X9,X1$(1),X,X$,INFO,WINDID$,SELVAL$,COMPID$,PROGID$,FILE[ALL],YDISABLE$,PGM(-2),FLD_HLP$,GENINPUT$; GOTO 6120
6110 CALL "GENGUINP.PUB",ERR=GENERROR,Z9$,Y$,(X0),(X1),(X2),(X3),(X4),X9,X1$(1),X,X$,INFO,WINDID$,SELVAL$,COMPID$,PROGID$,FILE[ALL],YDISABLE$,PGM(-2),FLD_HLP$,GUI_ID,BUTTON_KEYS$[ALL],OSGUI$,GUI_RADIO$,GENINPUT$
6120 ON POS(Y$="DIB PJCEU") GOTO 6180,6185,6183,6184,6190
6180 IF STBL("VERSW")="OFF" THEN GOSUB 8420 ELSE GOSUB 8410; REM "check othercommands"
6182 GOTO 6100
6183 GOSUB INFO; LET Y$="E",WINDID$=WIND$,SELVAL$=SEL$,PROGID$=PRO$; GOTO 6100
6184 GOSUB DRILL; LET Y$="E",WINDID$=WIND$,SELVAL$=SEL$,PROGID$=PRO$; GOTO 6100
6185 GOSUB 9200
6187 GOTO 6100
6190 RETURN
6200 REM 0 - (INFO) 6200-6210
6201 INFO:
6210 RETURN
6300 REM 0 - (DRILL) 6300-6310
6301 DRILL:
6310 RETURN
7500 REM 7500,5 "DISPLAY SCREEN" 
7505 PROMPTS:
7506 IF GUI THEN GOTO GUI_PROMPTS
7510 GOSUB 7900
7515 PRINT 'SB',STBL("FTXT"),
7525 PRINT @(2,3),"Merchant ID"
7530 PRINT @(2,5),"Order ID + Seq No.",
7575 RETURN
7700 REM 7700 "DISPLAY DATA" 
7710 DATA:
7715 IF GUI THEN GOTO GUI_DATA
7720 PRINT 'CF','SF',STBL("FTXT"),
7735 PRINT @(17,3),N2$,
7750 PRINT @(22,5),N3$,
7840 RETURN
7900 REM 7900 "Display Boxes"
7910 PRINT 'BACKGR',STBL("FBKG"),STBL("FBX"),'DEFAULT','CS','SB',
7920 PRINT 'BOX'(0,0,79,24),'GS',
7930 PRINT @(0,21),"6",'BOX'(1,21,77,0),@(78,21),"7",'GE'
7940 PRINT 'SB',STBL("FTTL"),@(INT((77-LEN(TITLE$))/2),0),TITLE$,
7950 RETURN
8300 REM 0 - (GENOPEN) 8300-8345
8305 GENOPEN: REM "08/10/2007 General file OPEN routine"
8310 LET GENOPEN_MSG$="",YSAVE$=YDISABLE$,YDISABLE$="XSJPUD",Y$=""
8315 CALL "GENOPEN.PUB",FILE[ALL],F$,F0,TASK,TPL$,GENOPEN_MSG$,Y$,GENOPEN$
8320 IF Y$="M" THEN GOTO 9990
8330 IF POS("Unavailable"=GENOPEN_MSG$) THEN LET X9$=GENOPEN_MSG$; GOSUB GENERROR; IF GENOPEN.RET$<>"" THEN GOTO GENOPEN_DONE ELSE LET YDISABLE$=YSAVE$,YSAVE$=""; GOTO GENOPEN
8335 IF GENOPEN_MSG$<>"" THEN LET O7=1,X9$=GENOPEN_MSG$; GOSUB GENERROR; GOTO 9990
8340 GENOPEN_DONE:
8345 LET YDISABLE$=YSAVE$,YSAVE$=""; RETURN
8400 REM 0 - (GENERROR) 8400-8452
8401 GENERROR: REM "02/21/89 - GENERAL ERROR ROUTINE"
8405 IF O7=0 AND X9$="" AND X8$="" THEN LET O7=-3
8410 CALL "GENERROR.PUB",X9$,X8$,ERR,TCB(5),O7,Y$,TCB(10),X1$(1),F$(1),PROGID$,FILE[ALL],YDISABLE$,PGM(-2),X$,X4,MX8,MX9,OSGUI$
8420 ON POS(Y$="XMSLR") GOTO 8450,8452,9990,8452,8490,8499
8450 RETURN
8452 RESET; SETERR GENERROR
8454 IF Y$="X" THEN GOTO 8470
8456 IF Y$="S" THEN GOTO 8480
8460 REM "8470=BR ON X, 8480=BR ON S, 8490=L " 
8470 GOTO ABANDON
8480 GOTO PAGEUP
8490 REM 0 - (GENERROR2) 8490-8499
8491 CALL "GENPSCR.PUB"
8492 LET Y$=""
8495 RETURN
8499 RETRY
9990 QUIT:
9995 RUN O1$
9999 END
10000 REM 0 - (GENNUM) 10000-10099
10002 DEF FNNUM$(XX,XX1$)
10003 LET XX$=STR(XX:XX1$,ERR=10005); GOTO 10006
10005 LET XX1=LEN(XX1$); IF POS(XX1$(XX1,1)="-)") THEN LET XX1=XX1-1 FI; LET XX$=FILL(XX1,"*"),XX$=XX$+FILL(LEN(XX1$)-LEN(XX$))
10006 RETURN XX$
10008 FNEND
10010 DEF FNGUINUM$(XX,XX1$,ID)
10015 LET XX$=STR(XX:XX1$,ERR=10020); GOTO 10025
10020 LET XX1=LEN(XX1$); IF POS(XX1$(XX1,1)="-)") THEN LET XX1=XX1-1 FI; LET XX$=FILL(XX1,"*"),XX$=XX$+FILL(LEN(XX1$)-LEN(XX$))
10025 LET TF$=SENDMSG(OSGUI.CHAN,ID,23,0,XX1$)
10030 RETURN CVS(XX$,3)
10035 FNEND
17500 REM 17500 "----- GUI Prompts and Box"
17510 GUI_PROMPTS:
17520 LET OSGUI.SCRNID$="RCPCQURY.BRC",OSGUI.WIND_ID[1]=1,OSGUI.CONTEXT_POINTER=1
17530 LET MSG$=""; CALL "GENGURES.PUB",FILE[ALL],OSGUI$,MSG$; IF CVS(MSG$,3)<>"" THEN LET X9$=MSG$,O7=1; GOSUB GENERROR; GOTO QUIT
17540 CALL "GENGUFNC.PUB::BUILD_MENU_STRINGS",MENUHLP$,MENU1$
17550 LET MENU1$=MENU1$+MENUHLP$; PRINT (OSGUI.CHAN)'SETMENU',MENU1$; LET MENU1$="",MENUHLP$=""
17570 PRINT (OSGUI.CHAN)'TITLE'(0,TITLE$),'SHOW'(0)
17580 RETURN
17700 REM 17700,5 "----- GUI Data"
17705 GUI_DATA:
17710 PRINT (OSGUI.CHAN)'TITLE'(4000,N2$)
17720 PRINT (OSGUI.CHAN)'TITLE'(4010,N3$)
17795 RETURN
18000 REM "----- Disable Fields"
18005 DISABLE_FIELDS:
18020 RETURN
18100 REM "----- Enable Fields"
18101 ENABLE_FIELDS:
18125 RETURN
18200 REM 18200,5 "----- Clear GUI Global"
18205 CLEAR_GLOBAL:
18210 IF GUI THEN LET DUMMY$=STBL("!CLEAR","DESTID",ERR=18215)
18215 RETURN
18800 REM 0 - (GENCHECK) 18800-18850
18810 DEF FNCHECK(ID,PARAM$)
18820 IF LEN(PARAM$)<1 THEN PRINT (OSGUI.CHAN)'UNCHECK'(ID) ELSE IF PARAM$(1,1)="Y" THEN PRINT (OSGUI.CHAN)'CHECK'(ID) ELSE PRINT (OSGUI.CHAN)'UNCHECK'(ID)
18830 RETURN 1
18840 FNEND
18850 REM 0 - (GENCHECK_RADIO) 18850-18890
18855 DEF FNCHECKRADIO(PARAM,LIST$)
18860 IF LEN(LIST$)<5 THEN GOTO 18870 ELSE IF PARAM=0 OR PARAM>LEN(LIST$)/5 THEN FOR I=1 TO LEN(LIST$)/5; PRINT (OSGUI.CHAN)'UNCHECK'(NUM(LIST$(I*5-4,5))); NEXT I; GOTO 18870
18865 PRINT (OSGUI.CHAN)'CHECK'(NUM(LIST$(PARAM*5-4,5)))
18870 RETURN 1
18875 FNEND
21600 REM "------- Check for Batch Locks"
21601 CHECK_FOR_LOCKS:
21610 LET OK=0
21620 READ RECORD(FILE[30],KEY="01")RCPC$
21625 IF CVS(RCPC.LOCK$,3)<>"" THEN LET LOCK_MSG$="Credit Card verification is disabled on Terminal "+CVS(RCPC.LOCK$,3); GOTO 21650
21630 READ RECORD(FILE[31],KNUM=0,KEY=RCCT.MID$)RCMI$
21635 IF CVS(RCMI.LOCK$,3)<>"" THEN LET LOCK_MSG$="Batch Settlement on Terminal "+CVS(RCMI.LOCK$,3); GOTO 21650
21640 LET OK=1; RETURN
21650 LET X9$=LOCK_MSG$,X8$="Press Enter to Retry"; GOSUB CLEAR_GLOBAL; GOSUB GENERROR
21670 GOTO CHECK_FOR_LOCKS
30000 REM "------- Write SSL"
30001 WRITE_SSL:
30010 WRITE (N5)REQ$
30020 RETURN
40000 OPEN(1)"RCCT1"
40010 READRECORD(1)RCCT$
40020 PRINT (0,ERR=*NEXT) "ENTRY=",RCCT.ENTRY$,"  ENTRY_MODE=",RCCT.ENTRY_MODE$; WAIT .75
40025 GOTO 40010
40200 REM "------ Add field to RCCTx - COMMERCIAL_CODE:C(2*)
40210 open(1)"RCCT"+STBL("CID")
40215 DIM A$[1:35]
40220 READ(1,ERR=*NEXT)A$[ALL]; GOTO 40225
40221 IF ERR=2 THEN ESCAPE; REM "All Done"
40222 if err=1 then goto 40220
40223 escape; rem "Error on READ statement"
40225 WRITE(1)A$[ALL],FILL(2)
40230 GOTO 40220
40250 REM "------ Add field to RCCTx - FEE:N(14*)"
40260 open(1)"RCCT"+STBL("CID")
40265 DIM A$[1:36]
40270 READ(1)A$[ALL]; GOTO 40275
40275 WRITE(1)A$[ALL],0
40280 GOTO 40270