* Program: SEGMENT.H * Description: VFP Language Extension - Segment Blocks * Created: 05/19/2019 08:07:03 EST * Developer: Gregory Lynn Reichert (GregReichert70@GMail.com) - UT #046387 * Compiler: Visual FoxPro 09.00.0000.7423 for Windows * Abstract: * Copyright: Copyright (c) 2019 GLR Software *============================================================ *--- Description -------------------------------------------- * FOR BETTER CODE READABILITY ONLY. * Creates a looping structures using a plain DO WHILE .T. / ENDDO. * *--- Maintenance -------------------------------------------- * Id Date By Description * 1 05/19/2019 GLR Initial Creation * 2 11/20/2019 GLR Added Tokens to fdkeywrd.dbf, and distibuted to all folder locations. * 3 07/07/2021 GLR Corrected the updating the Beautify utility use indent the SEGMENT blocks. * *--- Rules -------------------------------------------------- * - Follows the basic rules that apply to the DO WHILE / ENDDO commands. * - BEGIN_SEGMENT must have a END_SEGMENT. * - Any text following a SEGMENT command are ignored. The only exception is the BEGIN_SEGMENT; An .AND.<condition> can be added to extend the loop condition. * ( I use quote a string to help identify the Segment block. ) * *--- History ------------------------------------------------ *--- ToDo --------------------------------------------------- *------------------------------------------------------------ * Granting permission to write to the VFP folder. * 1. I selected the "C:\Program Files (x86)\Microsoft Visual FoxPro 9\" folder in the File Manager. * 2. Right-clicked the folder, and selected the "Properties". * 3. Selected the "Security" tab at the top. * 4. Clicked the "Edit..." button to open the "Security" dialog. * 5. In the "Group or user names:" listbox, selected the "users (SNOOPY\Users)" item. (computer name may vary on your machine.) * 6. In the "Permission for Users" listbox, checked the "Full Control" checkbox. * 7. Clicked the "Apply" button. A moment later... * 8. Clicked the "Ok" button to exit the "Security" dialog. * 9. Clicked the "Ok" button to close the "Properties" dialog. * 10. Now the VFP folder has the permission to be writen to. * *------------------------------------------------------------ *** Update the tables used by the Beautify.app and Documentation Wizard. * * Original Copies of the DBF are located in: * HOME() * HOME()\Tools\Analyzer * HOME()\Tools\xsource\VFPSource\Wizards\wzfoxdoc * HOME()\Wizards #IF .F. * After establishing write permission to the VFP folder. Run this code. CLOSE ALL SELECT * FROM (HOME()+"tools\analyzer\fdKeywrd.dbf") WHERE Token="Begin_Segment" INTO ARRAY aSegement IF _TALLY=0 INSERT INTO (HOME()+"tools\analyzer\fdKeywrd.dbf") (Token, CODE) VALUES ("Begin_Segment","I") INSERT INTO (HOME()+"tools\analyzer\fdKeywrd.dbf") (Token, CODE) VALUES ("End_Segment","U") ENDIF SELECT * FROM (HOME()+"wizards\fdKeywrd.dbf") WHERE Token="Begin_Segment" INTO ARRAY aSegement IF _TALLY=0 INSERT INTO (HOME()+"wizards\fdKeywrd.dbf") (Token, CODE) VALUES ("Begin_Segment","I") INSERT INTO (HOME()+"wizards\fdKeywrd.dbf") (Token, CODE) VALUES ("End_Segment","U") ENDIF SELECT * FROM (HOME()+"Tools\xsource\VFPSource\Wizards\wzfoxdoc\fdindent.dbf") WHERE Token="Begin_Segment" INTO ARRAY aSegement IF _TALLY=0 INSERT INTO (HOME()+"Tools\xsource\VFPSource\Wizards\wzfoxdoc\fdindent.dbf") (Token, CODE) VALUES ("BEGIN_SEGMENT","I") INSERT INTO (HOME()+"Tools\xsource\VFPSource\Wizards\wzfoxdoc\fdindent.dbf") (Token, CODE) VALUES ("END_SEGMENT","U") ENDIF CLOSE ALL #ENDIF *--- Examples ----------------------------------------------- #IF .F. ASSERT .F. opt = 1 BEGIN_SEGMENT "Test" DO CASE CASE opt=1 opt = 3 CONTINUE_SEGMENT "Test" && jump to '* do something' line. CASE opt=2 EXIT_SEGMENT "Test" && exit segment block CASE opt=3 opt = 2 REPEAT_SEGMENT "Test" && jump to start of segment ENDCASE * do something BEGIN_SEGMENT "something" * do more EXIT_SEGMENT "something" END_SEGMENT "something" END_SEGMENT "Test" #ENDIF *------------------------------------------------------------ * Directives Code Keywords. #DEFINE BEGIN_SEGMENT DO WHILE .T. #DEFINE CONTINUE_SEGMENT * CONTINUE Segment #DEFINE EXIT_SEGMENT EXIT #DEFINE REPEAT_SEGMENT LOOP #DEFINE END_SEGMENT ENDDO * * EOF SEGMENT.H *"Let the flaming begin!"