home *** CD-ROM | disk | FTP | other *** search
-
- REMARK *************************************************************
- REMARK * ACCOUNTS RECEIVABLE UPDATE SORT (A/R03A) *
- REMARK * VERS. OF 10.45 PM 5/13/79 *
- REMARK * ======================================================= *
- REMARK * THIS PROGRAM USES THE SHELL-METZNER SORTING ALGORITHM *
- REMARK * TO SORT A TRANSACTION FILE IN DECREASING INCREMENTS AND *
- REMARK * WRITE THE SORTED RECORDS OUT TO A WORKFILE. *
- REMARK * ONCE THE WORKFILE IS COMPLETELY WRITTEN, IT REPLACES THE *
- REMARK * FILE USED AS INPUT. *
- REMARK *************************************************************
-
- ZERO$="000000"
- DIM DATA$(1000),L4(2),D(13)
- %INCLUDE CURSOR
- GOTO 6000
- %INCLUDE A/R-INV
- %INCLUDE A/R-INFO
-
-
-
-
- 6000 CONSOLE
- PRINT CLEAR.SCREEN$;"A/R UPDATE"
- PRINT "KEY RETURN TO BEGIN; ENTER 'END' TO EXIT"
- INPUT LINE A$
- IF A$="END" THEN \
- PRINT CLEAR.SCREEN$;"A/R UPDATE LOADING MENU":\
- CHAIN "A/P000"
- PRINT CLEAR.SCREEN$;"SORT PHASE"
- PRINT "WORKING...DO NOT INTERRUPT"
- PRINT
- INPUT.FILE$="A/R0F020.DAT"
- OUTPUT.FILE$="WORKFILE.DAT"
- RECLENGTH=226
- OPEN INPUT.FILE$ RECL RECLENGTH AS 1
- OPEN "A/R0F130.DAT" AS 5
- FILE.NO=5:GOSUB 3.14
- IF AR.TRANFILE.EXTENT=0 THEN 8000
- IF END #1 THEN 7000 REMARK SET END-OF-FILE BRANCH
-
- REMARK ********** READ DATA RECORDS AND STRIP OFF KEY ELEMENTS FOR USE IN THE SORT **********
-
-
- 6050 READ #1; VAR$,VAR1
- RECORD.COUNT%=RECORD.COUNT% + 1
- DATA$(RECORD.COUNT%)=VAR$
- PRINT CURSOR.HOME$:PRINT:PRINT "RECORD #";RECORD.COUNT%
-
- X0$=ZERO$+STR$(VAR1)
- X0$=RIGHT$(X0$,6) REMARK CONVERT INVOICE # TO ALPHANUMERIC
- FOR I%=1 TO 6 STEP 2
- DATA$(RECORD.COUNT%)=DATA$(RECORD.COUNT%)+CHR$(VAL(MID$(X0$,I%,2)))
- NEXT I% REMARK ROUTINE TO PACK INVOICE NUMBER
- X0$=ZERO$+STR$(RECORD.COUNT%)
- X0$=RIGHT$(X0$,4)
- X0%=VAL(LEFT$(X0$,2))
- X1%=VAL(RIGHT$(X0$,2))
- DATA$(RECORD.COUNT%)=DATA$(RECORD.COUNT%)+CHR$(X0%)+CHR$(X1%)
- GOTO 6050 REMARK GET THE NEXT RECORD
- 7000 CLOSE 1
- OPEN INPUT.FILE$ RECL RECLENGTH AS 1
- PRINT "NUMBER OF RECORDS IN FILE =";RECORD.COUNT%
- M%=RECORD.COUNT%
- 7010 M%=M%/2 REMARK DIVIDE THE SORT INTERVAL IN HALF
- IF M%=0 THEN GOTO 7150 REMARK IF SORT INTERVAL IS EXHAUSTED,\
- RE-WRITE THE ORDERED FILE.
- K%=RECORD.COUNT%-M%
- J%=1
- 7040 I%=J%
- 7050 L%=I% + M%
-
- IF DATA$(I%) <= DATA$(L%) THEN GOTO 7120
- TEMP$=DATA$(I%)
- DATA$(I%)=DATA$(L%)
- DATA$(L%)=TEMP$
- I%=I% - M%
- IF I% > 0 THEN GOTO 7050
- 7120 J%=J%+1
- IF J% > K% THEN GOTO 7010 ELSE GOTO 7040
- 7150 PRINT CLEAR.SCREEN$;
- PRINT "SORT PHASE ENDED"
- PRINT "WRITING SORTED RECORDS TO WORKFILE"
- PRINT "WORKING... DO NOT INTERRUPT"
- CREATE OUTPUT.FILE$ RECL RECLENGTH AS 2
- FOR OUTPUT.COUNT%=1 TO RECORD.COUNT%
- X0$=RIGHT$(DATA$(OUTPUT.COUNT%),2)
- X0%=ASC(LEFT$(X0$,1))
- POINTER%=X0% * 100
- X0%=ASC(RIGHT$(X0$,1))
- POINTER%=POINTER% + X0%
- FILE.NO=1:REC.NO%=POINTER%:GOSUB 3400
- FILE.NO=2:REC.NO%=OUTPUT.COUNT%:GOSUB 3450
- NEXT OUTPUT.COUNT%
- DELETE 1
- CLOSE 2
- A%=RENAME(INPUT.FILE$,OUTPUT.FILE$)
- 8000 CHAIN "A/R03B"
-