How to use ATEXTRA

How to use ATEXTRA


What is ATEXTRA ?

ATEXTRA table exist since Adonix (1997) to store a part of
translated text of the application.

The weak point of this method is the size limitation, specificaly
the maximum lenght of the boxes.

It is not possible to store more than 80 characters for a box
within this method.

You can find usage example in [M:ITM0] and [M:ITM1] screen.

 

Standard provides you 4 types of variable according to the lenght
you need

AX1 = max 12 Character

AX2 = max 20 Character

AX3 = max 30 Character

AXX = max 80 Character, this type allow you to define the limit
directly in the screen It is useless to input a lenght biger than 80 because
you have a limitation in the ATEXTRA.src 4GL source code also and your text
will be truncated

How does the system store the translated
data in ATEXTRA table ?

CODFIC : Table concerned by the translation

ZONE : Name of the screen box

LANGUE : Translation language (FRA, ENG …)

LANORI : Original language (optional)

IDENT1 : 1st index

IDENT2 : 2nd index

TEXTE : Trsnalated text

The most important part are the index (IDENT1 + IDENT2), they are
different for each table and they are the index that allow the system to
retrieve the correct translation from the database.

For standard table already using ATEXTRA this index cannot be
changed. 

 

Example of usage for this identifier 

 

GACCOUNT : Account (GESGAC)

IDENT1 = GACCOUNT.COA

IDENT2 = GACCOUNT.ACC

 

VATBOX : VAT Cases (GESVTB)

IDENT1 = VATBOX.VATFNC

IDENT2 = VATBOX.LEG + «~» + VATBOX.LIN

 

GTYPACCENT : Document type (GESGTE)

IDENT1 = GTYPACCENT.TYP

IDENT2 = GTYPACCENT.LEG

 

TABVACBPR : BP tax rule (GESTVB)

IDENT1 = TABVACBPR.VACBPR

IDENT2 = TABVACBPR.LEG

 

TABVACITM : Tax level (GESTVI)

IDENT1 = TABVACITM.VACITM

IDENT2 = TABVACITM.LEG

 

TABVAC : Tax determination (GESTVC)

IDENT1 = TABVAC.COD

IDENT2 = TABVAC.LEG

 

TABVAT : Tax rate (GESTVT)

IDENT1 = TABVAT.VAT

IDENT2 = TABVAT.LEG

How to use ATEXTRA ?

Standard read of ATEXTRA

Example screen [M :ITM0]

4GL read ATEXTRA with 4GL

# Method 1 : Reading ATEXTRA with 2 index

    Call LECTEXTRA([M :XS4L1]DES1AXX(nolign-1), »XSTRXX4L », »DES1AXX »,[L]XIDENT1,[L]XIDENT2)
From ATEXTRA

 

# Method 2 : Reading ATEXTRA with 2 index

    [M :XS4L1]DES1AXX([F :XS4L1]LIN-1) = func
AFNC.TEXTRA(
« XSTRXX4L », »DES1AXX »,[L]XIDENT1,[L]XIDENT2)

    [M :XS4L1]DES2AXX([F :XS4L1]LIN-1) = func
AFNC.TEXTRA(
« XSTRXX4L », »DES2AXX »,[L]XIDENT1,[L]XIDENT2)

    [M :XS4L1]DES3AXX([F :XS4L1]LIN-1) = func
AFNC.TEXTRA(
« XSTRXX4L », »DES3AXX »,[L]XIDENT1,[L]XIDENT2)

 

# Method 3 : Reading ATEXTRA with 1 index

    Call CHARGE_DEFITMDES(« DES1AXX »,GLANGUE,[F :XS4LD]INDX,[M :XS4L1]DES1AXX(nolign), « [F :XS4LD] ») From TRTX3

 

# Method 4 : Reading ATEXTRA with 1 index

    Call CHARGE_ITMDES(« DES1AXX »,GLANGUE,[F :XS4LD]INDX,[M :XS4L1]DES1AXX([F :XS4LD]LIN))
From TRTX3

 

# Method 5 : Reading ATEXTRA with 1 index

    Call GET_ATEXTRA(« XSTRXX4LD », »DES1AXX »,GLANGUE,[M :XS4L1]DES1AXX([F :XS4LD]LIN))
From TRTX3TEX

 

 

4GL import specific table in
ATEXTRA with 4GL

$IMP_ATEXTRA

  If [F:XX4LSTR]LIN > 0

    [L]XIDENT1 = [F:XX4LSTR]COA+[F:XX4LSTR]RPTCOD+num$([F:XX4LSTR]YEA)

    [L]XIDENT2 = [F:XX4LSTR]RPTBOX

 

    Read [F:AXX] AXX0=“XX4LSTR”;“DES1AXX”;[L]XLANGUE;[L]XIDENT1;[L]XIDENT2

    [F:AXX]TEXTE = left$([M:XX4LSTR1]DESAXX([F:XX4LSTR]LIN-1),80)

    If !fstat

      Rewrite [F:AXX]

    Else

      Gosub ATEXTRA_HEADER

      [F:AXX]ZONE = “DES1AXX”

      Write [F:AXX]

    Endif

    If len(mid$([M:XX4LSTR1]DESAXX([F:XX4LSTR]LIN-1),81,80)) > 0

      Read [F:AXX] AXX0=“XX4LSTR”;“DES2AXX”;[L]XLANGUE;[L]XIDENT1;[L]XIDENT2

      [F:AXX]TEXTE = mid$([M:XX4LSTR1]DESAXX([F:XX4LSTR]LIN-1),81,80)

      If !fstat

        Rewrite [F:AXX]

      Else

        Gosub ATEXTRA_HEADER

        [F:AXX]ZONE = “DES2AXX”

        Write [F:AXX]

      Endif

    Endif

    If len(mid$([M:XX4LSTR1]DESAXX([F:XX4LSTR]LIN-1),161,80)) > 0

      Read [F:AXX] AXX0=“XX4LSTR”;“DES3AXX”;[L]XLANGUE;[L]XIDENT1;[L]XIDENT2

      [F:AXX]TEXTE = mid$([M:XX4LSTR1]DESAXX([F:XX4LSTR]LIN-1),161,80)

      If !fstat

        Rewrite [F:AXX]

      Else

        Gosub ATEXTRA_HEADER

        [F:AXX]ZONE = “DES3AXX”

        Write [F:AXX]

      Endif

    Endif

  Endif

Return