수색…


소개

진행 ABL은 정적으로 입력됩니다. 변수는 선언되어야하고 런타임 중에 데이터 유형을 변경할 수 없습니다.

통사론

  • INT64 INITIAL -200 NO-UNDO로 변수를 정의하십시오. // -200으로 초기화 된 64 비트 정수

  • 논리적 변경 불가능한 논리적 변경. // l이라는 논리 변수

  • VARIABLE (변종)은 대 / 소문자를 구분하지 않고 그대로 사용하십시오. // 대소 문자를 구분합니다 ( 'a'<> 'A').

  • DATE IN DATE INTIAL TODAY NO-UNDO. // 오늘 날짜로 설정된 날짜 변수.

  • 문자 범위를 5 번 UNDO로 변경할 수 있습니다. // 길이가 5 인 문자 배열

  • INTEGER EXTENT NO-UNDO와 같이 변수를 정의하십시오. // 길이가 설정되지 않은 익스텐트

  • DEFINE VARIABLE b DATETIME LABEL "출발 시간". // 라벨이 붙은 변수

기본 변수 선언

/*                                                                                                                                                                                                                                                
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.

배열 - 정의 및 액세스

진행은 1 차원 배열을 지원하지만 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).

배열의 개별 위치는 "표준"C 스타일 대괄호를 사용하여 액세스됩니다. 그러나 색인은 1부터 시작합니다. 최대 크기는 28000입니다.

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

DISPLAY a[5].

결과:

여기에 이미지 설명을 입력하십시오.

색인 0은 오류를 생성합니다.

DISPLAY a[0].

결과:

여기에 이미지 설명을 입력하십시오.

집합 길이가없는 불확정 배열을 정의 할 수도 있습니다. 길이 (범위)는 런타임에 설정할 수 있습니다. 그러나 단 한 번!

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

세 번째 행은 다음 오류를 처리합니다. 여기에 이미지 설명을 입력하십시오.

DEFINE VARIABLE 문에서 INITIAL 옵션을 사용하여 초기 값을 설정할 수 있습니다.

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

결과:

여기에 이미지 설명을 입력하십시오.

모든 범위를 설정하지 않으면 나머지는 마지막 설정 값을 얻습니다.

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

결과:

여기에 이미지 설명을 입력하십시오.

LIKE 키워드 사용

LIKE 를 사용하면 다른 변수 나 데이터베이스 또는 임시 테이블의 필드에서 변수 정의를 기반으로 할 수 있습니다.

변수 LIKE 데이터베이스 필드를 정의하면 데이터베이스가 항상 연결되어야합니다. 이것은 항상 당신이 원하는 것이 아닐 수도 있습니다.

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
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow