Uniface User Forum

 View Only
Expand all | Collapse all

IDE_API_n : Get current position in a ProcContainer

  • 1.  IDE_API_n : Get current position in a ProcContainer

    Posted 07-10-2024 04:19

    Hi Freaks

    I have just managed to integrate my "prettifier" into U10 :-)
    At the end, <refresh> is also called (or better set to True) so that the result can be accessed immediately.
    The only problem is that the refresh sets the position in the script back to (1,1).
    Any idea how to get the current position before the refresh and then set the cursor back to the old position?
    Ingo



    ------------------------------
    Ingo Stiller
    Aareon Deutschland GmbH
    ------------------------------


  • 2.  RE: IDE_API_n : Get current position in a ProcContainer

    Posted 07-10-2024 09:48

    I have been considering a prettifier for a while now... specifically putting an 'end'  after every entry/operation/etc.

    My though was to do the parse in the xml rather than in the idf.  So, an all at once or even an entire application at once.

    Is your approach to capture the text in the script window, modify it, and put it back?



    ------------------------------
    Osman Shariff
    ------------------------------



  • 3.  RE: IDE_API_n : Get current position in a ProcContainer

    Posted 07-10-2024 10:02
    Edited by Ingo Stiller 07-10-2024 10:04

    My prettifier consist of two parts.

    1. One to get the context of a trigger and write it back
    2. Second to prettify a "text"

    The first part loops over every possible proc container in component (UFORM,UXGROUP,UXFIELD,*)
    For each trigget it reads the content from database, feed the prettier and write back the new content.
    This can be done for a list of components (loop over UFORM)  or as in UF10, called from the IDE**)
    The pretifier itselfs does not know where from the "text" is.
    In UF9 (and U10 too) I do have as an addition a simple form with a text field: Paste proc code into it, then press "prettify" and then copy&past it back to any trigger I want e.g. into globale procedures or includes.

    *) the list of possible triggers is defined in a table: On part of the a primary key is the uniface version so these loops works in all UnifAce versions 

    **) As in UF10, every modification in a form is directly stored and commited, I can take the content from database.


    Ingo



    ------------------------------
    Ingo Stiller
    Aareon Deutschland GmbH
    ------------------------------



  • 4.  RE: IDE_API_n : Get current position in a ProcContainer

    Posted 07-10-2024 10:38

    So, you can choose to prettify the frm in one go if you wanted.... Sounds great

    I wrote a simple form too, but so far only to convert old fashioned variable names to camel styling.   



    ------------------------------
    Osman Shariff
    ------------------------------



  • 5.  RE: IDE_API_n : Get current position in a ProcContainer

    Posted 07-10-2024 11:03

    Hi Osman

    Have a look into this thread:
    https://community.rocketsoftware.com/discussion/as-there-is-no-wish-list-yet-two-small-wishes
    7.  RE: As there is no wish list yet :two small wishes :-)
    There you find two picture describing a little bit what the tool does

    And under
    https://community.rocketsoftware.com/discussion/formating-proc-code-how
    11.  RE: Formating proc code: how?
    You will find the definition that I currently use

    Ingo



    ------------------------------
    Ingo Stiller
    Aareon Deutschland GmbH
    ------------------------------



  • 6.  RE: IDE_API_n : Get current position in a ProcContainer

    Posted 07-10-2024 11:15

    Thanks..... The 'end' thing is exactly what I would like too.... 

    We have many compiler info messages for missing 'end's...



    ------------------------------
    Osman Shariff
    ------------------------------



  • 7.  RE: IDE_API_n : Get current position in a ProcContainer

    Posted 07-10-2024 11:25

    Hi Osman
    One draw back with my current solution:
    The prettifier will insert a END, but ....
    But with precompiler directives it is not clear before of after such #-statements.
    Oky, I have too much time, I can consider to implement a interpreter for #statements in combination with normal proc code. 
    The parser/interpreter for #-statements and the normal things currently work more or less independently of each other. The result is 90% correct, but not always.

    Ingo



    ------------------------------
    Ingo Stiller
    Aareon Deutschland GmbH
    ------------------------------



  • 8.  RE: IDE_API_n : Get current position in a ProcContainer

    Posted 07-10-2024 11:18

    Another example:

    Before
    I "mess up" the operation  EXEC
    Then I use the action "Prettify"

    After
    I have to scroll down to "OPERATION EXEC" (that's why I open this thread)
    The Operation is prettified :-)



    ------------------------------
    Ingo Stiller
    Aareon Deutschland GmbH
    ------------------------------



  • 9.  RE: IDE_API_n : Get current position in a ProcContainer

    Posted 07-11-2024 08:59

    Ingo 

    In uniface 10402 there we have introduced code formatting.  See the popup menu in the code editor.

    It has all kinds of customization options with the widget properties and the editor setup in the ASN file. 

    See:

    https://docs.rocketsoftware.com/bundle/uniface_104/page/nnv1708416648908.html

    Hope this helps.

    Jasper de Keijzer



    ------------------------------
    Jasper DeKeijzer
    Rocket Internal - All Brands
    ------------------------------



  • 10.  RE: IDE_API_n : Get current position in a ProcContainer

    Posted 07-11-2024 09:06

    Is there an insert 'end' in the formatting document function .... That would be a No1 priority for many having migrated.



    ------------------------------
    Osman Shariff
    ------------------------------



  • 11.  RE: IDE_API_n : Get current position in a ProcContainer

    Posted 07-11-2024 09:38

    Hi Jasper


    I know and die already test it.
    The advantgae of the UnifAce solutaion is, that it is inside the editor.
    But that does not checkif the code is "well formed" and mabe correct it (see in thread the discusion about missing  'END')
    And my code does also a  liitle bit of extra as it add cooments to the END, Upper/lowercase statements

    Before

    TrIggEr   WORLD
      IF    (1)
     ; a comment
    CALL hello
            goto TAG_XYZ
        EndIf
    TAG_xyz:

    UnifAce

    TrIggEr   WORLD
        IF    (1)
            ; a comment
            CALL hello
            goto TAG_XYZ
        EndIf
        TAG_xyz:

    Our prettifier

    TRIGGER WORLD
      IF(1)
        ; a comment
        call hello
        goto TAG_XYZ
      ENDIF
     TAG_xyz:
    END ; WORLD

    And as already said, I can loop  over components and all triggers in the component.
    So if I want to (and my colleagues allow it), I'll have a cleanly formatted application in a few hours

    Oh yes, another huge advantage. I can change the algorithm myself and add new "gimmicks"  :-)

    Ingo



    ------------------------------
    Ingo Stiller
    Aareon Deutschland GmbH
    ------------------------------



  • 12.  RE: IDE_API_n : Get current position in a ProcContainer

    Posted 07-11-2024 09:49

    BTW
    Before
    trigger X
    if (1)
    elseif(2)
        endif
    else
        endif

    UnifAce

    trigger X
        if (1)
            elseif(2)
        endif
        else
        endif

    ProFund

    TRIGGER X
      IF(1)
      ELSEIF(2)
      ENDIF
    ;*** WARNING:'ELSE' hat keinen passenden Begin
    ELSE
    ;*** WARNING:'ENDIF' hat keinen passenden Begin
    ENDIF
    END ; X

    And in the message lines of the prettifier
    Programmcode fehlerhaft: ELSE hat keinen passenden Beginn (Zeile=5)
    Programmcode fehlerhaft: ENDIF hat keinen passenden Beginn (Zeile=7)

    Faulty programme code: ELSE has no matching start (line=5)
     Faulty programme code: ENDIF has no matching start (line=7)



    ------------------------------
    Ingo Stiller
    Aareon Deutschland GmbH
    ------------------------------



  • 13.  RE: IDE_API_n : Get current position in a ProcContainer

    Posted 07-11-2024 09:59

    if anyone wants a little insight into the Prettifier's approach :-)

    This a run on a test-script (under 'Vorher')
    The run doesn't take a second
    At the end under 'Nacher' you can find the result

    IP1109T   : ---------------------------------------------- Vorher -----------------------------------------------
    ELSE
    FORENTITY "hello"
    WHILE
    IF
    END
    ENTRY X
    FORENTITY "hello"
    WHILE
    IF
    END
    IP1109T   : -----------------------------------------------------------------------------------------------------
    IP1109T   : --------------------------------------- Start 'PHASE Parse 1' ---------------------------------------
    IP1109T   : TOK1_BEG=1,TOK1_END=4,TOK2_BEG=0,TOK2_END=0,BRACKET_END=0,STMT_END=4,COMMENT=0
    IP1109T   :    'ELSE'
    IP1109T   : t1b ^
    IP1109T   : t1e    ^
    IP1109T   : se     ^
    IP1109T   : VERB='ELSE',BL1=0,BL2=0
    +[  1- ] C  ELSE            (±1)    (0)'ELSE'                            ('V3=MV5=I*ULC=1SEP=1')
    IP1109T   : TOK1_BEG=1,TOK1_END=9,TOK2_BEG=17,TOK2_END=0,BRACKET_END=0,STMT_END=17,COMMENT=0
    IP1109T   :    'FORENTITY "hello"'
    IP1109T   : t1b ^
    IP1109T   : t1e         ^
    IP1109T   : t2b                 ^
    IP1109T   : se                  ^
    IP1109T   : VERB='FORENTITY',BL1=0,BL2=0
    +[  2- ] C  FORENTITY       (+1)    (0)'FORENTITY "hello"'               ('V3=BV5=F*ULC=1SEP=1')
    IP1109T   : TOK1_BEG=1,TOK1_END=5,TOK2_BEG=0,TOK2_END=0,BRACKET_END=0,STMT_END=5,COMMENT=0
    IP1109T   :    'WHILE'
    IP1109T   : t1b ^
    IP1109T   : t1e     ^
    IP1109T   : se      ^
    IP1109T   : VERB='WHILE',BL1=0,BL2=0
    +[  3- ] C  WHILE           (+1)    (0)'WHILE'                           ('V3=BV5=W*ULC=1SEP=1')
    IP1109T   : TOK1_BEG=1,TOK1_END=2,TOK2_BEG=0,TOK2_END=0,BRACKET_END=0,STMT_END=2,COMMENT=0
    IP1109T   :    'IF'
    IP1109T   : t1b ^
    IP1109T   : t1e  ^
    IP1109T   : se   ^
    IP1109T   : VERB='IF',BL1=0,BL2=0
    +[  4- ] C  IF              (+1)    (0)'IF'                              ('V3=BV5=I*ULC=1SEP=1')
    IP1109T   : TOK1_BEG=1,TOK1_END=3,TOK2_BEG=0,TOK2_END=0,BRACKET_END=0,STMT_END=3,COMMENT=0
    IP1109T   :    'END'
    IP1109T   : t1b ^
    IP1109T   : t1e   ^
    IP1109T   : se    ^
    IP1109T   : VERB='END',BL1=0,BL2=0
    +[  5- ] C  END             (10)    (0)'END'                             ('V3=EV5=E*ULC=USEP=T')
    IP1109T   : TOK1_BEG=1,TOK1_END=5,TOK2_BEG=7,TOK2_END=0,BRACKET_END=0,STMT_END=7,COMMENT=0
    IP1109T   :    'ENTRY X'
    IP1109T   : t1b ^
    IP1109T   : t1e     ^
    IP1109T   : t2b       ^
    IP1109T   : se        ^
    IP1109T   : VERB='ENTRY',BL1=0,BL2=0
    +[  6- ] C  ENTRY           (01)    (0)'ENTRY X'                         ('V3=BV5=E*ULC=USEP=TNAM=X')
    IP1109T   : TOK1_BEG=1,TOK1_END=9,TOK2_BEG=17,TOK2_END=0,BRACKET_END=0,STMT_END=17,COMMENT=0
    IP1109T   :    'FORENTITY "hello"'
    IP1109T   : t1b ^
    IP1109T   : t1e         ^
    IP1109T   : t2b                 ^
    IP1109T   : se                  ^
    IP1109T   : VERB='FORENTITY',BL1=0,BL2=0
    +[  7- ] C  FORENTITY       (+1)    (0)'FORENTITY "hello"'               ('V3=BV5=F*ULC=1SEP=1')
    IP1109T   : TOK1_BEG=1,TOK1_END=5,TOK2_BEG=0,TOK2_END=0,BRACKET_END=0,STMT_END=5,COMMENT=0
    IP1109T   :    'WHILE'
    IP1109T   : t1b ^
    IP1109T   : t1e     ^
    IP1109T   : se      ^
    IP1109T   : VERB='WHILE',BL1=0,BL2=0
    +[  8- ] C  WHILE           (+1)    (0)'WHILE'                           ('V3=BV5=W*ULC=1SEP=1')
    IP1109T   : TOK1_BEG=1,TOK1_END=2,TOK2_BEG=0,TOK2_END=0,BRACKET_END=0,STMT_END=2,COMMENT=0
    IP1109T   :    'IF'
    IP1109T   : t1b ^
    IP1109T   : t1e  ^
    IP1109T   : se   ^
    IP1109T   : VERB='IF',BL1=0,BL2=0
    +[  9- ] C  IF              (+1)    (0)'IF'                              ('V3=BV5=I*ULC=1SEP=1')
    IP1109T   : TOK1_BEG=1,TOK1_END=3,TOK2_BEG=0,TOK2_END=0,BRACKET_END=0,STMT_END=3,COMMENT=0
    IP1109T   :    'END'
    IP1109T   : t1b ^
    IP1109T   : t1e   ^
    IP1109T   : se    ^
    IP1109T   : VERB='END',BL1=0,BL2=0
    +[ 10- ] C  END             (10)    (0)'END'                             ('V3=EV5=E*ULC=USEP=T')
    IP1109T   : ---------------------------------------- End 'PHASE Parse 1' ----------------------------------------
    IP1109T   : --------------------------------------- Start 'PHASE Parse 2' ---------------------------------------
    IP1109T   : Erste Programmzeile ist kein ENTRY-Statement -> Dummy-Entry-Start einfügen
     1 +[  1- ] C  *DY_ENTRY       (01)    (0)''                                ('V3=BV5=E*NAM=*TRIGGER_NAM')
    Stack-Peek:Kein Element auf dem Stack
    Stack[ 1]+='V5=E*V=*DY_ENTRYLS=1NAM=*TRIGGER_NAM'
     1  2 <~[  1- ]                            (0)''                            
     1  2 < [  1-1] C  *DY_ENTRY       (01)    (0)''                                ('V3=BV5=E*NAM=*TRIGGER_NAMLX=1')
    Stack[ 1] ='V5=E*V=*DY_ENTRYLS=1NAM=*TRIGGER_NAM'
    IP1109T   : ---  ---
    IP1109T   : Programmcode fehlerhaft: ELSE hat keinen passenden Beginn (Zeile=2)
    IP1109T   :   [1]
    IP1109T   :  >[2] ELSE
    IP1109T   :   [3] FORENTITY "hello"
    IP1109T   :   [4] WHILE
    IP1109T   :   [5] IF
    IP1109T   : -------------------
     1 +[  2- ] ;  ;1              (0R)    (0)''                                (0);'*** WARNING:'ELSE' hat keinen passenden Begin'
     1  2 . [  2- ] ;  ;1              (0R)    (0)''                                (0);'*** WARNING:'ELSE' hat keinen passenden Begin'
     1 <~[  3- ]                            (0)''                            
     1 < [  3- ] C  ELSE            (±1)    (0)'ELSE'                            ('V3=MV5=I*ULC=1SEP=1LX=1')
    Stack[ 2]+='V5=F*V=FORENTITYLS=4'
     1 <~[  4- ]                            (0)''                            
     1 < [  4-2] C  FORENTITY       (+1)    (0)'FORENTITY "hello"'               ('V3=BV5=F*ULC=1SEP=1LX=1')
    Stack[ 3]+='V5=W*V=WHILELS=5'
     1 <~[  5- ]                            (0)''                            
     1 < [  5-3] C  WHILE           (+1)    (0)'WHILE'                           ('V3=BV5=W*ULC=1SEP=1LX=1')
    Stack[ 4]+='V5=I*V=IFLS=6'
     1 <~[  6- ]                            (0)''                            
     1 < [  6-4] C  IF              (+1)    (0)'IF'                              ('V3=BV5=I*ULC=1SEP=1LX=1')
    Stack[ 4] ='V5=I*V=IFLS=6'
    IP1109T   : ---  ---
    IP1109T   : Nicht abgeschlossenes 'IF' aus Zeile 6
    IP1109T   :   [3] ELSE
    IP1109T   :   [4] FORENTITY "hello"
    IP1109T   :   [5] WHILE
    IP1109T   :  >[6] IF
    IP1109T   :  >[7] END
    IP1109T   :   [8] ENTRY X
    IP1109T   :   [9] FORENTITY "hello"
    IP1109T   :   [10] WHILE
    IP1109T   : -------------------
     1 +[  7- ] ;  ;1              (0R)    (0)''                                (0);'*** ERROR:Nicht abgeschlossenes 'IF' aus Zeile 6'
     1  2 . [  7- ] ;  ;1              (0R)    (0)''                                (0);'*** ERROR:Nicht abgeschlossenes 'IF' aus Zeile 6'
    Stack[ 4]-='V5=I*V=IFLS=6'
    IP1109T   : :Nicht abgeschlossenes (V5=I*V=IFLS=6)
    Stack[ 3] ='V5=W*V=WHILELS=5'
    IP1109T   : ---  ---
    IP1109T   : Nicht abgeschlossenes 'WHILE' aus Zeile 5
    IP1109T   :   [2]  ; *** WARNING:'ELSE' hat keinen passenden Begin
    IP1109T   :   [3] ELSE
    IP1109T   :   [4] FORENTITY "hello"
    IP1109T   :  >[5] WHILE
    IP1109T   :   [6] IF
    IP1109T   :  >[7]  ; *** ERROR:Nicht abgeschlossenes 'IF' aus Zeile 6
    IP1109T   :   [8] END
    IP1109T   :   [9] ENTRY X
    IP1109T   :   [10] FORENTITY "hello"
    IP1109T   : -------------------
     1 +[  8- ] ;  ;1              (0R)    (0)''                                (0);'*** ERROR:Nicht abgeschlossenes 'WHILE' aus Zeile 5'
     1  2 . [  8- ] ;  ;1              (0R)    (0)''                                (0);'*** ERROR:Nicht abgeschlossenes 'WHILE' aus Zeile 5'
    Stack[ 3]-='V5=W*V=WHILELS=5'
    IP1109T   : :Nicht abgeschlossenes (V5=W*V=WHILELS=5)
    Stack[ 2] ='V5=F*V=FORENTITYLS=4'
    IP1109T   : ---  ---
    IP1109T   : Nicht abgeschlossenes 'FORENTITY' aus Zeile 4
    IP1109T   :   [1]
    IP1109T   :   [2]  ; *** WARNING:'ELSE' hat keinen passenden Begin
    IP1109T   :   [3] ELSE
    IP1109T   :  >[4] FORENTITY "hello"
    IP1109T   :   [5] WHILE
    IP1109T   :   [6] IF
    IP1109T   :  >[7]  ; *** ERROR:Nicht abgeschlossenes 'IF' aus Zeile 6
    IP1109T   :   [8]  ; *** ERROR:Nicht abgeschlossenes 'WHILE' aus Zeile 5
    IP1109T   :   [9] END
    IP1109T   :   [10] ENTRY X
    IP1109T   : -------------------
     1 +[  9- ] ;  ;1              (0R)    (0)''                                (0);'*** ERROR:Nicht abgeschlossenes 'FORENTITY' aus Zeile 4'
     1  2 . [  9- ] ;  ;1              (0R)    (0)''                                (0);'*** ERROR:Nicht abgeschlossenes 'FORENTITY' aus Zeile 4'
    Stack[ 2]-='V5=F*V=FORENTITYLS=4'
    IP1109T   : :Nicht abgeschlossenes (V5=F*V=FORENTITYLS=4)
    Stack[ 1] ='V5=E*V=*DY_ENTRYLS=1NAM=*TRIGGER_NAM'
     1 ~[  1-1] C  *DY_ENTRY   10  (01)    (0)''                                ('V3=BV5=E*NAM=*TRIGGER_NAMLX=1')
    Stack[ 1]-='V5=E*V=*DY_ENTRYLS=1NAM=*TRIGGER_NAM'
     1 <~[ 10- ]                            (0)''                            
     1 < [ 10- ] C  END        ^1   (10)    (0)'END'                             ('V3=EV5=E*ULC=USEP=TLX=1')
    Stack-Peek:Kein Element auf dem Stack
     1 +[ 11- ] -  -               (0R)    (0)''                                ('DSC=Leerzeile')
     1  2 . [ 11- ] -  -               (0R)    (0)''                                ('DSC=Leerzeile')
     1 +[ 12- ] -  -               (0R)    (0)''                                ('DSC=Leerzeile')
     1  2 . [ 12- ] -  -               (0R)    (0)''                                ('DSC=Leerzeile')
    Stack[ 1]+='V5=E*V=ENTRYLS=13NAM=X'
     1 <~[ 13- ]                            (0)''                            
     1 < [ 13-1] C  ENTRY           (01)    (0)'ENTRY X'                         ('V3=BV5=E*ULC=USEP=TNAM=XLX=13')
    Stack[ 2]+='V5=F*V=FORENTITYLS=14'
     1 <~[ 14- ]                            (0)''                            
     1 < [ 14-2] C  FORENTITY       (+1)    (0)'FORENTITY "hello"'               ('V3=BV5=F*ULC=1SEP=1LX=13')
    Stack[ 3]+='V5=W*V=WHILELS=15'
     1 <~[ 15- ]                            (0)''                            
     1 < [ 15-3] C  WHILE           (+1)    (0)'WHILE'                           ('V3=BV5=W*ULC=1SEP=1LX=13')
    Stack[ 4]+='V5=I*V=IFLS=16'
     1 <~[ 16- ]                            (0)''                            
     1 < [ 16-4] C  IF              (+1)    (0)'IF'                              ('V3=BV5=I*ULC=1SEP=1LX=13')
    Stack[ 4] ='V5=I*V=IFLS=16'
    IP1109T   : --- ENTRY X ---
    IP1109T   : Nicht abgeschlossenes 'IF' aus Zeile 16
    IP1109T   :   [13] ENTRY X
    IP1109T   :   [14] FORENTITY "hello"
    IP1109T   :   [15] WHILE
    IP1109T   :  >[16] IF
    IP1109T   :  >[17] END
    IP1109T   : -------------------
     1 +[ 17- ] ;  ;1              (0R)    (0)''                                (0);'*** ERROR:Nicht abgeschlossenes 'IF' aus Zeile 16'
     1  2 . [ 17- ] ;  ;1              (0R)    (0)''                                (0);'*** ERROR:Nicht abgeschlossenes 'IF' aus Zeile 16'
    Stack[ 4]-='V5=I*V=IFLS=16'
    IP1109T   : :Nicht abgeschlossenes (V5=I*V=IFLS=16)
    Stack[ 3] ='V5=W*V=WHILELS=15'
    IP1109T   : --- ENTRY X ---
    IP1109T   : Nicht abgeschlossenes 'WHILE' aus Zeile 15
    IP1109T   :   [12]
    IP1109T   :   [13] ENTRY X
    IP1109T   :   [14] FORENTITY "hello"
    IP1109T   :  >[15] WHILE
    IP1109T   :   [16] IF
    IP1109T   :  >[17]  ; *** ERROR:Nicht abgeschlossenes 'IF' aus Zeile 16
    IP1109T   :   [18] END
    IP1109T   : -------------------
     1 +[ 18- ] ;  ;1              (0R)    (0)''                                (0);'*** ERROR:Nicht abgeschlossenes 'WHILE' aus Zeile 15'
     1  2 . [ 18- ] ;  ;1              (0R)    (0)''                                (0);'*** ERROR:Nicht abgeschlossenes 'WHILE' aus Zeile 15'
    Stack[ 3]-='V5=W*V=WHILELS=15'
    IP1109T   : :Nicht abgeschlossenes (V5=W*V=WHILELS=15)
    Stack[ 2] ='V5=F*V=FORENTITYLS=14'
    IP1109T   : --- ENTRY X ---
    IP1109T   : Nicht abgeschlossenes 'FORENTITY' aus Zeile 14
    IP1109T   :   [11]
    IP1109T   :   [12]
    IP1109T   :   [13] ENTRY X
    IP1109T   :  >[14] FORENTITY "hello"
    IP1109T   :   [15] WHILE
    IP1109T   :   [16] IF
    IP1109T   :  >[17]  ; *** ERROR:Nicht abgeschlossenes 'IF' aus Zeile 16
    IP1109T   :   [18]  ; *** ERROR:Nicht abgeschlossenes 'WHILE' aus Zeile 15
    IP1109T   :   [19] END
    IP1109T   : -------------------
     1 +[ 19- ] ;  ;1              (0R)    (0)''                                (0);'*** ERROR:Nicht abgeschlossenes 'FORENTITY' aus Zeile 14'
     1  2 . [ 19- ] ;  ;1              (0R)    (0)''                                (0);'*** ERROR:Nicht abgeschlossenes 'FORENTITY' aus Zeile 14'
    Stack[ 2]-='V5=F*V=FORENTITYLS=14'
    IP1109T   : :Nicht abgeschlossenes (V5=F*V=FORENTITYLS=14)
    Stack[ 1] ='V5=E*V=ENTRYLS=13NAM=X'
     1 ~[ 13-1] C  ENTRY       20  (01)    (0)'ENTRY X'                         ('V3=BV5=E*ULC=USEP=TNAM=XLX=13')
    Stack[ 1]-='V5=E*V=ENTRYLS=13NAM=X'
     1 <~[ 20- ]                            (0)''                            
     1 < [ 20- ] C  END        ^13  (10)    (0)'END'                             ('V3=EV5=E*ULC=USEP=TLX=13')
    Stack-Peek:Kein Element auf dem Stack
    Stack-Peek:Kein Element auf dem Stack
    IP1109T   : ---------------------------------------- End 'PHASE Parse 2' ----------------------------------------
    IP1109T   : ============================================= LD-Liste ==============================================
    [  1-1] C  *DY_ENTRY   10  (01)    (0)''                                ('V3=BV5=E*NAM=*TRIGGER_NAMLX=1')
    [  2- ] ;  ;1              (0R)    (0)''                                (0);'*** WARNING:'ELSE' hat keinen passenden Begin'
    [  3- ] C  ELSE            (±1)    (0)'ELSE'                            ('V3=MV5=I*ULC=1SEP=1LX=1')
    [  4-2] C  FORENTITY       (+1)    (0)'FORENTITY "hello"'               ('V3=BV5=F*ULC=1SEP=1LX=1')
    [  5-3] C  WHILE           (+1)    (0)'WHILE'                           ('V3=BV5=W*ULC=1SEP=1LX=1')
    [  6-4] C  IF              (+1)    (0)'IF'                              ('V3=BV5=I*ULC=1SEP=1LX=1')
    [  7- ] ;  ;1              (0R)    (0)''                                (0);'*** ERROR:Nicht abgeschlossenes 'IF' aus Zeile 6'
    [  8- ] ;  ;1              (0R)    (0)''                                (0);'*** ERROR:Nicht abgeschlossenes 'WHILE' aus Zeile 5'
    [  9- ] ;  ;1              (0R)    (0)''                                (0);'*** ERROR:Nicht abgeschlossenes 'FORENTITY' aus Zeile 4'
    [ 10- ] C  END        ^1   (10)    (0)'END'                             ('V3=EV5=E*ULC=USEP=TLX=1')
    [ 11- ] -  -               (0R)    (0)''                                ('DSC=Leerzeile')
    [ 12- ] -  -               (0R)    (0)''                                ('DSC=Leerzeile')
    [ 13-1] C  ENTRY       20  (01)    (0)'ENTRY X'                         ('V3=BV5=E*ULC=USEP=TNAM=XLX=13')
    [ 14-2] C  FORENTITY       (+1)    (0)'FORENTITY "hello"'               ('V3=BV5=F*ULC=1SEP=1LX=13')
    [ 15-3] C  WHILE           (+1)    (0)'WHILE'                           ('V3=BV5=W*ULC=1SEP=1LX=13')
    [ 16-4] C  IF              (+1)    (0)'IF'                              ('V3=BV5=I*ULC=1SEP=1LX=13')
    [ 17- ] ;  ;1              (0R)    (0)''                                (0);'*** ERROR:Nicht abgeschlossenes 'IF' aus Zeile 16'
    [ 18- ] ;  ;1              (0R)    (0)''                                (0);'*** ERROR:Nicht abgeschlossenes 'WHILE' aus Zeile 15'
    [ 19- ] ;  ;1              (0R)    (0)''                                (0);'*** ERROR:Nicht abgeschlossenes 'FORENTITY' aus Zeile 14'
    [ 20- ] C  END        ^13  (10)    (0)'END'                             ('V3=EV5=E*ULC=USEP=TLX=13')
    IP1109T   : =====================================================================================================
    IP1109T   : --------------------------------------- Start 'PHASE Format' ----------------------------------------
    FMT[  1-1>0] C  *DY_ENTRY :   0+1000=0   +   1=   1:    ''
    FMT[  2- >0] ;  ;1        :   1+1000=0   +2000=   1:    ''
    IP1109T   : FMTP[1/1][0,0]    =''    [0]    ='*** WARNING:'ELSE' hat keinen passenden Begin'
    FMT[  3- >0] C  ELSE      :   1+  -1=0   +   1=   1:    'ELSE'
    IP1109T   : FMTP[1/1][0,0]    ='ELSE'    [0]    =''
    FMT[  4-2>1] C  FORENTITY :   1+    =1   +   1=   2:    'FORENTITY "hello"'
    IP1109T   : FMTP[1/1][2,0]    ='FORENTITY "hello"'    [0]    =''
    FMT[  5-3>2] C  WHILE     :   2+    =2   +   1=   3:    'WHILE'
    IP1109T   : FMTP[1/1][4,0]    ='WHILE'    [0]    =''
    FMT[  6-4>3] C  IF        :   3+    =3   +   1=   4:    'IF'
    IP1109T   : FMTP[1/1][6,0]    ='IF'    [0]    =''
    FMT[  7- >0] ;  ;1        :   4+1000=0   +2000=   4:    ''
    IP1109T   : FMTP[1/1][0,0]    =''    [0]    ='*** ERROR:Nicht abgeschlossenes 'IF' aus Zeile 6'
    FMT[  8- >0] ;  ;1        :   4+1000=0   +2000=   4:    ''
    IP1109T   : FMTP[1/1][0,0]    =''    [0]    ='*** ERROR:Nicht abgeschlossenes 'WHILE' aus Zeile 5'
    FMT[  9- >0] ;  ;1        :   4+1000=0   +2000=   4:    ''
    IP1109T   : FMTP[1/1][0,0]    =''    [0]    ='*** ERROR:Nicht abgeschlossenes 'FORENTITY' aus Zeile 4'
    FMT[ 10- >0] C  END       :   4+1000=0   +1000=   0:    'END'
    IP1109T   : FMTP[1/1][0,0]    ='END'    [0]    =''
    FMT[ 11- >0] -  -         :   0+1000=0   +2000=   0:    ''
    IP1109T   : FMTP[1/1][0,0]    =''    [0]    =''
    FMT[ 12- >0] -  -         :   0+1000=0   +2000=   0:    ''
    IP1109T   : FMTP[1/1][0,0]    =''    [0]    =''
    FMT[ 13-1>0] C  ENTRY     :   0+1000=0   +   1=   1:    'ENTRY X'
    IP1109T   : FMTP[1/1][0,0]    ='ENTRY X'    [0]    =''
    FMT[ 14-2>1] C  FORENTITY :   1+    =1   +   1=   2:    'FORENTITY "hello"'
    IP1109T   : FMTP[1/1][2,0]    ='FORENTITY "hello"'    [0]    =''
    FMT[ 15-3>2] C  WHILE     :   2+    =2   +   1=   3:    'WHILE'
    IP1109T   : FMTP[1/1][4,0]    ='WHILE'    [0]    =''
    FMT[ 16-4>3] C  IF        :   3+    =3   +   1=   4:    'IF'
    IP1109T   : FMTP[1/1][6,0]    ='IF'    [0]    =''
    FMT[ 17- >0] ;  ;1        :   4+1000=0   +2000=   4:    ''
    IP1109T   : FMTP[1/1][0,0]    =''    [0]    ='*** ERROR:Nicht abgeschlossenes 'IF' aus Zeile 16'
    FMT[ 18- >0] ;  ;1        :   4+1000=0   +2000=   4:    ''
    IP1109T   : FMTP[1/1][0,0]    =''    [0]    ='*** ERROR:Nicht abgeschlossenes 'WHILE' aus Zeile 15'
    FMT[ 19- >0] ;  ;1        :   4+1000=0   +2000=   4:    ''
    IP1109T   : FMTP[1/1][0,0]    =''    [0]    ='*** ERROR:Nicht abgeschlossenes 'FORENTITY' aus Zeile 14'
    FMT[ 20- >0] C  END       :   4+1000=0   +1000=   0:    'END'
    IP1109T   : FMTP[1/1][0,0]    ='END'    [1]    =' X'
    IP1109T   : ---------------------------------------- End 'PHASE Format' -----------------------------------------
    IP1109T   : ---------------------------------------------- Nachher ----------------------------------------------
    ;*** WARNING:'ELSE' hat keinen passenden Begin
    ELSE
      FORENTITY "hello"
        WHILE
          IF
    ;*** ERROR:Nicht abgeschlossenes 'IF' aus Zeile 6
    ;*** ERROR:Nicht abgeschlossenes 'WHILE' aus Zeile 5
    ;*** ERROR:Nicht abgeschlossenes 'FORENTITY' aus Zeile 4
    END


    ENTRY X
      FORENTITY "hello"
        WHILE
          IF
    ;*** ERROR:Nicht abgeschlossenes 'IF' aus Zeile 16
    ;*** ERROR:Nicht abgeschlossenes 'WHILE' aus Zeile 15
    ;*** ERROR:Nicht abgeschlossenes 'FORENTITY' aus Zeile 14
    END ; X
    IP1109T   : -----------------------------------------------------------------------------------------------------



    ------------------------------
    Ingo Stiller
    Aareon Deutschland GmbH
    ------------------------------



  • 14.  RE: IDE_API_n : Get current position in a ProcContainer

    Posted 07-11-2024 11:07

    I think what is really needed is a detailed preferences screen that can be adapted to a companies standards... I can imagine it becoming rather complicated.

    The reality is indentation is probably already correct so rather a nice to have.

    My top 5 in order would be:

    1) 'end' correcting

    2) Camel case Variables

    3) Convert depreciated functions

    4) Indentation

    5) removal of non referenced variables



    ------------------------------
    Osman Shariff
    ------------------------------



  • 15.  RE: IDE_API_n : Get current position in a ProcContainer