REM ********************************************************************* REM The purpose of this software is to provide an inbound/outbound REM vehicle software for use with the JagXtreme scale terminal. REM This will provide the ethernet communications to store transaction REM data on the customer server. To be used with VSX-DBI program. REM Date: 12/12/01 REM Originator: Tom Kimmet REM Department: MTASC Columbus REM Modified by: Jean-Pierre Roy (MTCDN) REM Date: 2004-09-27 REM Job Number: T S C 449 REM Com1= Ticket port/User configurable REM Com2= Report port/User configurable REM Com4=Badge reader 9600,8,N (only) REM 4.0.0 Made Com1 for both badge reader input and ticket printer output REM 4.0.0 Removed check for multifunction card when badge is swiped REM 4.0.0 Allow for non "F key" keyboard use REM 4.0.0 Unattended "1" for Inbound "2" for Oubound or swipe badge REM 4.0.0 Input 1 = Unattended,2 = Loop 1,3 = Loop 2,4 = Loop 3,5 = Loop 4 REM 4.0.0 Added password for reports and checking memory REM 4.1.0 Fixed Ucase on password now pw is case sensitive REM 4.1.0 Reset oper pw and super pw to "" on reset to factory REM ********************************************************************* DISP$=" VSX REV. 4.1.A":PRINT DISP$:SLEEP 2000: NEWLADDER REM *************** REM Define shared data variables. REM *************** Powerup: DEFSHR KEYSOR%,BAS10:KEYSOR%=3:DEFSHR SELECT%,BAS87:SELECT%=0:DEFSHR MSTOP%,BAS89:MSTOP%=0:DEFSHR NUML%,S_60B:NUML%=1:DEFSHR ESC%,BAS86:ESC%=0 DEFSHR G1#,WT110:DEFSHR G2#,WT210:DEFSHR DISD%,T_603:DISD%=1 DEFSHR I1%,P_100:DEFSHR I2%,P_101:DEFSHR I3%,P_102:DEFSHR I4%,P_103:DEFSHR I5%,P_108:DEFSHR I6%,P_109:DEFSHR I7%,P_10A:DEFSHR I8%,P_10B DEFSHR I9%,P_10C:DEFSHR I10%,P_10D:DEFSHR I11%,P_10E:DEFSHR I12%,P_10F DEFSHR O1%,P_500:DEFSHR O2%,P_501:DEFSHR O3%,P_502:DEFSHR O4%,P_503:DEFSHR O5%,P_508:DEFSHR O6%,P_509:DEFSHR O7%,P_50A:DEFSHR O8%,P_50B DEFSHR SCLA%,T_6C0:DEFSHR SCLB%,T_6C1:DEFSHR SSA%,S_207:DEFSHR SSB%,S_20F:DEFSHR SMS%,T_6C2:DEFSHR SSE%,T_652 DEFSHR ZERO1%,T_693:DEFSHR ZERO2%,T_6A3:DEFSHR ZCS%,T_6B3:DEFSHR M1%,S_200:DEFSHR M2%,S_208 DEFSHR QTC%,T_6C3:DEFSHR QO%,T_6C4:DEFSHR TC%,T_6C5:DEFSHR TCO%,T_6C6:DEFSHR GTC%,T_6C7 DEFSHR Units$,WT103:DEFSHR MLT%,BD091:DEFSHR RA$,LIT23 DEFSHR GR$,VAR01:DEFSHR T$,VAR02:DEFSHR N$,VAR03:DEFSHR ID$,VAR04:DEFSHR TI$,VAR05:DEFSHR DA$,VAR06:DEFSHR COMD$,VAR07:DEFSHR ZF$,VAR08 DEFSHR TV$,VAR09:DEFSHR U$,VAR10:DEFSHR PT$,VAR11:DEFSHR PA$,VAR12:DEFSHR PL$,VAR13:DEFSHR ITIME$,VAR14:DEFSHR IDATE$,VAR15 DEFSHR CMV1$,VAR16:DEFSHR CMV2$,VAR17:DEFSHR CMV3$,VAR18:DEFSHR CMV4$,VAR19:DEFSHR CMV5$,VAR20 DEFSHR PMT1$,LIT12:DEFSHR PMT2$,LIT13:DEFSHR PMT3$,LIT14:DEFSHR PMT4$,LIT15:DEFSHR PMT5$,LIT16:DEFSHR DUPTIC$,LIT21:DEFSHR DRNM$,LIT22 DEFSHR SPASS$,CLV01:DEFSHR OPASS$,CLV02:DEFSHR COMDTY$,CLV03:DEFSHR S1$,CLV04:DEFSHR S2$,CLV05 DEFSHR ASS$,CLV06:DEFSHR CQ$,CLV07:DEFSHR FM$,CLV08:DEFSHR CMNT$,CLV09:DEFSHR OCNT$,CLV10:DEFSHR EBDG$,CLV11 COMMON SPASS$,KEYSOR%,COMDTY$,CMNT$,ASS$,OPASS$,CFFLG%,CQ$,FM$,S1$,S2$,SCLT$,LPC$,EBDG$ F1$=CHR$(19):F2$=CHR$(20):F3$=CHR$(21):F4$=CHR$(22):F5$=CHR$(7):F6$=CHR$(1) F7$=CHR$(5):F8$=CHR$(6):F9$=CHR$(4):F10$=CHR$(3):F11$=CHR$(23):F12$=CHR$(24) O%=VAL(OCNT$):TRM$=CHR$(13)+CHR$(10):AA%=VAL(ASS$):BDOOR$="865336":SCL1%=0:SCL2%=0:PWR%=1:O1%=0:O2%=0:O3%=0:O4%=0:O5%=0:O6%=0:O7%=0:O8%=0 REM *************** REM Check for existance of weight data tables REM if they do not exist then create them. REM *************** OPEN "INBOUND.DAT" FOR RANDOM AS #1 LEN=36 FIELD #1, 8 AS REC_ID$, 8 AS IN_WT$, 8 AS IN_T$, 10 AS IN_D$, 2 AS LFCR$ ON ERROR GOTO ERRORHAND:GET #1, 1 CLOSE #1:PWR%=0 OPEN "SETUP.DAT" FOR RANDOM AS #1 LEN = 52 FIELD #1,5 AS SIL$,5 AS SOL$,5 AS SQL$,5 AS SPL$,5 AS SCL$,4 AS SSCLT$,1 AS SLPC$,1 AS SH$,15 AS SIP$,4 AS SPORT$,2 AS LFCR$ GET #1,1 ILEN$=SIL$:OLEN$=SOL$:QLEN$=SQL$:PLEN$=SPL$:CLEN$=SCL$:SCLT$=SSCLT$:LPC$=SLPC$:HOST$=SH$:IP$=LTRIM$(SIP$):PORT$=SPORT$:CLOSE #1:PORT%=VAL(PORT$) ILEN#=VAL(ILEN$):OLEN#=VAL(OLEN$):PLEN#=VAL(PLEN$):CLEN#=VAL(CLEN$):QLEN#=VAL(QLEN$):O%=VAL(OCNT$) REM IF EBDG$="Y" THEN GOSUB SWIPE IF SUPER%=1 THEN SUPER%=0:GOTO SupervisorMenu IF CMNT$<>"Y" THEN GOTO MainSelect OPEN "PROMPT.DAT" FOR RANDOM AS #1 LEN = 82 FIELD #1,16 AS SPMT1$,16 AS SPMT2$,16 AS SPMT3$,16 AS SPMT4$,16 AS SPMT5$,2 AS LFCR$ GET #1,1 PMT1$=SPMT1$:PMT2$=SPMT2$:PMT3$=SPMT3$:PMT4$=SPMT4$:PMT5$=SPMT5$:CLOSE #1 REM *************** REM Scale selected REM *************** MainSelect: GOSUB LP_LT_CNTRL If HOST$="N" then goto MainP Open "Com2: TRM13 EVENT" for Input as #6 On Event #6 Gosub HostTsk Flush #6: X$="": RA$="" Input #6, X$ REM *************** REM Main platform scale subroutine REM *************** MainP: K$=UCASE$(INKEY$) IF K$=F7$ OR K$="S" OR K$=CHR$(32) THEN GOSUB SelectScale IF K$=F5$ OR K$="Z" OR K$=F6$ THEN GOSUB ZeroScale IF K$=F8$ OR K$="P" THEN GOSUB RepeatPrint IF K$=F9$ OR K$="M" THEN GOSUB CheckMemory IF K$=F10$ OR K$="R" THEN GOTO Reports IF K$=F11$ OR K$="V" THEN GOTO SupervisorMenu IF K$=F12$ OR K$="E" THEN GOSUB ExitProgram IF HOST$="Y" AND RA$<>"" then goto HostSnd IF LPC$="Y" THEN GOSUB CHK_LOOP IF G1#>2000 AND SCL1%=0 THEN SCL1%=1:SCL2%=0:O2%=0:O3%=0:O4%=0:GOSUB SCLP1_MO:TMOUT$=LEFT$(TIME$,5):GOTO SelectProcess1 IF G2#>2000 AND SCL2%=0 THEN SCL2%=1:SCL1%=0:O1%=0:O2%=0:O4%=0:GOSUB SCLP2_MO:TMOUT$=LEFT$(TIME$,5):GOTO SelectProcess1 IF G1#<(VAL(GR$)-1000) THEN SCL1%=0 IF G2#<(VAL(GR$)-1000) THEN SCL2%=0 IF M1%=1 THEN SCLA%=1 IF M2%=1 THEN SCLB%=1 DISP$=LEFT$(TIME$,5)+" "+LEFT$(DATE$,6)+RIGHT$(DATE$,2):PRINT DISP$ GOTO MainP REM *************** REM Scale 1 in motion subroutine REM *************** SCLP1_MO: IF M1%=0 THEN O1%=0:RETURN DISP$="SCALE IN M0TI0N":PRINT DISP$ GOTO SCLP1_MO REM *************** REM Scale 2 in motion subroutine REM *************** SCLP2_MO: IF M2%=0 THEN O3%=0:RETURN DISP$="SCALE IN M0TI0N":PRINT DISP$ GOTO SCLP2_MO REM *************** REM Select process from F keys or via host interface REM *************** SelectProcess1: If HOST$<>"Y" then goto SelectProcessP Delevent #6: Close #6 SelectProcessP: K$=UCASE$(INKEY$) IF G1#<1000 AND SCL1%=1 THEN SCL1%=0:GOTO MainSelect IF G2#<1000 AND SCL2%=1 THEN SCL2%=0:GOTO MainSelect IF SCL1%=1 AND I1%=1 THEN GOTO UNATTENDED IF SCL2%=1 AND I1%=1 THEN GOTO UNATTENDED IF SCL1%=1 AND G1#>2000 THEN SCLA%=1:DISP$="SELECT PR0CESS A":PRINT DISP$ IF SCL2%=1 AND G2#>2000 THEN SCLB%=1:DISP$="SELECT PR0CESS B":PRINT DISP$ IF K$="S" OR K$=F7$ OR K$=CHR$(32) THEN GOSUB SelectScale IF K$="I" OR K$=F1$ OR K$="O" OR K$="1" OR K$="2" THEN GOTO EnterID IF K$="A" OR K$=F2$ THEN GOTO AutoAssign IF K$="Q" OR K$=F3$ THEN GOTO QuickTareEntry IF K$="G" OR K$=F4$ THEN GOTO GrossPrint IF K$="F" OR K$=F5$ THEN GOTO FillOnScale IF K$="P" OR K$=F8$ THEN GOSUB RepeatPrint IF K$="M" OR K$=F9$ THEN GOSUB CheckMemory REM IF K$="R" OR K$=F10$ THEN GOTO Reports IF K$="V" OR K$=F11$ THEN GOTO SupervisorMenu IF K$="E" OR K$=F12$ THEN GOSUB ExitProgram IF SSA%=0 THEN SCL2%=1:SCL1%=0 ELSE SCL1%=1:SCL2%=0 IF K$=F8$ THEN GOSUB RepeatPrint IF TMOUT$<>LEFT$(TIME$,5) THEN TMOUT$=LEFT$(TIME$,5):DISP$="SELECT PR0CESS " GOTO SelectProcessP REM *************** REM Selects other scale REM *************** SelectScale: IF SSA%=1 THEN SCLB%=1:DISP$="SCALE B SELECTED":PRINT DISP$:GOTO SendSelect IF SSA%=0 THEN SCLA%=1:DISP$="SCALE A SELECTED":PRINT DISP$ SendSelect: SLEEP 1000:RETURN REM *************** REM Zeros the selected scale REM *************** ZeroScale: IF SSA%=1 THEN ZERO1%=1 IF SSB%=1 THEN ZERO2%=1 RETURN REM *************** REM Reprints last ticket REM *************** RepeatPrint: DUPTIC$="DUPLICATE" IF LP%=1 THEN QTC%=1 IF LP%=2 THEN QO%=1 IF LP%=3 THEN TC%=1 IF LP%=4 THEN TCO%=1 IF LP%=5 THEN GTC%=1 DUPTIC$=" ":DISP$="NET "+N$+" "+Units$:PRINT DISP$ SLEEP 2000:RETURN REM *************** REM Checks the available inbound and outbound memory locations REM *************** CheckMemory: DISP$="CHECK MEMORY?":S$="N":INPUT "^CHECK MEMORY? ^N,Y",S$ IF S$="N" THEN RETURN ELSE GOSUB PassWord IF EPW$<>SPASS$ AND EPW$<>BDOOR$ AND EPW$<>OPASS$ THEN PRINT "INVALID PASSWORD":SLEEP 2000:RETURN CheckMemoryNP: OPEN "INBOUND.DAT" FOR RANDOM AS #1 LEN=36 FIELD #1, 8 AS REC_ID$, 8 AS IN_WT$, 8 AS IN_T$, 10 AS IN_D$, 2 AS LFCR$ IC%=0:DISP$="CHECKING MEM0RY":PRINT DISP$ FOR I%=1 TO ILEN# GET #1,I%:IF REC_ID$=SPACE$(8) THEN IC%=IC%+1 NEXT I% CLOSE #1:DISP$=" AVAIL IN = "+STR$(IC%):PRINT DISP$:SLEEP 2000:OC%=0 OPEN "OUTBOUND.DAT" FOR RANDOM AS #2 LEN=77 FIELD #2,8 AS A$,8 AS B$,8 AS C$,8 AS D$,16 AS E$,8 AS F$,19 AS G$,2 AS H$ DISP$="CHECKING MEM0RY":PRINT DISP$ FOR I%=1 TO OLEN# GET #2,I%:IF A$=SPACE$(8) THEN OC%=OC%+1 NEXT I% CLOSE #2:DISP$="AVAIL 0UT = "+STR$(OC%):PRINT DISP$:SLEEP 2000 RETURN REM *************** REM Chains to Report.bas REM *************** Reports: If HOST$="Y" then Print "Host ENABLED": Sleep 500: goto MainP DISP$="PRINT REP0RTS?":S$="N":INPUT "^PRINT REPORTS? ^N,Y",S$ IF S$="N" THEN GOTO MainSelect ELSE GOSUB PassWord IF EPW$<>SPASS$ AND EPW$<>BDOOR$ AND EPW$<>OPASS$ THEN PRINT "INVALID PASSWORD":SLEEP 2000:GOTO MainSelect CHAIN "REPORT.BAS" HostSnd: Delevent #6: Close #6 O1%=0:O2%=0:O3%=0:O4%=0: Print "Reports..." CHAIN "file4.bas" REM *************** REM Enter into supervisor mode REM *************** SupervisorMenu: DISP$=" SUPERVIS0R?":S$="N":INPUT "^SUPERVISOR? ^N,Y",S$ IF S$="N" THEN RESTART ELSE GOSUB PassWord IF EPW$<>SPASS$ AND EPW$<>BDOOR$ THEN DISP$="INVALID PASSW0RD":PRINT DISP$:SLEEP 2000:RESTART O1%=0:O2%=0:O3%=0:O4%=0:PRINT "PLEASE WAIT..." CHAIN "SUPER.BAS" REM *************** REM Exit program REM *************** ExitProgram: S$="N":INPUT "^EXIT PROGRAM? ^N,Y",S$ IF S$="N" THEN RETURN ELSE GOSUB PassWord IF EPW$=SPASS$ OR EPW$=BDOOR$ OR EPW$=OPASS$ THEN O1%=0:O2%=0:O3%=0:O4%=0:DISD%=0:KEYSOR%=2:MSTOP%=1:END DISP$="INVALID PASSW0RD":PRINT DISP$:SLEEP 2000:RETURN REM *************** REM Enter password Covers password with * REM *************** PassWord: EPW$="":EPWL$="":AXT$="*" EnterPassword: K$=INKEY$:DISP$=" ENTER PASSW0RD":PRINT DISP$ IF K$=CHR$(8) THEN RETURN IF K$="" THEN GOTO EnterPassword EPW$=K$:EPWL$=EPWL$+AXT$:EPWL$=PADL$(EPWL$,8," ") InputPassWord: K$=INKEY$ IF K$=CHR$(8) THEN RETURN DISP$="PASSW0RD"+RIGHT$(EPWL$,8):PRINT DISP$: IF K$<>"" THEN EPW$=EPW$+K$:EPWL$=EPWL$+AXT$ GOTO InputPassWord REM *************** REM Enter and check validity of in/outbound ID REM *************** EnterID: IF EBDG$="Y" THEN PRINT " SWIPE BADGE 0R":SLEEP 1500 ID$="":COMD$="":ZF$="":TV$="":U$="":PT$="":PA$="":PL$="":CMV1$="":CMV2$="":CMV3$="":CMV4$="":CMV5$="":DRNM$="":PERM%=0:DISP$="ENTER ID":PRINT DISP$ DISP$="" IF EBDG$="Y" THEN GOSUB SWIPE IDCONFIG: K$="": RB$="" WHILE K$="" AND RB$="" K$=UCASE$(INKEY$) PRINT "ENTER ID"+DISP$ IF G1#<1000 AND SCL1%=1 THEN GOTO CancelWt1 IF G2#<1000 AND SCL2%=1 THEN GOTO CancelWt1 WEND IF RB$<>"" THEN ID$=UCASE$(RB$):RB$="":GOTO CHECKID IF K$=CHR$(8) THEN GOTO CHECKID IF ASC(K$)=6 AND LEN(ID$)>0 THEN ID$=LEFT$(ID$,LEN(ID$)-1):DISP$=RIGHT$(ID$,8):DISP$=PADL$(ID$,8," "):GOTO IDCONFIG IF ASC(K$)<32 OR ASC(K$)>125 OR ASC(K$)=44 THEN GOTO IDCONFIG ID$=ID$+K$:DISP$=RIGHT$(ID$,8):DISP$=PADL$(ID$,8," "):GOTO IDCONFIG ProcessBadge: REM IF I1%=1 THEN CLREVENT TIME F%=0 BADGE$=LTRIM$(SWP$):BADGE$=RTRIM$(BADGE$) IF LEN(BADGE$)>0 THEN BADGE$=LEFT$(BADGE$,LEN(BADGE$)-1):BADGE$=PADR$(BADGE$,20," ") OPEN "BADGE.DAT" FOR RANDOM AS #1 LEN=46 FIELD #1,20 AS BDG$,8 AS BID$,16 AS BDGNM$,2 AS LFCR$ FOR I% = 1 TO 100 PRINT "SEARCHING..." GET #1, I%: IF BADGE$=BDG$ THEN F%=1:I%=100 REM Lprint BADGE$; "_/_"; BDG$; "-" NEXT I% IF F%=0 THEN PRINT " INVALID BADGE":ID$="":BADGE$="":CLOSE #1:FLUSH #5:ENABLE:INPUT #5,SWP$:SLEEP 2000:RETURN RB$=BID$: DRNM$=BDGNM$:CLOSE #1:INPUT #5,SWP$:RETURN CHECKID: IF EBDG$="Y" THEN Delevent #5: Close #5 IF LEN(ID$)<1 OR LEN(ID$)>8 THEN DISP$=" INVALID ID":PRINT DISP$:SLEEP 2000:GOTO EnterID IF SCL1%=1 THEN GR$=STR$(G1#):GR$=PADL$(GR$,8," ") IF SCL2%=1 THEN GR$=STR$(G2#):GR$=PADL$(GR$,8," ") IF ASC(ID$)=48 THEN GOTO GetQiuckIn IF ASC(ID$)>64 AND ASC(ID$)<91 THEN PERM%=1:GOTO PermTrans ID$=PADR$(ID$,8," "): goto InOutCheck CancelWt1: IF EBDG$="Y" THEN Delevent #5: Close #5 GOTO MainSelect REM *************** REM Check if ID is in inbound if not put it in inbound REM *************** InOutCheck: OPEN "INBOUND.DAT" FOR RANDOM AS #2 LEN=36 FIELD #2, 8 AS REC_ID$, 8 AS IN_WT$, 8 AS IN_T$, 10 AS IN_D$, 2 AS LFCR$ F%=0 IF AFLG%=1 THEN DISP$=" AUT0 ID = "+LEFT$(ID$,3):PRINT DISP$:SLEEP 2000:GOTO FindEmpty DISP$="SEARCHING...":PRINT DISP$ FOR I%=1 TO ILEN# GET #2,I%: IF REC_ID$=ID$ THEN F%=1:J%=I%:I%=ILEN# NEXT I% IF F%=0 THEN GOTO FindEmpty OUT$=IN_WT$:ITIME$=IN_T$:IDATE$=IN_D$:RSET REC_ID$=SPACE$(8):RSET IN_WT$=SPACE$(8):RSET IN_T$=SPACE$(8):RSET IN_D$=SPACE$(10) PUT #2,J%:CLOSE #2:GOTO OpenOutbound FindEmpty: IF I1%=1 AND AFLG%<>1 AND EBDG$="N" THEN DISP$=" INVALID ID!":PRINT DISP$:CLOSE #2:SLEEP 2000:GOTO EnterID IF AFLG%<>1 AND (VAL(ID$)>99 AND VAL(ID$)<1000) THEN DISP$=" INVALID ID":PRINT DISP$:SLEEP 2000 IF AFLG%<>1 AND (VAL(ID$)>99 AND VAL(ID$)<1000) THEN DISP$=" RESERVED!":PRINT DISP$:SLEEP 2000:CLOSE #2:GOTO EnterID F%=0 FOR I%=1 TO ILEN# GET #2,I%: IF REC_ID$=" " THEN J%=I%:I%=ILEN#:F%=1 NEXT I% IF F%=0 THEN DISP$=" INB0UND FULL!":PRINT DISP$:SLEEP 2000:CLOSE #2:GOTO MainSelect TI$=TIME$:DA$=DATE$:RSET REC_ID$=ID$:RSET IN_WT$=GR$:RSET IN_T$=TI$:RSET IN_D$=DA$:PUT #2, J%:N$=" 0":T$=" 0":TC%=1:AFLG%=0:LP%=3 CLOSE #2 DISP$="$"+ID$+","+GR$+","+TIME$+","+DATE$+"," GOTO PrintPrinting REM *************** REM Process outbound vehicles REM *************** OpenOutbound: IF O%>OLEN# OR O%<0 THEN O%=0 O%=O%+1:OCNT$=STR$(O%) OPEN "OUTBOUND.DAT" FOR RANDOM AS #2 LEN=77 FIELD #2,8 AS A$,8 AS B$,8 AS C$,8 AS D$,16 AS E$,8 AS F$,19 AS G$,2 AS H$ GOSUB NetSignCorrScl1 IF CMNT$<>"Y" THEN GOTO StoreTrans REM *************** REM Input comments depending on the quantity selected in Supervisor mode. REM *************** InitComment: DISP$=PMT1$:CMT1$="":CMT2$="":CMT3$="":CMT4$="":CMT5$="":RC$="" Comment1: K$="" WHILE K$="" AND RC$="" K$=INKEY$ IF CMT1$="" THEN PRINT PMT1$ ELSE CMT1$=PADL$(CMT1$,16," "):DISP$=RIGHT$(CMT1$,16):PRINT DISP$ WEND IF RC$<>"" THEN CMT1$=RC$:GOTO Qty2Comment IF ASC(K$)=8 THEN GOTO Qty2Comment IF K$<>"" THEN CMT1$=CMT1$+K$ IF ASC(K$)=6 AND LEN(CMT1$)>1 THEN CMT1$=LEFT$(CMT1$,LEN(CMT1$)-2) GOTO Comment1 Qty2Comment: IF VAL(CQ$)<2 THEN GOTO AssmblComments DISP$=PMT2$:RC$="" Comment2: K$="" WHILE K$="" AND RC$="" K$=INKEY$ IF CMT2$="" THEN PRINT PMT2$ ELSE CMT2$=PADL$(CMT2$,16," "):DISP$=RIGHT$(CMT2$,16):PRINT DISP$ WEND IF RC$<>"" THEN CMT2$=RC$:GOTO Qty3Comment IF ASC(K$)=8 THEN GOTO Qty3Comment IF K$<>"" THEN CMT2$=CMT2$+K$ IF ASC(K$)=6 AND LEN(CMT2$)>1 THEN CMT2$=LEFT$(CMT2$,LEN(CMT2$)-2) GOTO Comment2 Qty3Comment: IF VAL(CQ$)<3 THEN GOTO AssmblComments DISP$=PMT3$:RC$="" Comment3: K$="" WHILE K$="" AND RC$="" K$=INKEY$ IF CMT3$="" THEN PRINT PMT3$ ELSE CMT3$=PADL$(CMT3$,16," "):DISP$=RIGHT$(CMT3$,16):PRINT DISP$ WEND IF RC$<>"" THEN CMT3$=RC$:GOTO Qty4Comment IF ASC(K$)=8 THEN GOTO Qty4Comment IF K$<>"" THEN CMT3$=CMT3$+K$ IF ASC(K$)=6 AND LEN(CMT3$)>1 THEN CMT3$=LEFT$(CMT3$,LEN(CMT3$)-2) GOTO Comment3 Qty4Comment: IF VAL(CQ$)<4 THEN GOTO AssmblComments DISP$=PMT4$:RC$="" Comment4: K$="" WHILE K$="" AND RC$="" K$=INKEY$ IF CMT4$="" THEN PRINT PMT4$ ELSE CMT4$=PADL$(CMT4$,16," "):DISP$=RIGHT$(CMT4$,16):PRINT DISP$ WEND IF RC$<>"" THEN CMT4$=RC$:GOTO Qty5Comment IF ASC(K$)=8 THEN GOTO Qty5Comment IF K$<>"" THEN CMT4$=CMT4$+K$ IF ASC(K$)=6 AND LEN(CMT4$)>1 THEN CMT4$=LEFT$(CMT4$,LEN(CMT4$)-2) GOTO Comment4 Qty5Comment: IF VAL(CQ$)<5 THEN GOTO AssmblComments DISP$=PMT5$:RC$="" Comment5: K$="" WHILE K$="" AND RC$="" K$=INKEY$ IF CMT5$="" THEN PRINT PMT5$ ELSE CMT5$=PADL$(CMT5$,16," "):DISP$=RIGHT$(CMT5$,16):PRINT DISP$ WEND IF RC$<>"" THEN CMT5$=RC$:GOTO AssmblComments IF ASC(K$)=8 THEN GOTO AssmblComments IF K$<>"" THEN CMT5$=CMT5$+K$ IF ASC(K$)=6 AND LEN(CMT5$)>1 THEN CMT5$=LEFT$(CMT5$,LEN(CMT5$)-2) GOTO Comment5 AssmblComments: CMT1$=RIGHT$(CMT1$,16):CMT2$=RIGHT$(CMT2$,16):CMT3$=RIGHT$(CMT3$,16):CMT4$=RIGHT$(CMT4$,16):CMT5$=RIGHT$(CMT5$,16) CMV1$=CMT1$:CMV2$=CMT2$:CMV3$=CMT3$:CMV4$=CMT4$:CMV5$=CMT5$ IF RTRN%=1 THEN RTRN%=0:RETURN REM *************** REM STORE OUTBOUND TRANSACTION REM *************** StoreTrans: RSET A$=ID$:RSET B$=T$:RSET C$=GR$:RSET D$=N$:AD$=N$:TI$=TIME$:DA$=DATE$:RSET G$=DA$+" "+TI$:RSET H$=TRM$ IF SCL1%=1 THEN S1#=VAL(N$)+VAL(S1$):S1$=STR$(S1#) IF SCL2%=1 THEN S2#=VAL(N$)+VAL(S2$):S2$=STR$(S2#) IF COMDTY$="Y" THEN GOSUB SelectComod PUT #2, O% CLOSE #2 IF PERM%=1 THEN GOTO PermAccumUpdate TCO%=1:LP%=4:GOTO PrintPrinting REM **************** REM Net Sign correction. REM **************** NetSignCorrScl1: IF SCL2%=1 THEN GOTO NetSignCorrScl2 GRS$=GR$ IF VAL(GRS$)>=VAL(OUT$) THEN N#=VAL(GRS$)-VAL(OUT$):T#=VAL(OUT$):GR$=PADL$(GRS$,8," ") IF VAL(GRS$)=VAL(OUT$) THEN N#=VAL(GRS$)-VAL(OUT$):T#=VAL(OUT$):GR$=PADL$(GRS$,8," ") IF VAL(GRS$)CLEN# THEN K%=1 GetNextComod: GET #3,K% SelectNextComod: K$=UCASE$(INKEY$) IF CA$=SPACE$(16) THEN GOTO CLENLoop DISP$=CA$:PRINT DISP$ IF CR$="X" THEN K$=CHR$(8) IF CR$="Y" THEN K$=CHR$(32) IF K$=CHR$(32) THEN M$="":GOTO CLENLoop IF K$=CHR$(8) THEN GOTO LoadNewData M$=ASC(K$) IF VAL(M$)>33 AND VAL(M$)<126 THEN K%=1:GOTO GetManualComod GOTO SelectNextComod GetManualComod: GET #3,K%:CH$=ASC(CA$) IF CH$=M$ THEN M$="":GOTO SelectNextComod K%=K%+1:DISP$="SEARCHING...":PRINT DISP$ IF K%>CLEN# THEN K%=1:GOTO GetNextComod ELSE GOTO GetManualComod REM *************** REM Update comod accums and calculate factor. REM *************** LoadNewData: COMD$=CA$:U$=CE$:ZF$=CB$ IF QUICK%=1 THEN TV#=VAL(N$)/VAL(ZF$):TV$=STR$(TV#):CLOSE #3:RETURN IF LEFT$(CA$,4)="NONE" THEN COMD$=SPACE$(16):U$=SPACE$(6):ZF$=SPACE$(8):GOTO DPZERO LOAD%=VAL(CD$)+1:LOAD$=STR$(LOAD%) IF VAL(ZF$)>0 THEN TV#=VAL(N$)/VAL(ZF$):TV$=STR$(TV#):DP%=INSTR(TV$,".") IF VAL(ZF$)=0 THEN TV$="":GOTO DPZERO IF DP%=0 THEN TV$=TV$+".00":GOTO DPZERO IF LEN(TV$)=DP%+2 THEN GOTO DPZERO IF LEN(TV$)4 THEN TV$=STR$(VAL(TV$)+.01) TV$=LEFT$(TV$,DP%+2):RETURN REM *************** REM Process permanent vehicles REM *************** PermTrans: ID$=PADR$(ID$,8," "):F%=0 OPEN "PERM.DAT" FOR RANDOM AS #1 LEN=29 FIELD #1,8 AS PID$,8 AS PTWT$,8 AS ACC$,3 AS PLD$,2 AS LFCR$ DISP$="SEARCHING...":PRINT DISP$ FOR I%=1 TO PLEN# GET #1,I%: IF PID$=ID$ THEN F%=1:J%=I%: I%=PLEN# NEXT I% IF F%=0 THEN DISP$=" ID N0T F0UND":PRINT DISP$:SLEEP 2000:CLOSE #1:GOTO EnterID IF SCL1%=1 AND G1#"" THEN T$=QR$:GOTO CheckQuick IF ASC(K$)=8 OR ASC(K$)=32 THEN T$=RIGHT$(T$,8):GOTO CheckQuick IF ASC(K$)=6 AND LEN(T$)>1 THEN T$=LEFT$(T$,LEN(T$)-1):GOTO QuickTare IF K$<>"" THEN T$=T$+K$ GOTO QuickTare CheckQuick: T$=LTRIM$(T$) IF LEN(T$)<1 OR T$="X" THEN GOTO QuickIDConfig IF LEN(T$)>8 THEN DISP$=" INVALID ENTRY":PRINT DISP$:SLEEP 2000:GOTO QuickTareEntry FOR I%=1 TO LEN(T$) IF ASC(MID$(T$,I%,1))<48 OR ASC(MID$(T$,I%,1))>57 THEN INV%=1 NEXT I% QuickGTN: IF INV%=1 THEN DISP$=" INVALID ENTRY":PRINT DISP$:SLEEP 2000:GOTO QuickTareEntry IF SCL1%=1 THEN N#=G1#-VAL(T$):GR$=STR$(G1#) IF SCL2%=1 THEN N#=G2#-VAL(T$):GR$=STR$(G2#) IF N#<0 THEN INV%=1:GOTO QuickGTN N$=STR$(N#):GR$=PADL$(GR$,8," "):T$=PADL$(T$,8," "):N$=PADL$(N$,8," "):TI$=TIME$:DA$=DATE$ IF CMNT$="Y" THEN RTRN%=1:GOSUB InitComment IF COMDTY$="Y" THEN GOSUB SelectComod QO%=1:LP%=2:QUICK%=0:GOTO PrintPrinting REM *************** REM Process quick print inbound vehicles REM *************** QuickIDConfig: IF SCL1%=1 THEN T$=" 0":GR$=STR$(G1#) IF SCL2%=1 THEN T$=" 0":GR$=STR$(G2#) OPEN "QUICK.DAT" FOR RANDOM AS #1 LEN=13 FIELD #1, 3 AS QID$,8 AS QTR$,2 AS LFCR$ R%=R%+1: IF R%>99 THEN R%=1 GET #1,R% IF R%<10 THEN ID$="00"+RIGHT$(STR$(R%),1) ELSE ID$="0"+RIGHT$(STR$(R%),2) GR$=PADL$(GR$,8," "):T$=PADL$(T$,8," "):N$=" 0" RSET QID$=ID$:RSET QTR$=GR$:PUT #1,R%:CLOSE #1 TI$=TIME$:DA$=DATE$:QTC%=1:LP%=1:DISP$=" QUICK ID="+ID$:PRINT DISP$ DISP$="$"+ID$+","+GR$+","+TIME$+","+DATE$+",":SLEEP 2000:GOTO PrintPrinting REM *************** REM Process quick print outbound vehicles REM *************** GetQiuckIn: INV%=0:F%=0:QUICK%=1 FOR I%=1 TO LEN(ID$) IF ASC(MID$(ID$,I%,1))<48 OR ASC(MID$(ID$,I%,1))>57 THEN INV%=1 NEXT I% IF VAL(ID$)>99 OR VAL(ID$)<1 THEN INV%=1 IF INV%=1 THEN DISP$=" INVALID ID":PRINT DISP$:QUICK%=0:SLEEP 2000:GOTO EnterID OPEN "QUICK.DAT" FOR RANDOM AS #1 LEN=13 FIELD #1, 3 AS QID$,8 AS QTR$,2 AS LFCR$ FOR I%=1 TO QLEN# GET #1, I%: DISP$="SEARCHING...":PRINT DISP$ IF QID$=ID$ THEN F%=1:J%=1:I%=QLEN# NEXT I% IF F%=0 THEN DISP$=" INVALID ID":PRINT DISP$:SLEEP 2000:QUICK%=0:CLOSE #1:GOTO EnterID OUT$=QTR$:RSET QID$=SPACE$(3):RSET QTR$=SPACE$(8):PUT #1, J%:CLOSE #1 GOSUB NetSignCorrScl1 IF CMNT$="Y" THEN RTRN%=1:GOSUB InitComment IF COMDTY$="Y" THEN GOSUB SelectComod TI$=TIME$:DA$=DATE$:QO%=1:LP%=2:QUICK%=0:GOTO PrintPrinting REM ******************************************** REM PROCESS AUTO ASSIGN VEHICLE ID REM ******************************************** AutoAssign: ID$="":COMD$="":ZF$="":TV$="":U$="":PT$="":PA$="":PL$="":CMV1$="":CMV2$="":CMV3$="":CMV4$="":CMV5$="" IF AA%<100 THEN AA%=99 AA%=AA%+1 IF AA%>999 THEN AA%=100 ID$=STR$(AA%):ASS$=ID$:ID$=RIGHT$(ID$,3)+" ":AFLG%=1 IF SCL1%=1 THEN GR$=STR$(G1#) IF SCL2%=1 THEN GR$=STR$(G2#) GR$=PADL$(GR$,8," "):GOTO InOutCheck REM ******************************************** REM PROCESS GROSS PRINT VEHICLES REM ******************************************** GrossPrint: ID$="":COMD$="":ZF$="":TV$="":U$="":PT$="":PA$="":PL$="":CMV1$="":CMV2$="":CMV3$="":CMV4$="":CMV5$="":ITIME$="":IDATE$="" IF SCL1%=1 THEN GR$=STR$(G1#) IF SCL2%=1 THEN GR$=STR$(G2#) GR$=PADL$(GR$,8," "):T$=" 0":N$=" 0":TI$=TIME$:DA$=DATE$:GTC%=1:LP%=5 REM ******************************************** REM EXIT SCALE ROUTINE REM ******************************************** PrintPrinting: IF LPC$="Y" AND LL%>0 THEN GOTO LOOP_EXIT IF VAL(T$)>0 THEN DISP$="NET "+N$+" "+Units$ ELSE DISP$="PROCEDE INBOUND" IF SCL1%=1 OR SCL1%=3 THEN GRE#=(G1#-1000):O1%=1:PRINT DISP$:SLEEP 2000 IF SCL2%=1 THEN GRE#=(G2#-1000):O3%=1:PRINT DISP$:SLEEP 2000 DISP$="EXIT SCALE N0W" PrintExit: IF FILL1%=1 THEN FILL1%=0:O1%=0:O3%=1:O4%=1:GOSUB SCLP1_MO:O1%=1:O2%=1:GOTO MainSelect IF FILL2%=1 THEN FILL2%=0:O3%=0:O1%=1:O2%=1:GOSUB SCLP2_MO:O4%=1:O4%=1:GOTO MainSelect K$=UCASE$(INKEY$):DISP$="EXIT SCALE N0W":PRINT DISP$ IF SCL1%=1 AND G1#2000 THEN O2%=0:RETURN IF I2%=0 THEN O1%=0:O2%=0:RETURN DISP$=" ENTER SCALE A":PRINT DISP$ GOTO SCL1_ON_LOOP1 SCL1_ON_LOOP3: IF G1#>2000 THEN O5%=0:RETURN IF I4%=0 THEN O5%=0:O6%=0:RETURN DISP$=" ENTER SCALE A":PRINT DISP$ GOTO SCL1_ON_LOOP3 SCL1_MO: IF M1%=0 AND LL%=1 THEN O1%=0:RETURN IF M1%=0 AND LL%=3 THEN O6%=0:RETURN DISP$="SCALE IN M0TI0N":PRINT DISP$ GOTO SCL1_MO REM ******************************************** REM SCALE 2 ENTRANCE LOOP CONTROLS REM ******************************************** SCL2_ON_LOOP2: IF G2#>2000 THEN O4%=0:RETURN IF I3%=0 THEN O3%=0:O4%=0:RETURN DISP$=" ENTER SCALE B":PRINT DISP$ GOTO SCL2_ON_LOOP2 SCL2_ON_LOOP4: IF G2#>2000 THEN O7%=0:RETURN IF I5%=0 THEN O7%=0:O8%=0:RETURN DISP$=" ENTER SCALE B":PRINT DISP$ GOTO SCL2_ON_LOOP4 SCL2_MO: IF M2%=0 AND LL%=2 THEN O3%=0:RETURN IF M2%=0 AND LL%=4 THEN O8%=0:RETURN DISP$="SCALE IN M0TI0N":PRINT DISP$ GOTO SCL2_MO REM ******************************************** REM SCALE EXIT LOOP CONTROLS REM ******************************************** LOOP_EXIT: IF LL%=1 THEN DISP$="NET "+N$+" "+Units$:PRINT DISP$:SLEEP 3000 IF LL%=1 THEN DISP$=" EXIT SCALE N0W":PRINT DISP$:O1%=1:GOTO EXIT_OFF1 IF LL%=2 THEN DISP$="NET "+N$+" "+Units$:PRINT DISP$:SLEEP 3000 IF LL%=2 THEN DISP$=" EXIT SCALE N0W":PRINT DISP$:O3%=1:GOTO EXIT_OFF2 IF LL%=3 THEN DISP$="NET "+N$+" "+Units$:PRINT DISP$:SLEEP 3000 IF LL%=3 THEN DISP$=" EXIT SCALE N0W":PRINT DISP$:O6%=1:GOTO EXIT_OFF1 IF LL%=4 THEN DISP$="NET "+N$+" "+Units$:PRINT DISP$:SLEEP 3000 IF LL%=4 THEN DISP$=" EXIT SCALE N0W":PRINT DISP$:O8%=1:GOTO EXIT_OFF2 EXIT_OFF1: GRE#=(G1#-1000) EXIT_OFF1_LOOP: K$=UCASE$(INKEY$) IF G1#VAL(GR$)-200 REM G1#>2000 PRINT DISP$ WEND GOTO FillingNow WhileScl2Fill: WHILE G2#VAL(GR$)-200 REM G2#>2000 PRINT DISP$ WEND FillingNow: K$=INKEY$ IF SCL1%=1 THEN PFILL#=G1#-VAL(GR$):FILL1%=1 IF SCL2%=1 THEN PFILL#=G2#-VAL(GR$):FILL2%=1 PFIL$=STR$(ABS(PFILL#)):PFIL$=PADL$(PFIL$,6," "):PRTFILL$="NET WGT"+PFIL$+" "+Units$ IF SCL1%=1 AND G1#<2000 THEN DISP$="FILLING AB0RTED!":PRINT DISP$:SLEEP 2000:GOTO MainSelect IF SCL2%=1 AND G2#<2000 THEN DISP$="FILLING AB0RTED!":PRINT DISP$:SLEEP 2000:GOTO MainSelect DISP$=PRTFILL$:PRINT DISP$ IF K$=CHR$(8) AND SCL1%=1 THEN SCL1%=0:OUT$=STR$(G1#):OUT$=PADL$(OUT$,8," "):GOTO OpenOutbound IF K$=CHR$(8) AND SCL2%=1 THEN SCL2%=0:OUT$=STR$(G2#):OUT$=PADL$(OUT$,8," "):GOTO OpenOutbound GOTO FillingNow REM ********************************* REM Enables comport for badge reader REM ********************************* SWIPE: REM IF MLT%=0 THEN PRINT "NO MULTIFUNCTION":SLEEP 1500:PRINT "BADGE DISABLED!":SLEEP 1500:EBDG$="N":RETURN BADGE$="" OPEN "COM1: TRM13 EVENT" FOR INPUT AS #5 ON EVENT #5 GOSUB ProcessBadge FLUSH #5:INPUT #5, SWP$ RETURN REM ********************************* REM Check Data received from Host PC REM ********************************* HostTsk: If Len(X$)<>0 then goto ChkRecv Print "Invalid Command": Sleep 500 RecvRst: Print #6, CHR$(21) Flush #6: X$="": Input #6, X$; RA$="": Return ChkRecv: If Left$(X$,1)=CHR$(5) then goto ChkLogin If Left$(X$,1)=CHR$(4) then goto ChkLogout If Left$(X$,1)<>CHR$(1) then goto RecvRst RA$=Mid$(X$,2,1): If RA$="3" then goto ChkNext Print #6, CHR$(6) ChkNext: Flush #6: X$="": Input #6, X$; Return ChkLogin: Print "Host_LOG_ON...": Sleep 500 Print #6, CHR$(6) goto RecvRst ChkLogout: Print "Host_LOG_OFF...": Sleep 500 Print #6, CHR$(6) goto RecvRst