! FLD: Fixed Length record Dump COMMON (FCSERR) ERR1%,ERR2% CALL FCSINI BY REF PROMPT$ = CR + LF +"FLD>" LENPROMPT% = LEN(PROMPT$) .DEFINE .RECORDSIZE%=1000% MAP (RECODR) R$=.RECORDSIZE% .DEFINE .IN%=30% .DEFINE .OUT%=29% MAP(CRAP)X$=8% MAP(CRAP)X MAP(CRAP)X% MAP(CRAP)XC$=2% MAP (CRAP) XC1$=1%, XC2$=1% {OCT.B4S} ON ERROR GOTO 31000 PROMPT$ = CR + LF + "FLD" + ">" PZ% = LEN(PROMPT$) 50 ! here to recieve a command line CALL GCL. (PROMPT$,PZ%,R$,.RECORDSIZE%,GZ%,EG%,EF%,ED%) IF EG%= 246% THEN 32760 IF EG% THEN PRINT "FLD:trouble:",EG%,EF%,ED% \ STOP UNTIL 0% COMMAND$ = EDIT$(LEFT$(R$,GZ%),13%) IF LEN(COMMAND$)=0% THEN 50 ! null commands are OK E% = POS(COMMAND$,"=",1%) IF E%=0% THEN 50 S% = POS(COMMAND$,"/",1%) IF S%=0% THEN 50 O$ = SEG$(COMMAND$,1%,E%-1%) CALL OPEN.(O$,"W",.OUT%,0%) IF ERR1% THEN PRINT "FLD:Trouble:Open Output:"+O$+":",ERR1%,ERR2% \ STOP UNTIL 0% I$ = SEG$(COMMAND$,E%+1%,S%-1%) R% = VAL(RIGHT$(COMMAND$,S%+1%)) IF R%>.RECORDSIZE% THEN PRINT "can only handle records up to";.RECORDSIZE%;" length!"\GOTO 50 CALL OPEN.(I$,"R",.IN%,R%) IF ERR1% THEN PRINT "FLD:Trouble:Open Input:"+I$+":",ERR1%,ERR2% \ STOP UNTIL 0% N% = 0% ! record number 200 ! here to dump next record N% = N% + 1% R$ = STRING$(.RECORDSIZE%,0%) CALL GET.(.IN%,R$,N%) IF ERR1%=-10% THEN 31000 IF ERR1% THEN PRINT "FLD:Trouble:Input:",ERR1%,ERR2% \ STOP UNTIL 0% B$="rec# "+NUM1$(N%)+"." CALL PRINT.(.OUT%,B$) IF ERR1% THEN PRINT "FLD:Trouble:Output Record Number:",ERR1%,ERR2% \ STOP UNTIL 0% FOR I% = 1% TO R% STEP 2% X$ = MID$(R$,I%,8%) B$ = "" B$ = B$ + NUM1$(I%-1%) + ".:" B$ = B$ + " " + FNC$(XC1$) + " " + FNC$(XC2$) B$ = B$ + HT + NUM1$(X%) B$ = B$ + HT + "#" + FN.OCT$(X%) B$ = B$ + HT + RAD$(X%) B$ = B$ + HT + NUM1$(ASCII(XC$))+":"+NUM1$(ASCII(RIGHT$(XC$,2%))) B$ = B$ + HT + NUM$(X) CALL PRINT.(.OUT%,B$) IF ERR1% THEN PRINT "FLD:Trouble:Output Word:",ERR1%,ERR2% \ STOP UNTIL 0% NEXT I% GOTO 200 31000 ! here to close this command PRINT "dumped";N%-1%;" records" ! here to close files CALL CLOSE.(.OUT%) CALL CLOSE.(.IN%) GOTO 50 ! DEF FNC$(A$) C.A$=LEFT$(A$,1%) C.A%= ASCII(C.A$) IF C.A% > 127% THEN C.A% = C.A% - 128% \ C.S$ = "*" ELSE C.S$ = " " IF C.A% = 127% THEN FNC$ = C.S$ + "RB" \ FNEXIT IF C.A%>= 32% THEN FNC$ = C.S$ + " " + C.A$ \ FNEXIT C.A%= C.A%+ 64% FNC$ = C.S$ + "^" + CHR$(C.A%) FNEND 32760 ! here with done program END