home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0010 - 0019 / ibm0010-0019 / ibm0010.tar / ibm0010 / ME494-3.ZIP / SRC / TLIB.SRC < prev    next >
Encoding:
Text File  |  1990-04-27  |  16.6 KB  |  567 lines

  1. $MACRO_FILE TLIB;
  2. {*************************MULTI-EDIT MACRO FILE******************************
  3. Contains the Burton Systems Software TLIB interface macros.
  4. To configure Multi-Edit to interface to the TLIB system, place the
  5. following commands in your STARTUP macro:
  6.  
  7.                 {Tell Multi-Edit to utilize the TLIB_GET_FILE macro if a
  8.                  FILE NOT FOUND error occurs when the user loads a file.}
  9.     set_global_str('@FNF_LOAD_MACRO@', 'TLIB^TLIB_GET_FILE');
  10.  
  11.                 {Setup the TLIB extract command line }
  12.     set_global_str('!TLIB_GET_CMD!', 'TLIB P <PATH> E <NAME>' );
  13.  
  14.                 {Setup other TLIB parameters}
  15.     set_global_str('!TLIB_PARMS!', '/LIBEXT=TLB');
  16.  
  17.                 {Tell Multi-Edit to call the TLIB_CLEANUP macro before
  18.                  exiting.  Only use this if you want to be prompted to
  19.                  check files back in before exiting.}
  20.     set_global_str('@ME_EXIT_MACRO@', 'TLIB^TLIB_CLEANUP');
  21.  
  22.  
  23. The macro TLIB_MENU supplies a menu from which the user can list available
  24. log files, check out files from that list, and check the current file back
  25. in.
  26.  
  27. SUGGESTIONS:
  28.             Your TLIB configurations file (default is TLIB.CFG) should contain
  29.             the following statments:
  30.  
  31.                 rem Setup library extension overide
  32.                 LibExt ?$?
  33.  
  34.                 rem Disable all blank/tab conversions
  35.                 detabE N
  36.                 entabU N
  37.  
  38.                 rem Locking is a good idea on networks
  39.                 locking Y
  40.  
  41.                 rem Setup a user id.  Should be the same as your Multi-Edit id.
  42.                 id YOU
  43.                 rem Or you can use your network id name.
  44.                 id *NOVELL*
  45.                 rem Or
  46.                 id *MACHINE*
  47.  
  48.                 rem Log the user into the versions
  49.                 loguser Y
  50.  
  51.                 rem Log the time into the file
  52.                 logtime Y
  53.  
  54.                 rem Delete source file after updating
  55.                 DeleteSrc Y
  56.  
  57.                 rem  Preserve significance of file dates as much as possible
  58.                 olddate Y
  59.                 equaldate Y
  60.  
  61. TLIB                    - The main TLIB macro
  62. TLIB_GET_FILE - Allows retrieval of latest revision of TLIB file
  63. TLIB_DIR            - Displays and allows selection of TLIB log files
  64. TLIB_CLEANUP    - Makes sure user is aware of checked out files
  65. TLIB_MENU            - Main TLIB menu
  66.  
  67.                              (C) Copyright 1989 by American Cybernetics, Inc.
  68. ******************************************************************************}
  69.  
  70. $MACRO TLIB;
  71. {*******************************MULTI-EDIT MACRO******************************
  72.  
  73. Name: TLIB
  74.  
  75. Description: Burton Systems Software TLIB Inteface macro.
  76.  
  77. Parameters:   /C=str    Command string
  78.                                  CHECKOUT check out file
  79.                                  CHECKIN  check file back in
  80.  
  81.                             /F=str    File name
  82.                             /P=str    Library path for output files
  83.  
  84.                              (C) Copyright 1989 by American Cybernetics, Inc.
  85. ******************************************************************************}
  86.  
  87.     def_str( cmd[20],
  88.                      fname[120],
  89.                      lpath[120],
  90.                      tstr[120],
  91.                      TLIB_name[120],
  92.                      switches[40]
  93.                  );
  94.  
  95.     def_int( old_win, TLIB_win, initial_rev, checkout_count,
  96.                     jx, file_win, check_num, multi_line_comment );
  97.  
  98.         {IF you want multiple line comments for PVCS then set this variable to
  99.             TRUE}
  100.     multi_line_comment := TRUE;
  101.  
  102.     check_num := 0;
  103.  
  104.     cmd := shorten_str(parse_str( '/C=', mparm_str ));
  105.     lpath := parse_str( '/P=', mparm_str );
  106.     fname := parse_str( '/F=', mparm_str );
  107.     IF fname = '' THEN
  108.         fname := file_name;
  109.     ELSE
  110.         fname := fexpand(fname);
  111.     END;
  112.     IF lpath = '' THEN
  113.         lpath := get_path( fname );
  114.     END;
  115.     refresh := false;
  116.  
  117.     old_win := window_id;
  118.     switch_window( window_count );
  119.     create_window;
  120.     window_attr := $81;
  121.     TLIB_win := window_id;
  122.     TLIB_name := me_path + user_id + 'TLIB.TMP';
  123.     IF switch_file( TLIB_name ) THEN
  124.         delete_window;
  125.     END;
  126.     switch_win_id( TLIB_win );
  127.     reg_exp_stat := TRUE;
  128.     ignore_case := TRUE;
  129.     checkout_count := Global_Int('!TLIB_CHECKOUT_COUNT!');
  130.  
  131.     IF cmd = 'CHECKOUT' THEN
  132.         RM('userin^CHECKFILE');
  133.         IF return_int < 1 THEN
  134.             goto exit;
  135.         END;
  136.         make_message('');
  137.         Working;
  138.         return_str := Global_Str('!TLIB_GET_CMD!');
  139.         IF return_str = '' THEN
  140.             return_str := ' E <FILE>.<EXT>';
  141.         END;
  142.         RM( 'XlateCmdLine /F=' + fname );
  143.         gotoxy( message_col, message_row );
  144.         make_message('Retrieving "' + truncate_path(fname) + '"...');
  145.         shell_to_dos(  return_str + ' > ' + TLIB_name, TRUE );
  146.         IF error_level <> 0 THEN
  147.             return_int := 0;
  148.             goto ERROR_EXIT;
  149.         END;
  150.         load_file( TLIB_name );
  151.         IF error_level <> 0 THEN
  152.             return_int := 0;
  153.             goto ERROR_EXIT;
  154.         END;
  155.         IF NOT(search_fwd('extracted from',0)) THEN
  156.             tof;
  157.             read_only := TRUE;
  158.             RM( 'USERIN^EditWindow /X=5/Y=3/W=65/L=8/T=TLIB ERROR' );
  159.             return_int := 0;
  160.             goto ERROR_exit;
  161.         END;
  162.         goto_col(1);
  163.         fname := get_word(' ');
  164.         right;
  165.         fname := fexpand(get_word(' '));
  166.         right;
  167.         tstr := get_word(' ');
  168.         right;
  169.         tstr := get_word(' ');
  170.         right;
  171.         tstr := get_word(' ');
  172.         switch_win_id( old_win );
  173.         load_file( fname );
  174.         RM('EXTSETUP');
  175.         return_int := 1;
  176.         make_message( '"' + truncate_path(file_name) + '" checked out of "' + tstr + '".');
  177.         ++checkout_count;
  178.         Set_Global_Str('!TLIB_FILE_OUT#' + str(checkout_count), '/F=' + file_name + '/P=' + lpath );
  179.  
  180.     ELSIF cmd = 'CHECKIN' THEN
  181.  
  182.         jx := 1;
  183.         WHILE (jx <= checkout_count) AND
  184.                     (Parse_Str('/F=',Global_Str('!TLIB_FILE_OUT#' + str(jx))) <> fname) DO
  185.             ++jx;
  186.         END;
  187.         IF jx <= checkout_count THEN
  188.             check_num := jx;
  189.             lpath := Parse_Str('/P=',Global_Str('!TLIB_FILE_OUT#' + str(jx)));
  190.         END;
  191.  
  192.         IF check_num = 0 THEN
  193.             return_str := lpath;
  194.             RM('USERIN^USERSTR /BL=TLIB:  PATH TO SAVE LIBRARY FILE TO/W=70/ML=128/B=1');
  195.             IF return_int = 0 THEN
  196.                 goto exit;
  197.             END;
  198.             lpath := return_str;
  199.         END;
  200.  
  201.         initial_rev := (file_exists( get_path( lpath ) + truncate_path(truncate_extension(fname)) + '.TLB') = FALSE);
  202.         IF multi_line_comment THEN
  203.             switch_window( window_count );
  204.             create_window;
  205.             file_name := me_path + user_id + '2TLIB.TMP';
  206.             Return_Str := '';
  207.             IF initial_rev THEN
  208.                 RM('USERIN^EDITWINDOW /X=5/Y=5/W=60/L=10/WW=1/RM=58/CC=1/SP=1/T=TLIB:  DESCRIBE "' + truncate_path(fname) + '"/W=70/ML=128/B=1');
  209.                 switches := ' N ';
  210.             ELSE
  211.                 RM('USERIN^EDITWINDOW /X=5/Y=5/W=60/L=10/WW=1/RM=58/CC=1/SP=1/T=TLIB:  DESCRIBE CHANGES TO "' + truncate_path(fname) + '"/W=70/ML=128/B=1');
  212.                 switches := ' U ';
  213.             END;
  214.             save_file;
  215.             delete_window;
  216.             switch_win_id( tlib_win );
  217.             RM('USERIN^VERIFY /T=Check "' + fname + '" into library?');
  218.         ELSE
  219.             Return_Str := '';
  220.             IF initial_rev THEN
  221.                 RM('USERIN^USERSTR /BL=TLIB:  DESCRIBE "' + truncate_path(fname) + '"/W=70/ML=128/B=1');
  222.                 switches := ' N ';
  223.             ELSE
  224.                 RM('USERIN^USERSTR /BL=TLIB:  DESCRIBE CHANGES TO "' + truncate_path(fname) + '"/W=70/ML=128/B=1');
  225.                 switches := ' U ';
  226.             END;
  227.             tstr := return_str;
  228.             IF tstr = '' THEN
  229.                 tstr := '.';
  230.             END;
  231.         END;
  232.         IF return_int THEN
  233.             working;
  234.             file_win := 0;
  235.             IF switch_file( fname ) THEN
  236.                 file_win := window_id;
  237.                 IF file_changed THEN
  238.                     RM('MEUTIL1^SAVEFILE /NP=1');
  239.                 END;
  240.                 Refresh := TRUE;
  241.                 RM('WINDOW^DelWin');
  242.                 Refresh := FALSE;
  243.                 IF old_win = file_win THEN
  244.                     old_win := window_id;
  245.                 END;
  246.             END;
  247.  
  248.             IF check_num <> 0 THEN
  249.                 return_int := check_num;
  250.                 RM('USERIN^DELETEITEM /G=!TLIB_FILE_OUT#/#=' + str(checkout_count) );
  251.                 --checkout_count;
  252.             END;
  253.  
  254.             IF lpath <> '' THEN
  255.                 lpath := 'P ' + lpath + ' ';
  256.             END;
  257.             switch_win_id( TLIB_win );
  258.             make_message('');
  259.             Working;
  260.             gotoxy( message_col, message_row );
  261.             make_message('Storing "' + truncate_path(fname) + '"...');
  262.             IF NOT( multi_line_comment ) THEN
  263.                 shell_to_dos( 'TLIB ' + lpath + switches + fname + ' ' + tstr + ' > ' + TLIB_name, TRUE );
  264.             ELSE
  265.                 shell_to_dos( 'TLIB ' + lpath + switches + fname + ' @' + me_path + user_id + '2TLIB.TMP > ' + TLIB_name, TRUE );
  266.             END;
  267.             IF error_level <> 0 THEN
  268.                 return_int := 0;
  269.                 goto ERROR_EXIT;
  270.             END;
  271.             load_file( TLIB_name );
  272.             IF error_level <> 0 THEN
  273.                 return_int := 0;
  274.                 goto ERROR_EXIT;
  275.             END;
  276.             IF (search_fwd('%updated ?* from',0)) THEN
  277.                 goto_col(1);
  278.                 tstr := get_word(' ');
  279.                 right;
  280.                 tstr := get_word(' ');
  281.                 right;
  282.                 fname := get_word(' ');
  283.                 right;
  284.                 fname := fexpand(get_word(' '));
  285.                 return_int := 1;
  286.                 make_message( '"' + truncate_path(fname) + '" checked in to "' + tstr + '".');
  287.             ELSIF (search_fwd('created',0)) THEN
  288.                 IF file_exists( fname ) THEN
  289.                     RM('USERIN^VERIFY /BL=TLIB LIBRARY CREATED/T=Delete "' + fname + '"?');
  290.                     IF return_int = 1 THEN
  291.                         del_file( fname );
  292.                     END;
  293.                 END;
  294.                 return_int := 1;
  295.                 make_message( get_line );
  296.             ELSE
  297.                 EOF;
  298.                 HOME;
  299.                 read_only := TRUE;
  300.                 RM( 'USERIN^EditWindow /X=5/Y=3/W=65/L=8/T=TLIB ERROR' );
  301.                 read_only := FALSE;
  302.                 return_int := 0;
  303.                 goto ERROR_exit;
  304.             END;
  305.         END;
  306.     END;
  307.     GOTO EXIT;
  308.  
  309. ERROR_EXIT:
  310.     make_message('Error occurred during TLIB operation.');
  311. EXIT:
  312.     refresh := FALSE;
  313.     IF switch_win_id( TLIB_win ) THEN
  314.         delete_window;
  315.     END;
  316.     switch_win_id( old_win );
  317. EXIT2:
  318.     set_global_int('!TLIB_CHECKOUT_COUNT!', checkout_count );
  319. END_MACRO;
  320.  
  321. $MACRO TLIB_GET_FILE;
  322. {*******************************MULTI-EDIT MACRO******************************
  323.  
  324. Name: TLIB_GET_FILE
  325.  
  326. Description: Called from the LDFILES macro if the file was not found.  This
  327.     will search for a TLIB log file, and ask the user if he wants to retrieve
  328.     the latest revision.
  329.  
  330. Parameters:
  331.                         /F= The desired file name
  332.  
  333.                              (C) Copyright 1989 by American Cybernetics, Inc.
  334. ******************************************************************************}
  335.  
  336.     def_str( tstr[120], gstr[20], new_ext[3], old_ext[3] );
  337.     def_int( jx );
  338.  
  339.     tstr := truncate_path(parse_str('/F=',mparm_str));
  340.     old_ext := get_extension( tstr );
  341.     RM( 'FIND_EXT /EXT=.' + old_ext );
  342.     gstr := return_str;
  343.     return_str := parse_str('DIR=',Global_Str(gstr));
  344.     new_ext := parse_str( '/LIBEXT=', global_str('!TLIB_PARMS!') );
  345.     IF new_ext = '' THEN
  346.         new_ext := 'TLB';
  347.     END;
  348.     jx := 1;
  349. WILD_LOOP:
  350.     jx := xpos( '?', new_ext, jx );
  351.     IF jx <> 0 THEN
  352.         new_ext := Str_Ins( Copy( old_ext, jx, 1), Str_Del( new_ext, jx, 1 ), jx );
  353.         ++jx;
  354.         goto wild_loop;
  355.     END;
  356.  
  357.     RM('PathSearch /F=' + truncate_extension(tstr) + '.' + new_ext );
  358.     IF return_int THEN
  359.         RM('USERIN^VERIFY /BL=TLIB: "' + tstr + '" not found/T=Extract file from "' + return_str + '"?');
  360.         IF return_Int then
  361.             RM('TLIB /C=CHECKOUT/F=' + get_path(return_str) + truncate_path(tstr));
  362.             return_int := 1;
  363.         END;
  364.     ELSE
  365.         return_int := 0;
  366.     END;
  367. END_MACRO;
  368.  
  369. $MACRO TLIB_DIR TRANS;
  370. {******************************MULTI-EDIT MACRO******************************
  371.  
  372. Name: TLIB_DIR
  373.  
  374. Description: Displays directory listing of TLIB log files.  Allows you to
  375.     select a file to be retrieved.
  376.  
  377. Parameters:
  378.                         /BC= Amount of boxes to kill on exit
  379.  
  380.                              (C) Copyright 1989 by American Cybernetics, Inc.
  381. *****************************************************************************}
  382.  
  383.     def_int(bc, old_win, new_win);
  384.     bc := parse_int( '/BC=', mparm_str );
  385.  
  386.     RM('DIRSHELL /S=2/W=48/L=100/D=' + get_path(global_str('!TLIB_DIR!')) + '*.TLB' + mparm_str );
  387.     set_global_str('!TLIB_DIR!', return_str);
  388.     IF return_int > 0 THEN
  389.         old_win := window_id;
  390.         RM('CreateWindow');
  391.         new_win := window_id;
  392.         IF error_level = 0 THEN
  393.             While box_count > bc DO
  394.                 kill_box;
  395.             END;
  396.             RM('TLIB /C=CHECKOUT/F=' + return_str);
  397.             IF return_int = 0 THEN
  398.                 switch_win_id( new_win );
  399.                 delete_window;
  400.                 switch_win_id( old_win );
  401.             END;
  402.         END;
  403.         RETURN_INT := 100;
  404.     END;
  405. END_MACRO;
  406.  
  407. $MACRO TLIB_CLEANUP TRANS;
  408. {******************************MULTI-EDIT MACRO******************************
  409.  
  410. Name: TLIB_CLEANUP
  411.  
  412. Description:    Checks to see if there are any checked out files and presents
  413.                             a menu giving the user the option to check them back in.
  414.  
  415.                              (C) Copyright 1989 by American Cybernetics, Inc.
  416. *****************************************************************************}
  417.  
  418.     def_int( checkout_count, jx, old_win );
  419.  
  420.     refresh := false;
  421.     checkout_count := Global_Int('!TLIB_CHECKOUT_COUNT!');
  422.     IF checkout_count < 1 THEN
  423.         return_int := 1;
  424.         goto exit;
  425.     END;
  426.     old_win := window_id;
  427.     switch_window( window_count );
  428.     create_window;
  429.     jx := 0;
  430.     WHILE jx < checkout_count DO
  431.         ++jx;
  432.         put_line( Parse_Str('/F=',Global_Str('!TLIB_FILE_OUT#' + str(jx) )));
  433.         down;
  434.     END;
  435.     tof;
  436.     Set_Global_Str('EVTLIB1', '/T=Check files back in/K1=13/K2=28/R=1');
  437.     Set_Global_Str('EVTLIB2', '/T=Exit without checking files in/KC=<SPACE>/K1=32/K2=57/R=2');
  438.     Set_Global_Str('EVTLIB3', '/T=Cancel, don''t exit Multi-Edit/K1=27/K2=1/R=0');
  439.     RM('WMENU /T=TLIB: FILES CHECKED OUT/EV=EVTLIB/EV#=3');
  440.     delete_window;
  441.     switch_win_id( old_win );
  442.     IF return_int = 1 THEN
  443.         jx := checkout_count;
  444.         while jx > 0 DO
  445.             RM('TLIB /C=CHECKIN' + global_str('!TLIB_FILE_OUT#' + str(jx)));
  446.             --jx;
  447.         END;
  448.     END;
  449. EXIT:
  450. END_MACRO;
  451.  
  452.  
  453. $MACRO TLIB_RUN TRANS;
  454. {******************************MULTI-EDIT MACRO******************************
  455.  
  456. Name: TLIB_RUN
  457.  
  458. Description: Executes TLIB for interactive use.
  459.  
  460.                              (C) Copyright 1989 by American Cybernetics, Inc.
  461. *****************************************************************************}
  462.  
  463.     Return_Str := 'TLIB';
  464.     RM('MEUTIL1^EXEC /CMD=1/SWAP=4/SCREEN=2');
  465.     return_int := 100;
  466.  
  467. END_MACRO;
  468.  
  469. $MACRO TLIB_MENU TRANS;
  470. {******************************MULTI-EDIT MACRO******************************
  471.  
  472. Name: TLIB_MENU
  473.  
  474. Description: Main TLIB menu.
  475.  
  476.                              (C) Copyright 1989 by American Cybernetics, Inc.
  477. *****************************************************************************}
  478.  
  479.     def_str( gstr[20] );
  480.     refresh := false;
  481.     gstr := '!TLIB!_';
  482.     Create_Global_Str(gstr+'1','/H=/M=TLIB_DIR');
  483.     Create_Global_Str(gstr+'X1','List log files available for check out');
  484.     Create_Global_Str(gstr+'2','/S=2/M=TLIB /C=CHECKIN');
  485.     Create_Global_Str(gstr+'X2','Put current file into log (check file in)');
  486.     Create_Global_Str(gstr+'3','/S=2/M=TLIB_RUN');
  487.     Create_Global_Str(gstr+'X3','Run TLIB interactively');
  488. do_xmenu:
  489.     RM('USERIN^SUBMENU /GCLR=1/#=3/M=' + gstr + 'X' + '/S=' +global_str(gstr+'0') +'/L=TLIB INTERFACE MENU/G=' + gstr + MParm_Str);
  490. END_MACRO;
  491.  
  492.  
  493. $MACRO TlibInstall TRANS;
  494. {******************************MULTI-EDIT MACRO******************************
  495.  
  496. Name: TLIBInstall
  497.  
  498. Description: Sets up the user's STARTUP.SRC file for TLIB.
  499.  
  500.                              (C) Copyright 1989 by American Cybernetics, Inc.
  501. *****************************************************************************}
  502.     def_int( old_win );
  503.  
  504.     refresh := false;
  505.     old_win := window_id;
  506.     create_window;
  507.     return_str := 'STARTUP.SRC';
  508.     RM('LdFiles');
  509.     IF NOT(return_int) THEN
  510.         return_str := me_path + 'SRC\STARTUP.SRC';
  511.         RM('LdFiles');
  512.         IF NOT(return_int) THEN
  513.             RM('MEERROR^MessageBox /B=2/M=Unable to locate STARTUP.SRC.  TLIB installation not complete.');
  514.             goto exit;
  515.         END;
  516.     END;
  517.     IF search_fwd('Setup for TLIB',0) THEN
  518.         RM('MEERROR^MessageBox /B=1/M=STARTUP.SRC already contains TLIB setup.');
  519.         goto exit;
  520.     END;
  521.     IF search_fwd('END_MACRO;', 0) THEN
  522.         goto_col(1);
  523.         set_indent_level;
  524.         CR;
  525.         up;
  526.         Text('{************** Setup for TLIB ***************}'); CR;
  527. Text('                {Tell Multi-Edit to utilize the TLIB_GET_FILE macro if a'); CR;
  528. Text('                 FILE NOT FOUND error occurs when the user loads a file.}'); CR;
  529. Text('    set_global_str(''@FNF_LOAD_MACRO@'', ''TLIB^TLIB_GET_FILE'');'); CR;
  530.     set_global_str('@FNF_LOAD_MACRO@', 'TLIB^TLIB_GET_FILE');
  531. CR;
  532. Text('                {Setup the switches to use for checking out a file.'); CR;
  533. Text('                 E is the default switch. }'); CR;
  534. Text('    set_global_str(''!TLIB_GET_CMD!'', ''TLIB P <PATH> E <NAME>.<EXT> '' );'); CR;
  535.     set_global_str('!TLIB_GET_CMD!', 'TLIB P <PATH> E <NAME>.<EXT> ' );
  536. CR;
  537. Text('                {Setup other TLIB parameters}'); CR;
  538. Text('    set_global_str(''!TLIB_PARMS!'', ''/LIBEXT=TLB'');'); CR;
  539.     set_global_str('!TLIB_PARMS!', '/LIBEXT=TLB');
  540. CR;
  541. Text('                {Tell Multi-Edit to call the TLIB_CLEANUP macro before'); CR;
  542. Text('                 exiting.  Only use this if you want to be prompted to'); CR;
  543. Text('                 check files back in before exiting.}'); CR;
  544. Text('    set_global_str(''@ME_EXIT_MACRO@'', ''TLIB^TLIB_CLEANUP'');'); CR;
  545.     set_global_str('@ME_EXIT_MACRO@', 'TLIB^TLIB_CLEANUP');
  546.         Text('{*********************************************}'); CR;
  547.  
  548.         Save_File;
  549.         Return_Str := me_path + 'MEMAC -P' + me_path + ' ' + file_name + ' > ' +
  550.                                     me_path + user_id + 'SETER.TMP';
  551.         RM('EXEC /CMD=1/SWAP=4/MEM=120');
  552.         IF error_level = 0 THEN
  553.             load_file(me_path + user_id + 'SETER.TMP');
  554.             IF error_level = 0 THEN
  555.                 IF search_fwd('ERROR',0) THEN
  556.                     RM('MEERROR^MessageBox /B=2/M=Error occurred compiling SETUP.SRC.');
  557.                     goto exit;
  558.                 END;
  559.             END;
  560.         END;
  561.         RM('MEERROR^MessageBox /M=Your STARTUP macro has been modified to initialize the TLIB support.');
  562.     END;
  563. EXIT:
  564.     delete_window;
  565.     switch_win_id( old_win );
  566. END_MACRO;
  567.