Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Segment.H
Message
From
07/07/2021 11:05:16
 
 
To
All
General information
Forum:
Visual FoxPro
Category:
Other
Title:
Segment.H
Miscellaneous
Thread ID:
01681722
Message ID:
01681722
Views:
105
This a Header file to add a set of commands to the VFP code base. It does not alter VFP in any way. It only provides a little bit better readability to the source code.

I created it because in several places in my code I was using DO WHILE loops to provide a means to exit a code blocks. By defining these SEGMENT statements, the was easier for me to follow. I realize it probably violates some practical code design, but it does help keep the code readable.
Copy and Paste the code to a file called Segment.H.
* 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!"
Greg Reichert
Next
Reply
Map
View

Click here to load this message in the networking platform