' Program..: BAR.BAS ' Author...: PeatSoft ' Date.....: 2025 ' Version..: QBASIC ' Note(s)..: This program generates a status bar for use when ' performing multiple searches or lengthy calculations ' to graphically illustrate program status to the user. ' Converted from BAR.PRG (dBase) DECLARE SUB buildbar (row AS INTEGER, title AS STRING, colr AS INTEGER) DECLARE SUB barstat (cnt AS INTEGER, colr AS INTEGER) DIM SHARED db3p AS STRING DIM SHARED cnt AS INTEGER DIM SHARED bar AS STRING DIM SHARED dbar AS STRING DIM SHARED barline AS INTEGER bar = STRING$(52, CHR$(219)) ' Define bar with character 219 dbar = STRING$(52, CHR$(205)) ' Define dbar with character 205 CLS CALL buildbar(14, "Percent Completed", 2) cnt = 0 DO WHILE cnt < 101 CALL barstat(cnt, 7) cnt = cnt + 5 FOR i = 0 TO 1000000: NEXT LOOP END ' Update the bar status for a specific color SUB barstat (cnt AS INTEGER, colr AS INTEGER) COLOR colr IF cnt > 0 THEN LOCATE barline, 14 PRINT STRING$(cnt \ 2, CHR$(219)); ' Display filled part of the bar IF cnt MOD 2 <> 0 THEN PRINT CHR$(221); ' Display the appropriate character for odd counts END IF END IF COLOR 7 END SUB ' Build the status bar SUB buildbar (row AS INTEGER, title AS STRING, colr AS INTEGER) COLOR colr LOCATE row, (80 - LEN(title)) \ 2 PRINT title LOCATE row + 3, 13 PRINT "0 10 20 30 40 50 60 70 80 90 100" LOCATE row + 4, 12 PRINT CHR$(201) + MID$(dbar, 1, 52) + CHR$(187) LOCATE row + 5, 12 PRINT CHR$(186) + STRING$(52, " ") + CHR$(186) LOCATE row + 6, 12 PRINT CHR$(200) + MID$(dbar, 1, 52) + CHR$(188) COLOR 7 barline = row + 5 LOCATE barline, 14 PRINT ""; END SUB