Zoeken…


Invoering

Vooruitgang ABL is statisch getypt. De variabelen moeten worden gedeclareerd en het gegevenstype kan niet worden gewijzigd tijdens runtime.

Syntaxis

  • DEFINE VARIABLE i AS INT64 INITIAL -200 NO-UNDO. // Een 64-bits geheel getal dat is geïnitialiseerd op -200

  • DEFINE VARIABEL ALS LOGISCH NO-UNDO. // Een logische variabele met de naam l

  • DEFINE VARIABEL c ALS KARAKTER NO-UNDO GEVALGEVOELIG. // Een hoofdlettergevoelige ('a' <> 'A') variabele.

  • DEFINIËREN VARIABEL dt ALS DATUM VANDAAG NO-UNDO. // Een datumvariabele ingesteld op de datum van vandaag.

  • DEFINE VARIABLE a ALS KARAKTER OMVANG 5 NO-UNDO. // Een tekenset met lengte = 5

  • DEFINE VARIABEL j ALS INTEGER OMVAT NO-UNDO. // Een mate zonder een vaste lengte

  • DEFINE VARIABLE b ALS DATETIME LABEL "Vertrektijd". // Een variabele met een label

Basis variabele verklaringen

/*                                                                                                                                                                                                                                                
These variables are declared with `NO-UNDO`.
That states that no undo handling is wanted for this specific variable 
in case of a transactional roll-back. 

This should always be the default unless transactional control over 
this variable is a requirement. 
*/

/* Strings. A character longer than 32K should be a longchar */
DEFINE VARIABLE c   AS CHARACTER   NO-UNDO.
DEFINE VARIABLE cl  AS LONGCHAR    NO-UNDO.

/* Integers and decimals. INTEGER = 32 bit. INT64 = 64 bits */
DEFINE VARIABLE i   AS INTEGER     NO-UNDO.
DEFINE VARIABLE j   AS INT64       NO-UNDO.
DEFINE VARIABLE k   AS DECIMAL     NO-UNDO.

/* Date and datetimez. Unset variables have the unknown value ? */
DEFINE VARIABLE d   AS DATE        NO-UNDO.
DEFINE VARIABLE dt  AS DATETIME    NO-UNDO.
DEFINE VARIABLE dtz AS DATETIME-TZ NO-UNDO.

/* LOGICAL = Boolean data. True or false (or ?) */
DEFINE VARIABLE l   AS LOGICAL     NO-UNDO.

/* Rowids and recids are internal identifiers to database records */
DEFINE VARIABLE rid AS ROWID       NO-UNDO.
DEFINE VARIABLE rec AS RECID       NO-UNDO.

/* A handle is a handle to anything: a session, an on screen widget etc */
/* A Com-handle is used for ActiveX Com-automation */
DEFINE VARIABLE h   AS HANDLE      NO-UNDO.
DEFINE VARIABLE hc  AS COM-HANDLE  NO-UNDO.

/* A raw variable can contain any data. Binary, strings etc */
DEFINE VARIABLE rw  AS RAW         NO-UNDO.

/* A mempointer contains a sequence of bytes in memory. */
DEFINE VARIABLE m   AS MEMPTR      NO-UNDO.

Arrays - definiëren en benaderen

Progress ondersteunt eendimensionale arrays, maar ze worden EXTENTS .

/* Define a character array with the length 5, and display it's length */
DEFINE VARIABLE a AS CHARACTER EXTENT 5 NO-UNDO.
DISPLAY EXTENT(a).

Individuele posities in de array zijn toegankelijk met behulp van "standaard" beugels in c-stijl. Maar de index begint bij 1. De maximale grootte is 28000.

a[1] = "A".
a[2] = "B".
a[3] = "C".
a[4] = "D".  
a[5] = "E".

DISPLAY a[5].

Resultaat:

voer hier de afbeeldingsbeschrijving in

Index 0 genereert een fout:

DISPLAY a[0].

Resultaat:

voer hier de afbeeldingsbeschrijving in

U kunt ook een onbepaalde matrix definiëren zonder een ingestelde lengte. De lengte (omvang) kan worden ingesteld in runtime. Maar slechts één keer!

DEFINE VARIABLE a AS CHARACTER EXTENT NO-UNDO.
EXTENT(a) = 10.
EXTENT(a) = 1.

De derde regel geeft de volgende foutmelding: voer hier de afbeeldingsbeschrijving in

U kunt de optie INITIAL in de instructie DEFINE VARIABLE gebruiken om beginwaarden in te stellen.

DEFINE VARIABLE a AS CHARACTER EXTENT 3 INITIAL ["one","two","three"] NO-UNDO.
/* Some statements (like DISPLAY) can handle a whole array: */
DISPLAY a.

Resultaat:

voer hier de afbeeldingsbeschrijving in

Als u niet alle extensies instelt, krijgt de resterende de laatst ingestelde waarde:

DEFINE VARIABLE a AS CHARACTER EXTENT 10 INITIAL ["one","two","three"] NO-UNDO.
DISPLAY a.

Resultaat:

voer hier de afbeeldingsbeschrijving in

Het trefwoord LIKE gebruiken

Met LIKE kunt u de definitie van uw variabele baseren op een andere variabele of een veld in een database of tijdelijke tabel.

Een variabele definiëren LIKE een databaseveld vereist dat de database altijd verbonden is. Dit is misschien niet altijd wat je wilt.

DEFINE VARIABLE i AS INTEGER NO-UNDO LABEL "Nr" FORMAT "99999".
/* Define a variable with the same properties as "i" */
DEFINE VARIABLE j LIKE i.

/* Define a variable based on Customer.Custnum from the sports2000 database but 
override the label-definition */    
DEFINE VARIABLE k LIKE Customer.Custnum LABEL "Client".


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow