1 SUB BAS_SQLM_ZILL_MOST_REPORT_SUB OPTION TYPE=EXPLICIT ! ! BAS_SQLM_ZILL_MOST_REPORT_SUB.BAS ! ! Subroutine to report the top 10 ! drawing and mega numbers by hit count. ! %INCLUDE "LIB$ROUTINES" %FROM %LIBRARY %INCLUDE "SYS$LIBRARY:SQL_LITERALS.BAS" !;;;;;;;;;; ! Constants !;;;;;;;;;; DECLARE BYTE CONSTANT rpt_chan% = 11% DECLARE BYTE CONSTANT elm_count% = 52% DECLARE STRING CONSTANT report_name$ = "ZILL_MOST.RPT" !;;;;;;;;;; ! Maps !;;;;;;;;;; MAP (LOCAL_MAP) STRING TRANSLATED_NAME$ = 255% !;;;;;;;;;; ! Local Variables !;;;;;;;;;; DECLARE BYTE B_DONE% DECLARE WORD W_X% DECLARE LONG L_X%, L_ERR%, L_END%, SQLCODE% DECLARE STRING WORK_STR$, LOG_TXT$ DECLARE BYTE ELM_NO DECLARE LONG HIT_COUNT, LAST_DRAW_NO, SINCE_LAST, CURR_SEQ, LONGEST_SEQ, MAX_BTWN DECLARE GFLOAT PCT_HITS, AVE_BTWN !;;;;;;;;;; ! Main Logic !;;;;;;;;;; 100 L_ERR% = 0% GOSUB A910_OPEN_FILES IF SQLCODE% = 0% THEN GOSUB A940_GENERATE_REPORT END IF GOTO PROGRAM_EXIT 910 !;;;;;;;;;; ! Subroutine to open indexed files !;;;;;;;;;; A910_OPEN_FILES: WHEN ERROR IN L_ERR% = 0% OPEN report_name$ FOR OUTPUT AS FILE # rpt_chan%, & RECORDTYPE LIST, & ACCESS WRITE USE L_ERR% = ERR PRINT "Error opening report file for output" PRINT "Error: ";L_ERR%;" ";ERT$( L_ERR%) END WHEN CALL OPEN_MOST_DRAW( SQLCODE%) CALL OPEN_MOST_MEGA( SQLCODE%) RETURN 940 !;;;;;;;;;; ! Subroutine to generate the report ! No need for page breaks when will will have less ! than the number of lines a page can hold. !;;;;;;;;;; A940_GENERATE_REPORT: WORK_STR$ = "Most Hits Report" L_X% = 40% - (LEN( WORK_STR$) / 2%) ! size needed to center !;;;;; ! First Heading line !;;;;; PRINT #rpt_chan%, "DATE: ";DATE$(0%); PRINT #rpt_chan%, TAB( L_X%);WORK_STR$;TAB( 71%);"PAGE: "; PRINT #rpt_chan%, FORMAT$( 1%, "###") PRINT #rpt_chan%, " " WORK_STR$ = "Regular Drawing Numbers" L_X% = 40% - (LEN( WORK_STR$) / 2%) ! size needed to center PRINT #rpt_chan%, TAB( L_X%);WORK_STR$ PRINT #rpt_chan%, " " PRINT #rpt_chan%, " " !;;;;; ! Column headings !;;;;; PRINT #rpt_chan%, "No Hits Since Pct_hits Ave_btwn" PRINT #rpt_chan%, "-- ---- ----- -------- --------" FOR L_X% = 1% TO 10% CALL FETCH_MOST_DRAW( SQLCODE%, ELM_NO, HIT_COUNT, SINCE_LAST, PCT_HITS, AVE_BTWN) PRINT #rpt_chan% USING "## #### #### ##.### ##.###", & ELM_NO, HIT_COUNT, SINCE_LAST, PCT_HITS, AVE_BTWN NEXT L_X% PRINT #rpt_chan%, " " PRINT #rpt_chan%, " " PRINT #rpt_chan%, " " WORK_STR$ = "Mega Numbers" L_X% = 40% - (LEN( WORK_STR$) / 2%) ! size needed to center PRINT #rpt_chan%, TAB( L_X%);WORK_STR$ PRINT #rpt_chan%, " " PRINT #rpt_chan%, " " !;;;;; ! Column headings !;;;;; PRINT #rpt_chan%, "No Hits Since Pct_hits Ave_btwn" PRINT #rpt_chan%, "-- ---- ----- -------- --------" FOR L_X% = 1% TO 10% CALL FETCH_MOST_MEGA( SQLCODE%, ELM_NO, HIT_COUNT, SINCE_LAST, PCT_HITS, AVE_BTWN) PRINT #rpt_chan% USING "## #### #### ##.### ##.###", & ELM_NO, HIT_COUNT, SINCE_LAST, PCT_HITS, AVE_BTWN NEXT L_X% CALL CLOSE_MOST_DRAW( SQLCODE%) CALL CLOSE_MOST_MEGA( SQLCODE%) CALL COMMIT_MEGA( SQLCODE%) RETURN 32767 ! End of module PROGRAM_EXIT: WHEN ERROR IN CLOSE #rpt_chan% USE END WHEN WORK_STR$ = "EDIT/READ " + report_name$ L_X% = LIB$SPAWN( WORK_STR$) END SUB