* DATE 04/26/85 21:15 * special.bk prepares special reports STOR t TO first STOR t TO more1 SET COLON OFF DO WHIL more1 IF first ERAS STOR 'Detailed Report Module' TO mode @ 0,26 SAY mode @ 1, 0 SAY "+---------------------------------------" @ 1,39 SAY "---------------------------------------+" @ 2,10 SAY "To perform selective report search input only info" @ 2,60 SAY "rmation" @ 3,10 SAY "which is required for search. Where more than one" @ 3,61 SAY "selection" @ 4,10 SAY "in a field, you must perform multiple searches." @ 6, 4 SAY "Title:" @ 7, 1 SAY "Subtitle:" @ 08, 0 SAY "Authors 1:" @ 08,44 SAY "2:" @ 09, 8 SAY "3:" @ 09,41 SAY "Year:" @ 09,64 SAY "Price:" @ 10, 0 SAY "Publisher:" @ 11, 3 SAY "Street:" @ 12, 5 SAY "City:" @ 12,40 SAY "State:" @ 12,66 SAY "Zip:" @ 13, 0 SAY "Subject 1:" @ 13,44 SAY "2:" @ 14, 8 SAY "3:" @ 14,44 SAY "4:" @ 15, 8 SAY "5:" @ 16, 1 SAY "Comments:" @ 17,62 SAY "Updated:" @ 18, 0 SAY " -------------------------------------------------" @ 18,50 SAY "-----------------------------" ENDI STOR ' ' TO extra STOR 0 TO count STOR '.NOT.*' TO finder STOR f TO first STOR ' ' TO blnks STOR blnks+$(blnks,1,20) TO mtitle STOR blnks+$(blnks,1,20) TO msubtit STOR $(blnks,1,20) TO mauth1 STOR $(blnks,1,20) TO mauth2 STOR $(blnks,1,20) TO mauth3 STOR $(blnks,1,4) TO myear STOR $(blnks,1,6) to mprice STOR $(blnks,1,30) TO mpublish STOR $(blnks,1,17) TO mstreet STOR $(blnks,1,15) TO mcity STOR $(blnks,1,2) TO mstate STOR $(blnks,1,10) TO mzip STOR $(blnks,1,22) TO msubj1 STOR $(blnks,1,22) TO msubj1 STOR $(blnks,1,22) TO msubj2 STOR $(blnks,1,22) TO msubj3 STOR $(blnks,1,22) TO msubj4 STOR $(blnks,1,21) TO msubj5 STOR blnks+$(blnks,1,20) TO mcomm STOR $(blnks,1,8) TO mdayu @ 6,12 GET mtitle @ 7,12 GET msubtit @ 8,12 GET mauth1 @ 8,47 GET mauth2 @ 9,12 GET mauth3 @ 9,47 GET myear PICTURE '9999' @ 9,70 GET mprice PICTURE '999999' @ 10,12 GET mpublish @ 11,12 GET mstreet @ 12,12 GET mcity @ 12,47 GET mstate PICTURE '!!' @ 12,70 GET mzip PICTURE '99999-9999' @ 13,12 GET msubj1 @ 13,47 GET msubj2 @ 14,12 GET msubj3 @ 14,47 GET msubj4 @ 15,12 GET msubj5 @ 16,12 GET mcomm @ 17,71 GET mdayu READ CLEA GETS STOR f TO toolong IF mtitle <> ' '.AND.(.NOT.toolong) STOR TRIM(finder) +".AND.'"+TRIM(!(mtitle))+"'"+'$!(title)' TO finder ENDI RELE mtitle IF LEN(finder) > 140 STOR t TO toolong ENDI IF msubtit <> ' '.AND.(.NOT.toolong) STOR ".AND.'"+TRIM(!(msubtit))+"'" TO msubtit1 STOR TRIM(finder) + msubtit1+'$!(subtit)' TO finder ENDI RELE msubtit, msubtit1 IF LEN(finder) > 140 STOR t TO toolong ENDI IF mauth1 <> ' '.AND.(.NOT.toolong) STOR ".AND.'"+TRIM(!(mauth1))+"'" TO mauth11 STOR TRIM(finder) +mauth11+'$!(auth1)' TO finder ENDI RELE mauth1, mauth11 IF LEN(finder) > 140 STOR t TO toolong ENDI IF mauth2 <> ' '.AND.(.NOT.toolong) STOR ".AND.'"+TRIM(!(mauth2))+"'" TO mauth21 STOR TRIM(finder) + mauth21+'$!(auth2)' TO finder ENDI IF LEN(finder) > 140 STOR t TO toolong ENDI RELE mauth2, mauth21 IF mauth3 <> ' '.AND.(.NOT.toolong) STOR ".AND.'"+TRIM(!(mauth3))+"'" TO mauth31 STOR TRIM(finder) +mauth31+'$!(auth3)' TO finder ENDI RELE mauth3, mauth31 IF LEN(finder) > 140 STOR t TO toolong ENDI IF myear <> ' '.AND.(.NOT.toolong) STOR ".AND.'"+TRIM(!(myear))+"'" TO myear1 STOR TRIM(finder) + myear1+'$!(year)' TO finder ENDI RELE myear, myear1 IF LEN(finder) > 140 STOR t TO toolong ENDI IF mprice <> ' '.AND.(.NOT.toolong) STOR ".AND.'"+TRIM(!(mprice))+"'" TO mprice1 STOR TRIM(finder) + mprice1+'$!(price)' TO finder ENDI RELE mprice, mprice1 IF LEN(finder) > 140 STOR t TO toolong ENDI IF mpublish <> ' '.AND.(.NOT.toolong) STOR ".AND.'"+TRIM(!(mpublish))+"'" TO mpubl2 STOR TRIM(finder) +mpubl2+'$!(publish)' TO finder ENDI IF LEN(finder) > 140 STOR t TO toolong ENDI RELE mpublish, mpublish2 IF mstreet <> ' '.AND.(.NOT.toolong) STOR ".AND.'"+TRIM(!(mstreet))+"'" TO mstreet1 STOR TRIM(finder) +mstreet1+'$!(street)' TO finder ENDI RELE mstreet, mstreet1 IF LEN(finder) > 140 STOR t TO toolong ENDI IF mcity <> ' '.AND.(.NOT.toolong) STOR ".AND.'"+TRIM(!(mcity))+"'" TO mcity1 STOR TRIM(finder) +mcity1+'$!(city)' TO finder ENDI RELE mcity, mcity1 IF LEN(finder) > 140 STOR t TO toolong ENDI IF mstate <> ' '.AND.(.NOT.toolong) STOR ".AND.'"+TRIM(!(mstate))+"'" TO mstate1 STOR TRIM(finder) +mstate1+'$!(state)' TO finder ENDI RELE mstate, mstate1 IF LEN(finder) > 140 STOR t TO toolong ENDI IF mzip <> ' ' .AND.(.NOT.toolong) STOR ".AND.'"+TRIM(!(mzip))+"'" TO mzip1 STOR TRIM(finder) +mzip1+'$!(zip)' TO finder ENDI RELE mzip, mzip1 IF LEN(finder) > 140 STOR t TO toolong ENDI IF msubj1 <> ' '.AND.(.NOT.toolong) STOR ".AND.'"+TRIM(!(msubj1))+"'" TO msubj11 STOR TRIM(finder) +msubj11+'$!(subj1)' TO finder ENDI RELE msubj1, msubj11 IF LEN(finder) > 140 STOR t TO toolong ENDI IF msubj2 <> ' '.AND.(.NOT.toolong) STOR ".AND.'"+TRIM(!(msubj2))+"'" TO msubj21 STOR TRIM(finder) +msubj21+'$!(subj2)' TO finder ENDI RELE msubj2, msubj21 IF LEN(finder) > 140 STOR t TO toolong ENDI IF msubj3 <> ' '.AND.(.NOT.toolong) STOR ".AND.'"+TRIM(!(msubj3))+"'" TO msubj31 STOR TRIM(finder) +msubj31+'$!(subj3)' TO finder ENDI RELE msubj3, msubj31 IF LEN(finder) > 140 STOR t TO toolong ENDI IF msubj4 <> ' '.AND.(.NOT.toolong) STOR ".AND.'"+TRIM(!(msubj4))+"'" TO msubj41 STOR TRIM(finder) +msubj41+'$!(subj4)' TO finder ENDI RELE msubj4, msubj41 IF LEN(finder) > 140 STOR t TO toolong ENDI IF msubj5 <> ' '.AND.(.NOT.toolong) STOR ".AND.'"+TRIM(!(msubj5))+"'" TO msubj51 STOR TRIM(finder) +msubj51+'$!(subj5)' TO finder ENDI RELE msubj5, msubj51 IF LEN(finder) > 140 STOR t TO toolong ENDI IF mcomm <> ' '.AND.(.NOT.toolong) STOR ".AND.'"+TRIM(!(mcomm))+"'" TO mcomm1 STOR TRIM(finder) +mcomm1+'$!(comment)' TO finder ENDI RELE mcomm, mcomm1 IF LEN(finder) > 140 STOR t TO toolong ENDI IF mdayu <> ' '.AND.(.NOT.toolong) STOR ".AND.'"+TRIM(!(mdayu))+"'" TO mdayu1 STOR TRIM(finder) +mdayu1+'$!(dayu)' TO finder ENDI IF LEN(finder) > 140 STOR t TO toolong ENDI RELE mdayu, mdayu1 SET COLON ON IF LEN(finder) < 12 STOR "*" TO finder STOR ' STANDARD = deleted files ' TO extra ENDI STOR ' ' TO dowhat @ 19,08 SAY "Do you want a eport, a ount or shall we uit ? " @ 19,65 GET dowhat PICTURE '!' READ DO WHIL @(dowhat,'RCQ')=0 @ 19,65 GET dowhat PICTURE '!' READ ENDD IF dowhat = 'C' STOR 'N' TO shift IF toolong ERAS @ 10,10 SAY 'The search string is too long - you can have no more than ' @ 11,10 SAY '140 characters in the string and the field names. Please ' @ 12,10 SAY 'try again.' @ 13,30 SAY 'Hit any key to continue' SET CONSOL OFF WAIT SET CONSOL ON ELSE ERAS SET talk on COUN for &finder SET TALK OFF ? ' ' ? extra ? ' ' ? ' ** HIT ANY KEY TO CONTINUE **' SET CONSOL OFF WAIT SET CONSOL ON ENDI toolong ENDI dowhat = 'C' IF dowhat = 'R' IF toolong ERAS @ 10,10 SAY 'The search string is too long - you can have no more than ' @ 11,10 SAY '140 characters in the string and the field names. Please ' @ 12,10 SAY 'try again.' @ 13,30 SAY 'Hit any key to continue' STOR f TO more STOR f TO more1 STOR t TO first SET CONSOL OFF WAIT SET CONSOL ON ELSE STOR 'Y' TO printer STOR 'N' TO disk STOR ' ' TO filename STOR '?' TO command @ 19,00 @ 19,22 SAY "Send Report to the Printer (Y/N)" @ 19,55 GET printer PICTURE '!' READ @ 20,22 SAY "Send Report to a Disk File (Y/N)" @ 20,55 GET disk PICTURE '!' READ IF disk ='Y' @ 21,22 SAY "Enter Disk File Name" @ 21,44 GET filename PICTURE '!!!!!!!!' @ 21,54 SAY "(.TXT will be added )" READ @ 21,00 @ 21,22 SAY 'Select drive to put Files on (A=left B=right) ' GET dr PICTURE '!' READ DO WHIL @(dr,'AB') = 0 @ 21,00 @ 21,22 SAY 'Select drive to put Files on (A=left B=right) ' GET dr PICTURE '!' READ ENDD ENDI STOR ' ' TO caption STOR 'Y' TO again @ 19,00 @ 20,00 @ 21,00 @ 19,12 SAY 'Please State the Caption of the Report (do not center):' @ 20,10 GET caption PICTURE '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' READ @ 21,15 SAY 'Is the caption correct ?' @ 21,44 GET again PICTURE '!' READ IF again = 'N' @ 20,10 GET caption PICTURE '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' READ ENDI again STOR ' ' TO pad STOR TRIM(caption) TO caption STOR (122-LEN(caption))/2 TO adjust STOR $(pad,1,adjust) + caption TO caption RELE pad, adjust, again @ 19,00 @ 20,00 @ 21,00 REST from bdata additive STOR 'A' TO select @ 19,10 SAY 'Do you want the report alphabetically by uthor or itle ? ' @ 19,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 IF printer = 'Y' @ 23,00 SAY 'Make Printer Ready and hit any key' SET CONSOLE OFF WAIT SET CONSOLE ON ENDI IF disk = 'Y' .AND. filename <> ' ' STOR @('.',filename) TO length IF length = 0 .OR. length > 8 STOR 9 TO length ENDI STOR $(filename,1,length-1) TO filename STOR '&dr.:'+filename+'.TXT' TO filename SET ALTERNATE TO &filename SET ALTERNATE ON ENDI ERAS SET INDEX TO GO TOP STOR 'Y' TO command ERAS * make an announcement @ 10,12 SAY 'This module print a list of all books by meeting the guidelines' @ 11,12 SAY 'you set. The printer should be set for 132 characters if you have' @ 12,12 SAY 'not set the program to handle this automatically. The report is' @ 13,12 SAY 'designed to be printed on 8 x 11 paper loaded normally in the' @ 14,12 SAY 'printer.' @ 16,32 SAY 'Hit any key to continue ' SET CONSOL OFF WAIT SET CONSOL ON REST from printer.dat additive IF printer = 'Y' .AND. shift = 'Y' SET PRINT ON SET CONSOLE OFF ? CHR(chr121) + CHR(chr122) + CHR(123) SET PRINT OFF SET CONSOLE ON ENDI shift ERAS * initialize variables STOR 0 TO pageno STOR 0 TO counter ERAS @ 10,10 SAY 'I am looking for the first instance of a file which meets your' @ 11,10 SAY 'requirements. Please be patient.' LOCA for &finder IF EOF STOR f TO more ELSE STOR t TO more IF printer = 'Y' SET PRINT ON SET MARGIN TO 5 ENDI DO WHIL more 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 IF .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 CONT * however, go again if record deleted IF * CONT 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 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 ? ' ' ? ' *** HIT ANY KEY TO CONTINUE *** ' SET CONSOL OFF WAIT SET CONSOL ON ENDI ENDI toolong ENDI dowhat = 'R' ERAS STOR '?' TO command @ 10,25 SAY "Do another report" @ 10,43 GET command PICTURE '!' READ DO WHIL @(command,'YN')=0 @ 10,43 GET command PICTURE '!' READ ENDD IF command = 'N' STOR f TO more1 ELSE SET COLON OFF STOR t TO more1 STOR t TO first ENDI IF dowhat = 'Q' STOR f TO more1 ENDI ENDD while more1 IF PRINTER = 'Y' .AND. SHIFT = 'Y' SET PRINT ON ? CHR(chrreg1) + CHR(chrreg2) + CHR(chrreg3) SET PRINT OFF ENDI STOR CHR(PEEK(063)) TO dr SET INDEX TO &dr.:&tindex RELE all STOR t TO more STOR t TO first RETU