!++ ! FILENAME: CONSTRUCTS.TPU ! FUNCTION: Construct definitions and structuring procedures. ! AUTHOR: Steven K. Shapiro, (C) Copyright SKS Enterprises, Austin TX. ! All Rights Reserved. ! ! The format, structure and contents of this file are the sole ! property of Steven K. Shapiro and are copyrighted to SKS ! Enterprises, Austin Texas. ! ! The information may be freely distributed, used and modified ! provided that the information in this header block is not ! changed, altered, disturbed or modified in any way. ! ! DATE: 26-NOV-1986 Original. ! HISTORY: current. ! 19-MAR-1987 11:54:30.03 added PLI constructs & switching. ! 18-DEC-1987 12:46:33.00 added C constructs & selection. ! CONTENTS: ! eve_select_construct; Select between the various constructs. ! eve_chpdl_construct; Redefine keys for PDL constructs. ! eve_chpli_construct; Redefine keys for PLI constructs. ! eve_chc_construct; Redefine keys for C constructs. ! eve_chfor_construct; Redefine keys for FORTRAN constructs. ! eve_chpas_construct; Redefine keys for Pascal constructs. ! ! eve_pdl_begend; PDL BEGIN END construct. ! eve_pdl_ifthen; PDL IF THEN construct. ! eve_pdl_ifthenelse; PDL IF THEN ELSE construct. ! eve_pdl_caseof; PDL CASE OF construct. ! eve_pdl_when; PDL WHEN construct. ! eve_pdl_dowhile; PDL DO WHILE construct. ! eve_pdl_dountil; PDL DO UNTIL construct. ! eve_pdl_dofor; PDL DO FOR construct. ! eve_pdl_concond; PDL ON CONDITION CONSTRUCT. ! ! eve_pli_begend; PLI BEGIN END construct. ! eve_pli_doend; PLI DO END construct. ! eve_pli_ifthenelse; PLI IF THEN ELSE construct. ! eve_pli_caseof; PLI CASE OF construct. ! eve_pli_when; PLI WHEN construct. ! eve_pli_dowhile; PLI DO WHILE construct. ! eve_pli_dountil; PLI DO UNTIL construct. ! eve_pli_dofor; PLI DO FOR construct. ! eve_pli_concond; PLI ON CONDITION CONSTRUCT. ! ! eve_c_begend; C { } construct. ! eve_c_ifthen; C IF THEN construct. ! eve_c_ifthenelse; C IF THEN ELSE construct. ! eve_c_switch; C SWITCH construct. ! eve_c_case; C CASE construct. ! eve_c_dowhile; C DO WHILE construct. ! eve_c_while; C WHILE construct. ! eve_c_for; C FOR construct. ! ! eve_for_if FORTRAN IF construct. ! eve_for_ifthenelse FORTRAN IF THEN ELSE construct. ! eve_for_ifelseif FORTRAN IF ELSE IF construct. ! eve_for_elseif FORTRAN ELSE IF construct. ! eve_for_dowhile FORTRAN DO WHILE construct. ! eve_for_doendo FORTRAN DO ENDDO construct. ! eve_for_cgoto FORTRAN COMPUTED GOTO construct. ! eve_for_goto FORTRAN GOTO construct. ! ! eve_pas_begend; Pascal BEGIN END construct. ! eve_pas_ifthenelse; Pascal IF THEN ELSE construct. ! eve_pas_caseof; Pascal CASE OF construct. ! eve_pas_while; Pascal WHILE construct. ! eve_pas_repeat; Pascal REPEAT UNTIL construct. ! eve_pas_for; Pascal FOR construct. ! eve_pas_with; Pascal WITH construct. ! eve_pas_goto; Pascal GOTO construct. ! ! eve_fixifs ! eve_parenthesize ! !23456789A123456789B123456789C123456789D123456789E123456789F123456789G123456789H !-- !*----------------------------------------------------------------------------*! procedure constructs_module_ident local file_date, module_vers; file_date := "-<( 29-DEC-1988 11:45:55.14 )>-"; module_vers := substr(file_date,5,2) + substr(file_date,8,3) + substr(file_date,14,2) + substr(file_date,17,5) ; return module_vers; endprocedure; !*----------------------------------------------------------------------------*! ! procedure eve_select_construct ! local number; if not (eve$prompt_number ("", number, "Enter Construct Type (1=PDL,2=PL/1,3=C,4=FORTRAN,5=Pascal): ", "No construct selected, construct not changed.")) then return; endif; if number = 1 then eve_chpdl_constructs; message("Keys mapped to PDL constructs."); else if number = 2 then eve_chpli_constructs; message("Keys mapped to PL/1 constructs."); else if number = 3 then eve_chc_constructs; message("Keys mapped to C constructs."); else if number = 4 then eve_chfor_constructs; message("Keys mapped to FORTRAN constructs."); else if number = 5 then eve_chpas_constructs; message("Keys mapped to Pascal constructs."); else message("INVALID construct number."); endif; endif; endif; endif; endif; ! endprocedure; ! !*----------------------------------------------------------------------------*! ! ! GOLD SHIFTED NUMERIC KEYS: PDL Constructs ! procedure eve_chpdl_constructs ! set(informational,off); evedt_key ("eve_pdl_begend", key_name("1",shift_key), "pdl begin end"," "); evedt_key ("eve_pdl_ifthen", key_name("2",shift_key), "pdl if then"," "); evedt_key ("eve_pdl_ifthenelse", key_name("3",shift_key), "pdl if then else"," "); evedt_key ("eve_pdl_caseof", key_name("4",shift_key), "pdl case of"," "); evedt_key ("eve_pdl_when", key_name("5",shift_key), "pdl when"," "); evedt_key ("eve_pdl_dowhile", key_name("6",shift_key), "pdl do while"," "); evedt_key ("eve_pdl_dountil", key_name("7",shift_key), "pdl do until"," "); evedt_key ("eve_pdl_dofor", key_name("8",shift_key), "pdl do for"," "); evedt_key ("eve_pdl_oncond", key_name("9",shift_key), "pdl on condition"," "); set(informational,on); ! endprocedure; ! ! GOLD SHIFTED NUMERIC KEYS: PLI Constructs ! procedure eve_chpli_constructs ! set(informational,off); evedt_key ("eve_pli_begend", key_name("1",shift_key), "pli begin end"," "); evedt_key ("eve_pli_doend", key_name("2",shift_key), "pli do end"," "); evedt_key ("eve_pli_ifthenelse", key_name("3",shift_key), "pli if then else"," "); evedt_key ("eve_pli_caseof", key_name("4",shift_key), "pli case of"," "); evedt_key ("eve_pli_when", key_name("5",shift_key), "pli when"," "); evedt_key ("eve_pli_dowhile", key_name("6",shift_key), "pli do while"," "); evedt_key ("eve_pli_dountil", key_name("7",shift_key), "pli do until"," "); evedt_key ("eve_pli_dofor", key_name("8",shift_key), "pli do for"," "); evedt_key ("eve_pli_oncond", key_name("9",shift_key), "pli on condition"," "); set(informational,on); ! endprocedure; ! ! GOLD SHIFTED NUMERIC KEYS: C Constructs ! procedure eve_chc_constructs ! set(informational,off); evedt_key ("eve_c_begend", key_name("1",shift_key), "C begin end"," "); evedt_key ("eve_c_ifthen", key_name("2",shift_key), "C if then"," "); evedt_key ("eve_c_ifthenelse", key_name("3",shift_key), "C if then else"," "); evedt_key ("eve_c_switch", key_name("4",shift_key), "C switch"," "); evedt_key ("eve_c_case", key_name("5",shift_key), "C case"," "); evedt_key ("eve_c_dowhile", key_name("6",shift_key), "C do while"," "); evedt_key ("eve_c_while", key_name("7",shift_key), "C while"," "); evedt_key ("eve_c_for", key_name("8",shift_key), "C for"," "); evedt_key ("message(""UNDEFINED"")",key_name("9",shift_key),"undefined"," "); set(informational,on); ! endprocedure; ! ! GOLD SHIFTED NUMERIC KEYS: FORTRAN Constructs ! procedure eve_chfor_constructs ! set(informational,off); evedt_key ("message(""UNDEFINED"")",key_name("1",shift_key),"undefined"," "); evedt_key ("eve_for_if", key_name("2",shift_key), "for do end"," "); evedt_key ("eve_for_ifthenelse", key_name("3",shift_key), "for if then else"," "); evedt_key ("eve_for_ifelseif", key_name("4",shift_key), "for if then elseif"," "); evedt_key ("eve_for_elseif", key_name("5",shift_key), "for elseif"," "); evedt_key ("eve_for_dowhile", key_name("6",shift_key), "for do while"," "); evedt_key ("eve_for_doendo", key_name("7",shift_key), "for do end do"," "); evedt_key ("eve_for_cgoto", key_name("8",shift_key), "for computed goto"," "); evedt_key ("eve_for_goto", key_name("9",shift_key), "for goto"," "); set(informational,on); ! endprocedure; ! ! GOLD SHIFTED NUMERIC KEYS: Pascal Constructs ! procedure eve_chpas_constructs ! set(informational,off); evedt_key ("eve_pas_begend", key_name("1",shift_key), "pas begin end"," "); evedt_key ("eve_pas_ifthenelse",key_name("2",shift_key),"pas ifthenelse"," "); evedt_key ("eve_pas_caseof", key_name("3",shift_key), "pas case of"," "); evedt_key ("eve_pas_while", key_name("4",shift_key), "pas while"," "); evedt_key ("eve_pas_repeat", key_name("5",shift_key), "pas repeat until"," "); evedt_key ("eve_pas_for", key_name("6",shift_key), "pas for"," "); evedt_key ("eve_pas_with", key_name("7",shift_key), "pas with"," "); evedt_key ("eve_pas_goto", key_name("8",shift_key), "pas goto"," "); evedt_key ("message(""UNDEFINED"")",key_name("9",shift_key),"undefined"," "); set(informational,on); ! endprocedure; ! !*----------------------------------------------------------------------------*! ! THE CONSTRUCTS !*----------------------------------------------------------------------------*! ! !*----------------------------------------------------------------------------*! ! PL/1 !*----------------------------------------------------------------------------*! ! procedure eve_pli_begend local this_offset; this_offset := current_offset; evedt_insert_text("BEGIN;"); split_line; eve_insertchars (this_offset+2); evedt_insert_text("~^~"); split_line; eve_insertchars (this_offset); evedt_insert_text("END;"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pli_doend local this_offset; this_offset := current_offset; evedt_insert_text("DO;"); split_line; eve_insertchars (this_offset+2); evedt_insert_text("~^~"); split_line; eve_insertchars (this_offset); evedt_insert_text("END;"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pli_ifthenelse local this_offset; this_offset := current_offset; evedt_insert_text("IF (~^~)"); split_line; eve_insertchars (this_offset); evedt_insert_text("THEN"); split_line; eve_insertchars (this_offset+2); split_line; eve_insertchars (this_offset); evedt_insert_text("ELSE"); split_line; eve_insertchars (this_offset+2); position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pli_caseof local this_offset; this_offset := current_offset; evedt_insert_text("SELECT;"); split_line; eve_insertchars (this_offset); evedt_insert_text(" WHEN (~^~)"); split_line; eve_insertchars (this_offset); evedt_insert_text(" OTHERWISE"); split_line; eve_insertchars (this_offset); evedt_insert_text("END;"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pli_when local this_offset; this_offset := current_offset; evedt_insert_text("WHEN (~^~)"); split_line; eve_insertchars (this_offset); position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pli_dowhile local this_offset; this_offset := current_offset; evedt_insert_text("DO WHILE (~^~);"); split_line; eve_insertchars (this_offset); evedt_insert_text("END;"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pli_dountil local this_offset; this_offset := current_offset; evedt_insert_text("DO UNTIL (~^~);"); split_line; eve_insertchars (this_offset); evedt_insert_text("END;"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pli_dofor local this_offset; this_offset := current_offset; evedt_insert_text("DO ~^~ TO ;"); split_line; eve_insertchars (this_offset); evedt_insert_text("END;"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pli_oncond local this_offset; this_offset := current_offset; evedt_insert_text("ON ~^~;"); position(search("~^~",reverse)); erase_character(3); endprocedure ! !*----------------------------------------------------------------------------*! ! PDL !*----------------------------------------------------------------------------*! ! procedure eve_pdl_begend local this_offset; this_offset := current_offset; evedt_insert_text("BEGIN:~^~"); split_line; eve_insertchars (this_offset); split_line; eve_insertchars (this_offset); evedt_insert_text("END:"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pdl_ifthen local this_offset; this_offset := current_offset; ! evedt_insert_text("IF (~^~) THEN"); evedt_insert_text("IF (~^~)"); split_line; eve_insertchars (this_offset); evedt_insert_text("THEN"); split_line; eve_insertchars (this_offset+2); split_line; eve_insertchars (this_offset); evedt_insert_text("END IF"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pdl_ifthenelse local this_offset; this_offset := current_offset; ! evedt_insert_text("IF (~^~) THEN"); evedt_insert_text("IF (~^~)"); split_line; eve_insertchars (this_offset); evedt_insert_text("THEN"); split_line; eve_insertchars (this_offset+2); split_line; eve_insertchars (this_offset); evedt_insert_text("ELSE"); split_line; eve_insertchars (this_offset+2); split_line; eve_insertchars (this_offset); evedt_insert_text("END IF"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pdl_caseof local this_offset; this_offset := current_offset; evedt_insert_text("CASE OF (~^~)"); split_line; eve_insertchars (this_offset); evedt_insert_text(" WHEN //"); split_line; eve_insertchars (this_offset); evedt_insert_text(" OTHERWISE"); split_line; eve_insertchars (this_offset); evedt_insert_text("END CASE"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pdl_when local this_offset; this_offset := current_offset; evedt_insert_text("WHEN /~^~/"); split_line; eve_insertchars (this_offset); position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pdl_dowhile local this_offset; this_offset := current_offset; evedt_insert_text("DO WHILE (~^~)"); split_line; eve_insertchars (this_offset); evedt_insert_text("END DO"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pdl_dountil local this_offset; this_offset := current_offset; evedt_insert_text("DO UNTIL (~^~)"); split_line; eve_insertchars (this_offset); evedt_insert_text("END UNTIL"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pdl_dofor local this_offset; this_offset := current_offset; evedt_insert_text("DO FOR ~^~ TO"); split_line; eve_insertchars (this_offset); evedt_insert_text("END LOOP"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pdl_oncond local this_offset; this_offset := current_offset; evedt_insert_text("ON CONDITION (~^~)"); split_line; eve_insertchars (this_offset); evedt_insert_text("END ON"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure ! !*----------------------------------------------------------------------------*! ! C !*----------------------------------------------------------------------------*! ! procedure eve_c_begend local this_offset; this_offset := current_offset; evedt_insert_text("{"); split_line; eve_insertchars (this_offset+2); evedt_insert_text("~^~"); split_line; eve_insertchars (this_offset); evedt_insert_text("}"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_c_ifthen local this_offset; this_offset := current_offset; evedt_insert_text("if( ~^~ )"); split_line; eve_insertchars (this_offset+2); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_c_ifthenelse local this_offset; this_offset := current_offset; evedt_insert_text("if( ~^~ )"); split_line; eve_insertchars (this_offset+2); split_line; eve_insertchars (this_offset); evedt_insert_text("else"); split_line; eve_insertchars (this_offset+2); position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_c_switch local this_offset; this_offset := current_offset; evedt_insert_text("switch ( ~^~ )"); split_line; eve_insertchars (this_offset+2); evedt_insert_text("{"); split_line; eve_insertchars (this_offset+4); evedt_insert_text("case :"); split_line; eve_insertchars (this_offset+6); split_line; eve_insertchars (this_offset+6); evedt_insert_text("break;"); split_line; eve_insertchars (this_offset+4); evedt_insert_text("default:"); split_line; eve_insertchars (this_offset+6); split_line; eve_insertchars (this_offset+6); evedt_insert_text("break;"); split_line; eve_insertchars (this_offset+2); evedt_insert_text("}"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_c_case local this_offset; this_offset := current_offset; evedt_insert_text("case ~^~:"); split_line; eve_insertchars (this_offset+2); split_line; eve_insertchars (this_offset+2); evedt_insert_text("break;"); split_line; eve_insertchars (this_offset); position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_c_dowhile local this_offset; this_offset := current_offset; evedt_insert_text("do"); split_line; eve_insertchars (this_offset+2); evedt_insert_text("~^~"); split_line; eve_insertchars (this_offset); evedt_insert_text("while ();"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_c_while local this_offset; this_offset := current_offset; evedt_insert_text("while ( ~^~ )"); split_line; eve_insertchars (this_offset+2); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_c_for local this_offset; this_offset := current_offset; evedt_insert_text("for ( ~^~ ;; )"); split_line; eve_insertchars (this_offset+2); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure ! !*----------------------------------------------------------------------------*! ! FORTRAN !*----------------------------------------------------------------------------*! ! procedure eve_for_if local this_offset; this_offset := current_offset; evedt_insert_text("IF (~^~)"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_for_ifthenelse local this_offset; this_offset := current_offset; evedt_insert_text("IF (~^~) THEN"); split_line; eve_insertchars (this_offset+2); split_line; eve_insertchars (this_offset); evedt_insert_text("ELSE"); split_line; eve_insertchars (this_offset+2); split_line; eve_insertchars (this_offset); evedt_insert_text("END IF"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_for_ifelseif local this_offset; this_offset := current_offset; evedt_insert_text("IF (~^~) THEN"); split_line; eve_insertchars (this_offset+2); split_line; eve_insertchars (this_offset); evedt_insert_text("ELSEIF ( ) THEN"); split_line; eve_insertchars (this_offset+4); split_line; eve_insertchars (this_offset+2); evedt_insert_text("ELSE"); split_line; eve_insertchars (this_offset+4); split_line; eve_insertchars (this_offset); evedt_insert_text("END IF"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_for_elseif local this_offset; this_offset := current_offset; evedt_insert_text("ELSEIF (~^~)"); split_line; eve_insertchars (this_offset); evedt_insert_text("&THEN"); split_line; eve_insertchars (this_offset); position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_for_dowhile local this_offset; this_offset := current_offset; evedt_insert_text("DO ~^~ WHILE ( )"); split_line; eve_insertchars (this_offset+2); split_line; eve_insertchars (this_offset); evedt_insert_text("END DO"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_for_doendo local this_offset; this_offset := current_offset; evedt_insert_text("DO ~^~ = "); split_line; eve_insertchars (this_offset+2); split_line; eve_insertchars (this_offset); evedt_insert_text("END DO"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_for_cgoto local this_offset; this_offset := current_offset; evedt_insert_text("GO TO ( ~^~ ), "); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_for_goto local this_offset; this_offset := current_offset; evedt_insert_text("GOTO "); erase_character(3); endprocedure ! !*----------------------------------------------------------------------------*! ! Pascal !*----------------------------------------------------------------------------*! ! procedure eve_pas_begend ! Pascal BEGIN END construct. local this_offset; this_offset := current_offset; evedt_insert_text("BEGIN"); split_line; eve_insertchars (this_offset+2); evedt_insert_text("~^~"); split_line; eve_insertchars (this_offset); evedt_insert_text("END;"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pas_with ! Pascal WITH construct. local this_offset; this_offset := current_offset; evedt_insert_text("WITH ~^~ AS DO ;"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pas_ifthenelse ! Pascal IF THEN ELSE construct. local this_offset; this_offset := current_offset; evedt_insert_text("IF ~^~ THEN"); split_line; eve_insertchars (this_offset+2); split_line; eve_insertchars (this_offset); evedt_insert_text("ELSE"); split_line; eve_insertchars (this_offset+2); evedt_insert_text(";"); eve_insertchars (this_offset+2); position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pas_caseof ! Pascal CASE OF construct. local this_offset; this_offset := current_offset; evedt_insert_text("CASE ~^~ OF "); split_line; eve_insertchars (this_offset); evedt_insert_text(" : ;"); split_line; eve_insertchars (this_offset); evedt_insert_text(" OTHERWISE ;"); split_line; eve_insertchars (this_offset); evedt_insert_text("END;"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pas_while ! Pascal WHILE construct. local this_offset; this_offset := current_offset; evedt_insert_text("WHILE ~^~ DO ;"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pas_repeat ! Pascal REPEAT UNTIL construct. local this_offset; this_offset := current_offset; evedt_insert_text("REPEAT ~^~ UNTIL ' ;"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pas_for ! Pascal FOR construct. local this_offset; this_offset := current_offset; evedt_insert_text("FOR ~^~ TO DO ;"); split_line; position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_pas_goto ! Pascal GOTO construct. local this_offset; this_offset := current_offset; evedt_insert_text("GOTO ~^~;"); position(search("~^~",reverse)); erase_character(3); endprocedure !*----------------------------------------------------------------------------*! procedure eve_fixifs local found_range, condition, ! Local copy of include_file_parameter started_at_bof, ! True if current position at start of file include_position, ! Marker for where cursor should end up temp_file_name, ! First file name string - from file_parse file_search_result, ! Latest string returned by file_search start_condition, end_filename, condition_range, end_pos, start_of_buffer; on_error if error = tpu$_strnotfound then message ("No more " + search_type + " strings found."); return; endif; endon_error; ! message("BEGIN FIXIFS"); set (FORWARD,current_buffer); eve$update_status_lines; ! loop for all IF strings loop search_type := "IF"; found_range := search("if ",forward); exitif found_range = 0; ! get conditional expression from string position(found_range); eve_move_by_word; start_condition := mark (none); eve_end_of_line; stop_condition := mark (none); condition_range := create_range (start_condition, stop_condition, none); ! condition := substr(condition_range,1,length(condition_range)); condition := substr(condition_range,1,1); ! check if conditional statement has an opening parenthesis paren_pos := index(condition,"("); if paren_pos = 0 then condition := substr(condition_range,1,length(condition_range)); change_case (condition, upper); end_pos := index(condition,"END"); if end_pos = 0 then search_type := "THEN"; then_range := search("then",forward); if then_range = 0 then message("No matching THEN statement."); exitif then_range = 0; else position(then_range); move_horizontal(-1); then_condition := mark(none); condition_range := create_range (start_condition, then_condition, eve$x_highlighting); condition := substr(condition_range,1,length(condition_range)); change_case (condition, lower); if_pos := index(condition,"if"); position (beginning_of (condition_range)); update (current_window); if if_pos = 0 then replace_action := read_line("This one? (Yes or No): "); else replace_action := read_line ("This condition may be missing a THEN, parenthesize? (Yes or No): "); endif; change_case (replace_action, lower); replace_count := int(replace_action); action_length := length (replace_action); if (replace_action = substr ("yes", 1, action_length)) or (replace_count <> 0) or (action_length = 0) then highlight_range := 0; update (current_window); position(start_condition); copy_text("("); position(then_condition); copy_text(")"); position(start_condition); else highlight_range := 0; update (current_window); endif; endif; endif; endif; exitif end_of (current_buffer); endloop; endprocedure; !*---------------------------------------------------------------------------*! procedure eve_parenthesize copy_text("("); eve_end_of_line; copy_text(")"); endprocedure;