SCRIPT ABORT OFF ; ------------------------------------------------------ ; - - ; - BBS Express! ST Script by Rich Sanchez, Dec 93 - ; - - ; - Designed to run TOP_DL.PRG, TOP Download Listers - ; - by Marc Ferrari of The Quantum Group. - ; - - ; ------------------------------------------------------ ; ********************************************************* ; *** Variables That NEED To Be Changed For Your System *** ; ********************************************************* ; Change the "DEFINE Menu_drive = " line to reflect JUST the Drive ; Letter where THIS Top Down Menu Script is or will be located: DEFINE Menu_drive = 'I' ; Change the "DEFINE Menu_path = " line to reflect the Path to THIS ; Menu Script: DEFINE Menu_path = 'I:\TOP_DL\' ; **************************************************************** ; *** END OF Variables That NEED To Be Changed For Your System *** ; **************************************************************** VAR User_input ; Iinput for user selection. VAR Delay ; Time delay on invalid input. VAR Ch_drive ; For drive changes. VAR Ch_directory ; For directory changes. VAR Count VAR Reports VAR File_to_view VAR SIG_count VAR Temp_var_1 VAR Temp_var_2 VAR Toggle VAR Counter Ch_drive = FILE_CHGDRIVE ('[Menu_drive]') Ch_directory = FILE_CHGDIR ('[Menu_path]') Begin_: CLEAR SCREEN IF TIME_EXCEEDED THEN PRINTE '\n\n' PRINTE 'Sorry, your time limit is up for today!' CENTER PRINTE '\n\n' FOR Delay = 1 to 250 DO ENDFOR GOTO EOF ENDIF PRINTE PRINTE 'Top Download Reports' CENTER PRINTE IF FILE_EXISTS ('td_menu.dat') THEN VIEW ('td_menu.dat') ELSE CLEAR SCREEN PRINTE PRINTE PRINTE 'WARNING!' CENTER PRINTE 'TD_MENU.DAT FILE NOT FOUND!' CENTER PRINTE 'ATTEMPTING TO CREATE ONE' CENTER PRINTE PRINTE GOTO Build_Script_Menu_ ENDIF PRINTE IF COMMAND_LEVEL 32 THEN PRINT ' Enter File SIG Number, S for SysOp Menu or X to eXit > ' ELSE PRINT ' Enter File SIG Number or X to eXit > ' ENDIF User_Choice_: INPUT User_input 2 NORETURN IF User_input = S GOTO SysOp_menu_ EF User_input = X GOTO EOF ENDIF CLEAR SCREEN IF User_input = NUMERIC THEN ; Don't do anything ELSE PRINTE PRINTE PRINTE 'Invalid Entry!' CENTER PRINTE PRINTE PRINTE '' CENTER GET_KEY User_input GOTO Begin_ ENDIF ; VALID ENTRY File_to_view = 'TOP_DL.[User_input]' IF FILE_EXISTS ('[File_to_view]') THEN VIEW ('[File_to_view]' , SHOWALL PAGEBRK ) ELSE PRINTE PRINTE PRINTE 'SORRY' CENTER PRINTE 'FILE DOES NOT EXIST!' CENTER PRINTE PRINTE ENDIF PRINTE '' CENTER GET_KEY User_input GOTO Begin_ Build_Script_Menu_: IF COMMAND_LEVEL 32 THEN ELSE GOTO Begin_: ENDIF ; Now go through and search for the existance of each possible TOP_DL.x ; file. If it exists get the File SIG name from it, manipulate it and ; stick it in the appropriate Table array element. Also check to make ; sure there is at least one TOP_DL.x file. If not create a dummy ; TD_MENU.DAT file. Temp_var_2 = 0 ; Temp counter, number of TOP_DL.x files found FOR Count = 1 to 32 DO Reports = 'TOP_DL.[Count]' IF FILE_EXISTS ('[Reports]') THEN INCREASE Temp_var_2 ; Open the file for INPUT ( Read it ). OPEN ( 'TOP_DL.[Count]' , INPUT ) ; Grab line 3 of TOP_DL.x file which contains the SIG Name. FINPUT Temp_var_1 3 ; Now close that file. CLOSE ; The TOP_DL.x file has the File SIG Name starting at position 16 of ; line 3. So we want to grab just that portion. The line should ; never be greater than 46. Temp_var_1 = COPY ( Temp_var_1 , 16, 46 ) ; Take the variable Count which is the SIG number and Expand it to ; two characters. EXPAND ( Count , 2 ) ; Put the "|" characters at the beginning and end of the SIG number ; and add the SIG Name for formatting purposes. Temp_var_1 = ' |[Count]| [Temp_var_1]' ; Now expand that string to 39 characters. EXPAND ( Temp_var_1 , 39 ) ; Now stick the formatted string into the Dynamic Table. TABLE_PUT ( Count , '[Temp_var_1]' ) ELSE ; If we did not find a TOP_DL.x file then put a 'NOT USED' in that ; Table location. TABLE_PUT ( Count , 'NOT USED' ) ENDIF ENDFOR IF Temp_var_2 < 1 THEN ; There were no TOP_DL.x files OPEN ( 'td_menu.dat' , OUTPUT ) FPRINTE '' FPRINTE '' FPRINTE ' No Top x Download Files Found!' FPRINTE '' FPRINTE '' CLOSE GOTO Begin_ ENDIF ; Now copy Table items 1 through 32 which have valid SIG strings into ; Table positions 50 up to the number required (82 would be highest) Counter = 49 FOR Count = 1 to 32 DO Reports = TABLE_GET (Count) IF Reports # 'NOT USED' INCREASE Counter TABLE_PUT ( Counter , '[Reports]' ) ENDIF ENDFOR ; Now create a td_menu.dat file which has all the File SIGS for which a ; TOP_DL.x file exists. Format the SIG numbers and names two across. OPEN ( 'td_menu.dat' , OUTPUT ) Toggle = 0 Temp_var_1 = '' Temp_var_2 = '' INCREASE Counter FOR Count = 50 to Counter DO INCREASE Toggle IF Toggle = 1 THEN Temp_var_1 = TABLE_GET (Count) ELSEIF Toggle = 2 THEN Temp_var_2 = TABLE_GET (Count) Reports = '[Temp_var_1][Temp_var_2]' FPRINTE '[REPORTS]' Toggle = 0 ENDIF ENDFOR CLOSE GOTO Begin_ SysOp_menu_: CLEAR SCREEN PRINTE '\n\n\' PRINTE '-----------------------' CENTER PRINTE '- Top Down SysOp Menu -' CENTER PRINTE '-----------------------' CENTER PRINTE '\n\n' PRINTE '1. Create New Top Down Reports and TD_MENU.DAT' CENTER PRINTE '2. Create Just a new TD_MENU.DAT ' CENTER PRINTE '3. Create JUST New Top Down Reports ' CENTER PRINTE '4. Delete ALL Top Down Reports ' CENTER PRINTE PRINTE 'X. eXit this menu ' CENTER PRINTE PRINT ' Enter Your Choice> ' INPUT User_input 1 NORETURN IF User_input = 1 GOSUB Kill_reports_ GEM ('[Menu_path]TOP_DL.PRG') GOTO Build_Script_Menu_ EF User_input = 2 GOTO Build_Script_Menu_ EF User_input = 3 GEM ('[Menu_path]TOP_DL.PRG') EF User_input = 4 GOSUB Kill_reports_ ENDIF GOTO Begin_ Kill_reports_: ; DELETE ALL REPORTS! FOR Count = 1 to 32 DO Reports = 'TOP_DL.[Count]' IF FILE_EXISTS ('[Reports]') THEN PRINTE ' Deleting [Reports]' Temp_var_1 = FILE_DELETE ('[Reports]') ENDIF ENDFOR RETURN EOF: CLOSE DEFAULT_PATH EXIT