* DATE 04/09/85 17:23 * title.bk * this module makes a report of all books by title STOR CHR(peek (063)) TO dr REST from bdata additive * make sure index is in right order STOR 'Y' TO command ERAS STOR 'T' TO select @ 10,10 SAY 'This module print a list of all books in the file. The printer' @ 11,10 SAY 'should be set for 132 characters per line if you have not ' @ 12,10 SAY 'set the program to handle this automatically. The report is' @ 13,10 SAY 'designed to be printed on 8 x 11 paper loaded normally in the' @ 14,10 SAY 'printer.' @ 16,10 SAY 'Do you want the report alphabetically by uthor or itle ? ' @ 16,74 GET select PICTURE '!' READ DO WHIL @(select,'AT')=0 @ 16,74 GET select PICTURE '!' READ ENDD CLEA GETS IF select = 'A' SET index TO &dr.:&aindex ELSE SET INDEX TO &dr.:&tindex ENDI RELE select GO TOP @ 18,10 SAY 'Are you ready to proceed ? ' @ 18,40 GET command PICTURE '!' READ IF COMMAND = 'Y' REST from printer.dat additive ERAS STOR 0 TO pageno STOR 0 TO counter STOR t TO more IF PRINTER = 'Y' SET PRINT ON SET MARGIN TO 5 IF SHIFT = 'Y' SET CONSOLE OFF ? CHR(chr121) + CHR(chr122) + CHR(chr123) SET CONSOLE ON ENDI shift ENDI printer DO WHIL more * do page counter etc IF $(date(),4,1) = '0' STOR $(date(),5,1) TO date2 ELSE STOR $(date(),4,2) TO date2 ENDI DO CASE CASE $(date(),1,2) = '01' STOR 'January ' + date2 + ', 19' + $(date(),7,2) TO date1 CASE $(date(),1,2) = '02' STOR 'February ' + date2 + ', 19' + $(date(),7,2) TO date1 CASE $(date(),1,2) = '03' STOR 'March ' + date2 + ', 19' + $(date(),7,2) TO date1 CASE $(date(),1,2) = '04' STOR 'April ' + date2 + ', 19' + $(date(),7,2) TO date1 CASE $(date(),1,2) = '05' STOR 'May ' + date2 + ', 19' + $(date(),7,2) TO date1 CASE $(date(),1,2) = '06' STOR 'June ' + date2 + ', 19' + $(date(),7,2) TO date1 CASE $(date(),1,2) = '07' STOR 'July ' + date2 + ', 19' + $(date(),7,2) TO date1 CASE $(date(),1,2) = '08' STOR 'August ' + date2 + ', 19' + $(date(),7,2) TO date1 CASE $(date(),1,2) = '09' STOR 'September ' + date2 + ', 19' + $(date(),7,2) TO date1 CASE $(date(),1,2) = '10' STOR 'October ' + date2 + ', 19' + $(date(),7,2) TO date1 CASE $(date(),1,2) = '11' STOR 'November ' + date2 + ', 19' + $(date(),7,2) TO date1 CASE $(date(),1,2) = '12' STOR 'December ' + date2 + ', 19' + $(date(),7,2) TO date1 ENDC STOR pageno + 1 TO pageno STOR 7 TO lineno ERAS IF .NOT. EOF ? caption ? ' ' ? 'Report of ' +date1 + '. ' + 'PAGE ' + STR(pageno,2) ? "--------------------------------------------------------------------------------------------------------------------------" ? ' ' ENDI .NOT. EOF * now fill up rest of page to 55 lines with names etc DO WHIL lineno < 55 * now do a page if not end of file IF .NOT. EOF STOR counter + 1 TO counter IF auth1 <> ' ' IF auth2 = ' ' .AND. auth3 = ' ' ? TRIM(auth1) +'. '+TRIM(title)+'.' ENDI IF auth2 <> ' ' .AND. auth3 = ' ' ? TRIM(auth1) + ' and ' + TRIM(auth2)+'. '+TRIM(title)+'.' ENDI IF auth2 <> ' ' .AND. auth3 <> ' ' ? TRIM(auth1) + CHR(187)+' '+TRIM(auth2) +CHR(187)+' and '+TRIM(auth3)+'. '+TRIM(title)+'.' ENDI ELSE ? TRIM(title)+'.' ENDI STOR ' ' TO line IF city <> ' ' STOR line +TRIM(city) + ': ' TO line ENDI IF publish <> ' ' STOR line + TRIM(publish) +'. ' TO line ENDI IF year <> ' ' STOR line + year + '. ' TO line ENDI IF price <> ' ' STOR line + ' $' + price TO line ENDI ? ' '+ line IF comment <> ' ' ? ' '+TRIM($(comment,1,60)) + ' ' + $(comment,61,60) STOR lineno + 1 TO lineno IF $(comment,121,2) <> ' ' ? ' '+TRIM($(comment,121,60))+' ' + $(comment,181,47) STOR lineno+ 1 TO lineno ENDI ENDI ? ' ' STOR lineno+3 TO lineno SKIP * however, skip again if record deleted IF * SKIP ENDI ELSE STOR f TO more STOR 60 TO lineno ENDI not EOF ENDD while lineno < 55 IF .NOT. EOF SET PRINT OFF @ 20,00 SAY ' ********************************************************************* ' @ 21,00 @ 22,00 @ 21,10 SAY 'CHANGE PAPER IF NECESSARY AND THEN HIT ANY KEY TO RESTART' SET CONSOLE OFF WAIT SET CONSOLE ON IF printer = 'Y' SET PRINT ON ENDI ENDI ENDD more SET PRINT OFF @ 20,00 SAY ' ********************************************************************* ' @ 21,00 @ 22,00 @ 21,10 SAY 'CHANGE PAPER IF NECESSARY AND THEN HIT ANY KEY TO RESTART' SET CONSOLE OFF WAIT SET CONSOLE ON IF printer = 'Y' SET PRINT ON ENDI ? ' ' ? "------------------------------------------------------------------------------------" ? ' ' ? ' THE TOTAL NUMBER OF BOOKS LISTED WAS ' + STR(counter,3,0) * if it was on turn it off EJEC SET PRINT OFF IF PRINTER = 'Y' .AND. SHIFT = 'Y' SET PRINT ON ? CHR(chrreg1) + CHR(chrreg2) + CHR(chrreg3) SET PRINT OFF ENDI printer ENDI command = 'Y' * release local variables RELE pageno, lineno, counter * restore memory varibles SET INDEX TO &dr.:&tindex STOR t TO more STOR t TO first