:* program to capture * :* afk flagged pos * :* ray 10/99 * .TOP OA(250,50) :open a, (#recs,recsize) OB(22,28) :open b, flag file OE(1,20) :file to hold id DB(0)="" DB(1)="Broken Trav. Guide" DB(2)="Trav. Shuttle Stop" DB(3)="Bad Module" DB(4)="Bad Heat" DB(5)="Uniten" DB(6)="Push Rod Guide" DB(7)="Roll Out Switch" DB(8)="Tube Tray Switch" DB(9)="Quality Control" DB(10)="Take-Up" DB(11)="Base Plate" DB(12)="Wrap Drive Roll" DB(13)="W-1 Guide" DB(14)="Air Jet" DB(15)="Belly Band Guide" DB(16)="Cradle Cylinder" DB(17)="No Oil Roller" DB(18)="String Up Arm" DB(19)="End Cap Cylinder" DB(20)="Venturi" DB(21)="Yoke" D#1=0 :rec ctr HA=0 :empty a, in case redo S.FULL :chk all loaded .TOP3 HE=0 :rec position D$0="" P"AFK FLAG" :display title screen P"SCAN UTILITY" P" VER. 1.0" P"ENTER ID # " A G$0="CLEARALL".RDO:secret clear opt G$0="".TOP3 D#3=0 D#3=[$0] :get len G#3>6 .TOP3 :le 6 or redo D$0="@"+$0 :so we know what it is RE :log id in file e D$0="" B00 P"\e[2J" .CHOICE D$0="" P"\e[2J1. Input Data" P"2. Transmit " P"Enter Choice:" A :take any input, for now G$0="E".TOP3 :back S$0="1" .DATE :start input G$0="2" .XMIT2 :transmit data G.CHOICE :else redo .START D$0="" :init vars D$1="" :fbuffer D$2="" :str_cmp D$3="" :temp_str D#0=0 :status reg, do not use! D#2=0 :recs_xmitted D#3=0 :length_ctr D#4=0 :temp_holder D#5=0 :date D#6=0 :attempt ctr in .xmit2 D#7=0 :str_ctr D#8=0 :num_flag D#9=0 :xmit_err_ctr G#1>=200.WARN :test for max recs .DATE B00 D$0="" P"\e[2JEnter Date as" P" MMDDYY " A :get date input G$0="E".CHOICE D#3=[$0] :get len G#3>6 .ERR :gt 6 redo G#3<6 .ERR :lt 6 redo S.VALNUM :ensure all # G#8<>1.ERR :must return 1 D$2="" :str_cmp D$2=$0M2,1 :month G$2>"12".ERR G$2="00".ERR D$2="" :str_cmp D$2=$0M2,3 :day G$2>"31".ERR G$2="00".ERR D$2="" :str_cmp D$2=$0M2,5 :year G$2>"99".ERR G$2<"00".ERR G.MACHNUM .ERR P\e[2J"ERROR!" P" " P" " B11111 W1 G.DATE .MACHNUM B00 C#5=$0 .MACHNB D$0="" P"\e[2JENTER MACH # " A G$0="E".CHOICE G$0<"1".ERR2 :no decimal D#3=0 D#3=[$0] :get len G#3>2 .ERR2 :le 6 G$0="0".ERR2 :no zero machine S.VALNUM :ensure all # G#8<>1.ERR2 :must return 1 C#4=$0 :convert to # G#4>48.ERR2 G$0="2".POSLOW :machines # 1-48 G$0="4".POSLOW :some need poslow G$0="6".POSLOW :val, some poshi G$0="8".POSLOW : "" G$0="10".POSLOW : "" G$0="12".POSLOW G$0="14".POSLOW G$0="16".POSLOW G$0="18".POSLOW G$0="20".POSLOW G$0="24".POSLOW G$0="25".POSLOW G$0="28".POSLOW G$0="29".POSLOW G$0="32".POSLOW G$0="33".POSLOW G$0="36".POSLOW G$0="37".POSLOW G$0="40".POSLOW G$0="41".POSLOW G$0="44".POSLOW G$0="45".POSLOW G$0="48".POSLOW G.POSHI .ERR2 P"ERROR!" P" " P"INVALID MACH# " P$0 B11111 W1 G.MACHNB .POSLOW B00 I$0"," :field sep D$1=$0 :fbuffer=mach# .POSLOW1 D$0="" P"\e[2J" D$0="MACHINE # "+$1 P$0 :print fbuffer D$0="" P"ENTER POS# (1-108) " P" " A G$0="E".CHOICE G$0="0".ERR3 S.VALNUM :ensure all # G#8<>1.ERR3 :must return 1 C#4=$0 :convert to # G#4>108.ERR3 :to test G.FLAG .POSHI B00 I$0"," :field sep D$1=$1+$0 :add date+mach# .POSHI1 D$0="" P"\e[2J" D$0="MACHINE # "+$1 P$0 :print fbuffer D$0="" P"ENTER POS# (109-216) " P" " A G$0="E".CHOICE D#3=0 D#3=[$0] :get len G#3<=2.ERR4 :no le 2 S.VALNUM :ensure all # G#8<>1.ERR4 :must return 1 C#4=$0 :convert to # G#4<109.ERR4 :to test G#4>216.ERR4 G.FLAG .ERR3 P"ERROR!" P"INVALID POS# " P$0 P"RANGE 1-108" B11111 W1 G.POSLOW1 .ERR4 P"ERROR!" P"INVALID POS# " P$0 P"RANGE 109-216" B11111 W1 G.POSHI1 .FLAG B00 I$0"," :field sep D$1=$1+$0 :fbuffer=fbuffer+pos# .FLAG2 D$0="" P"\e[2JENTER FLAG #" P"FOR MACH/POS:" P$1 P" " A G$0="E".CHOICE G$0="0".ERR5 C#4=$0 :convert to # G#4>21.ERR5 S.VALNUM :ensure all # G#8<>1.ERR5 :must return 1 D$3=$0 :temp_str=flag .VERIFY D$0="" D$0="MACH/POS "+$1 P$0 D$0="" D$0="FLAG: "+$3 :show them what P$0 :they selected D$0="" :from file b C#4=$3 PB(#4) P"Selected /N " A G$0="".OKFLAG G$0="E".CHOICE G$0="Y".OKFLAG G$0="N".FLAG2 G.VERIFY .OKFLAG D$0="" B00 I$0"," :field sep D$1=$1+$3 :fbuffer=fbuffer+flag G.ADD :file record .ERR5 P"ERROR!" P"INVALID FLAG " P$0 P"RANGE 1-21" B11111 W1 G.FLAG2 .ADD D#1=#1+1 :incr ctrs C$3=#1 D$2="" :str_cmp D$2=$1 :hold fbuffer temp D$1=$3+"." :fbuffer=temp_str+. D$1=$1+$2 :fbuffer+=+temp_str D$1=$1+$0 :fbuffer+=temp_str D$0=$1 :add fbuffer to file TA RA :add to file a B0100 D$1="" :fbuffer='' D$2="" :str_cmp G#1>=250.WARN :test for max recs S#1>200.WARN1 :tell them it's filling P"--------------------" D$0="" G.MACHNB :next scan .XMIT2 :transmit menu D$0="" P"\e[2J" P"1) Transmit File" P"2) Exit" P"Enter Option -->> " A G$0="1".XMITS G$0="2".CHOICE B11111 G.XMIT2 .XMITS P"\e[2J" P"TRANSMITTING" W5 .BEGIN D$0="" YMP;5000 G#0=1.FAIL2 :ok xmit rtns 0 G#0>0.BEGIN D$0="" D$0="BEGIN" XMP,$0;1000 G#0=1.FAIL2 G#0>0.BEGIN W1 D$0="" C$0=#5 D$0=$0+E(0) G[$0]>0.XOK2 D$0="" D$0="@NTRAKKER" .XOK2 D$2="" :give the host C$2=#1 :ctr ttls D$2="!"+$2 :sep with ! D$0=$0+$2 XMP,$0;6000 W1 G#0=1.FAIL2 D$0="" D#9=0 H#3=A G#3<0.SNDE2 D#2=0 .TOPFA2 D#2=#2+1 .YY2 D$0="" D#4=0 D#4=#2-1 D$0=A(#4) D$2=$0M20,1 P$2 XMP,$0;1000 D#6=0 :rec try ctr G#0=1.FAIL2 G#0>0.BXT2 .RERX D$0="TX" XMP,$0;1000 G#0=1.FAIL2 D$0="" YMP;5000 G#0=1.FAIL2 D$2=$0M3,1 :first 3 G$2="ACK".TB2 :got it msg D#6=#6+1 :else keep track G#6>10.FAIL2 :until 10 G.RERX :redo .BXT2 D#9=#9+1 G#9<6.YY2 G.FAIL2 .TB2 D#9=0 G#2<=#3.TOPFA2 D#9=0 .SNDE2 D$0="OUT" XMP,$0;1000 D#6=0 :try ctr G#0=1.FAIL2 G#0>0.SNDE2 .YM2 D$0="" YMP;5000 G#0=1.FAIL2 :timeout D$2=$0M3,1 :first 3 char G$2="ACK".YM2 :keep waiting G$2="ALL".TT2 :finish msg D#6=#6+1 :else keep track G#6>10.FAIL2 :until 10 G.YM2 :redo D#9=#9+1 G#9<4.YM2 G#9<6.SNDE2 .FAIL2 P"TRANSMIT FAILED!" B11111111 W5 D#9=0 D$0="" G.CHOICE Q .TT2 P"TRANSMIT COMPLETE" B1010 W5 P"\e[2J" P"'YES' to Clear or" P" Any Key=Resume " D$0="" A W5 G$0<>"YES".XMIT2 HA=0 D#1=0 D#9=0 D$0="" G.CHOICE .CNT P"RECORDS RECORDED:" C$0=#1 P$0 P" OF 200 MAX" W5 :just advisory D$0="" P"\e[2J" G.CHOICE .WARN D$0="" P"\e[2J" :force xmit P"MEMORY FULL!" :when full P"MUST UPLOAD!" W10 B1111 G.XMIT2 .WARN1 :tell them P"\e[2J" :it's almost P"MEMORY FILLING!":full P"PLEASE UPLOAD" P"SOON!" W5 Q .RDO :clears all P"\e[2J" P"ALL DATA" P"CLEARED " P" " B1100 W3 D$0="" G.TOP .FULL P"\e[2J" P"Initialization" P"Complete" W3 Q .VALNUM D#3=0 :holds len D$3="" :hold curr char D#7=1 :pos counter D#8=0 :0=bad,1=ok D#3=[$0] :get len of input .NEXT D$3=$0M1,#7 :extract char G$3="".COMP :"", finished G$3<"0".NUMFAIL G$3>"9".NUMFAIL D#7=#7+1 :go find G.NEXT :next char .COMP D#8=1 :str all num! Q .NUMFAIL Q :return