Share
Sign In
PML BASIC
연산자와, 조건문, 반복문
이번엔 연산자, 조건문, 반복문 에 대해 설명해보도록 하겠습니다.
1. 연산자
1. 산술 연산자
기본적인 수학 연산을 수행할 때 사용되는 연산자들입니다.
더하기 (Addition): +
빼기 (Subtraction): -
곱하기 (Multiplication): *
나누기 (Division): /
예시:
!A = 10 !B = 5 !addition = !A + !B $* 더하기 !subtraction = !A - !B $* 빼기 !multiplication = !A * !B $* 곱하기 !division = !A / !B $* 나누기 q var !addition !subtraction !multiplication !division
결과:
<Real> 15 <Real> 5 <Real> 50 <Real> 2
2. 비교 연산자
두 값을 비교할 때 사용되는 연산자들입니다.
작다 (Less than): LT
크다 (Greater than): GT
같다 (Equal to): EQ
다르다 (Not equal to): NEQ
작거나 같다 (Less than or equal to): LE
크거나 같다 (Greater than or equal to): GE
예시:
!X = 10 !Y = 20 IF (!X LT !Y) THEN $P 'X는 Y보다 작다' ENDIF IF (!X GE !Y) THEN $P 'X는 Y보다 크거나 같다' ENDIF
이 예시에서:
첫 번째 조건문은 !X!Y보다 작으면 "X는 Y보다 작다" 메시지를 출력합니다.
두 번째 조건문은 !X!Y보다 크거나 같으면 "X는 Y보다 크거나 같다" 메시지를 출력합니다.
3. 논리 연산자
여러 조건을 기반으로 결정을 내릴 때 사용되는 연산자들입니다.
AND 연산자: AND
OR 연산자: OR
NOT 연산자: NOT
여러 조건을 결합하여 보다 복잡한 조건 판단을 할 수 있습니다.
예시:
!X = 10 !Y = 20 IF (!X LT 15 AND !Y GT 15) THEN $P '두 조건이 모두 참이다' ENDIF
이 예시에서:
IF 조건문은 !X가 15보다 작고 !Y가 15보다 큰 경우에만
"두 조건이 모두 참이다"라는 메시지를 출력합니다.
4. 문자형 결합 연산자:
문자형을 결합할 때 사용되는 연산자입니다.
숫자를 합할때도 사용하지만 문자형일경우 문자형을 합하는데 사용됩니다.
결합 연산자: +
예시:
!FirstName = 'John' !LastName = 'Doe' !FullName = !FirstName + ' ' + !LastName q var !FullName
결과:
<string> 'John Doe'
2. 조건문
1. IF 문 기본 구조
기본구조:
IF (조건) THEN
-- 조건이 참일 때 실행할 코드
ENDIF
조건: 참(true) 또는 거짓(false)으로 평가되는 논리식입니다.
THEN: 조건이 참일 때 실행할 코드 블록을 의미합니다.
ENDIF: 조건문이 끝났음을 나타냅니다.
예시:
!X = 10 IF (!X GT 5) THEN $P 'X는 5보다 큽니다.' ENDIF
이 예시에서는 !X가 5보다 크기 때문에 "X는 5보다 큽니다."라는 메시지가 출력됩니다.
2. IF...ELSE 구조
ELSE 구문을 사용하면 조건이 거짓일 때 실행할 코드 블록을 정의할 수 있습니다.
기본구조:
IF (조건) THEN
-- 조건이 참일 때 실행할 코드
ELSE
-- 조건이 거짓일 때 실행할 코드
ENDIF
예시:
!X = 10 !Y = 20 IF (!X LT !Y) THEN $P 'X는 Y보다 작습니다.' ELSE $P 'X는 Y보다 작지 않습니다.' ENDIF
이 예시에서는:
!X!Y보다 작으면 "X는 Y보다 작습니다." 메시지가 출력됩니다.
그렇지 않으면 "X는 Y보다 작지 않습니다." 메시지가 출력됩니다.
3. IF...ELSE IF...ELSE 구조
PML에서는 여러 조건을 순차적으로 평가하기 위해 ELSE IF 구문을 사용할 수 있습니다. 이는 여러 조건을 처리할 때 유용하며, 첫 번째 참 조건에 해당하는 코드 블록만 실행됩니다.
기본 구조:
IF (조건1) THEN
-- 조건1이 참일 때 실행할 코드
ELSE IF (조건2) THEN
-- 조건1이 거짓이고 조건2가 참일 때 실행할 코드
ELSE
-- 모든 조건이 거짓일 때 실행할 코드
ENDIF
예시:
!X = 10 !Y = 20 IF (!X GT !Y) THEN $P 'X는 Y보다 큽니다.' ELSE IF (!X EQ !Y) THEN $P 'X는 Y와 같습니다.' ELSE $P 'X는 Y보다 작습니다.' ENDIF
이 예시에서:
!X!Y보다 크면 "X는 Y보다 큽니다." 메시지가 출력됩니다.
그렇지 않고 !X!Y와 같으면 "X는 Y와 같습니다." 메시지가 출력됩니다.
두 조건 모두 거짓이면 "X는 Y보다 작습니다." 메시지가 출력됩니다.
4. 중첩된 IF 문
복잡한 조건을 처리하기 위해 IF 문을 중첩하여 사용할 수 있습니다. 중첩된 IF 문은 여러 단계의 조건을 처리할 때 유용합니다.
예시:
!X = 10 !Y = 20 IF (!X LT !Y) THEN IF (!X EQ 10) THEN $P 'X는 Y보다 작고 10입니다.' ELSE $P 'X는 Y보다 작지만 10은 아닙니다.' ENDIF ELSE $P 'X는 Y보다 크거나 같습니다.' ENDIF
이 예시에서:
첫 번째 조건에서 !X!Y보다 작으면 내부 IF 문이 실행됩니다.
내부 IF 문은 !X가 10과 같은지 확인하고, 그에 따라 다른 메시지를 출력합니다.
5. 논리 연산자와 함께 사용하는 IF 문
PML에서 IF 문은 논리 연산자(AND, OR, NOT)를 사용하여 복합 조건을 평가할 수 있습니다.
예시:
!A = 10 !B = 20 IF (!A GT 5 AND !B LT 30) THEN $P 'A는 5보다 크고 B는 30보다 작습니다.' ENDIF
이 예시에서는:
!A가 5보다 크고 !B가 30보다 작으면
"A는 5보다 크고 B는 30보다 작습니다." 메시지가 출력됩니다.
6. IFTRUE
IFTRUE는 삼향 연산자로 주어진 조건이 참이면 특정 값을 반환하고, 거짓이면 다른값을 반환합니다.
기본구문:
!변수 = IFTRUE(조건, 참일 때 반환 값, 거짓일 때 반환 값)
조건: 참 또는 거짓으로 평가되는 논리식 (예: !X LT 10).
참일 때 반환 값: 조건이 참일 경우 할당되는 값.
거짓일 때 반환 값: 조건이 거짓일 경우 할당되는 값.
예시:
!X = 10 !Result = IFTRUE(!X LT 20, 'X는 20보다 작다', 'X는 20보다 크거나 같다') q var !Result
결과:
<string> 'X는 20보다 작다'
3. 반복문
PML을 사용하려는 가장큰 이유중 하나가 반복 작업을 단순화하는것인만큼 DO 반복문은 특정 값들이나, 범위를 순차적으로 반복하여 처리해줍니다.
1. DO 반복문 (FROM과 TO 사용)
FROM ... TO 구조는 주어진 범위 내에서 변수를 반복시키는 방식입니다. 일반적으로 숫자 범위에서 값을 증가시키며, 각 반복마다 변수가 새로운 값을 가집니다.
기본구조:
DO !변수 FROM 시작값 TO 종료값
-- 반복 작업을 수행할 코드
ENDDO
예시:
DO !I FROM 1 TO 5 Q VAR !I ENDDO
결과:
<string> 1 <string> 2 <string> 3 <string> 4 <string> 5
설명:
이 구조에서는 !I가 1에서 5까지 1씩 증가하면서 반복됩니다.
각 반복마다 !I의 값이 출력됩니다.
2. DO 반복문 (INDEX 사용)
INDEX사용시 특정 Array를 순차적으로 반복하며 !변수에 INDEX값을 할당합니다.
기본구조:
DO !변수 INDEX !배열
-- 배열의 각 요소에 대해 반복 작업을 수행할 코드
ENDDO
예시:
!Array = object array() !Array.append(10) !Array.append(20) !Array.append(30) !Array.append(40) DO !I INDEX !Array q var !I ENDDO $P ---------- DO !I INDEX !Array q var !Array[$!I] ENDDO
결과:
<Real> 1 <Real> 2 <Real> 3 <Real> 4 ---------- <Real> 10 <Real> 20 <Real> 30 <Real> 40
설명:
!Array에는 10,20,30,40이 들어있으며 !I에는 1,2,3,4, 가 반복됩니다
그렇기에 !Array[1] 과같이 반복할떄마다 !Array[$!I] 와 같이 사용햐어
!Array의 배열의 각 요소에 접근 할 수 있습니다.
3. DO 반복문 (VALUES 사용)
VALUESINDEX 와는 다르게 변수에 값이 할당됩니다.
기본구조:
DO !변수 VALUES !배열
-- 각 값에 대해 반복 작업을 수행할 코드
ENDDO
예시:
!Array = object array() !Array.append(5) !Array.append(10) !Array.append(15) !Array.append(20) DO !value VALUES !Array q var !value ENDDO
결과:
<string> 5 <string> 10 <string> 15 <string> 20
설명:
이 구조에서는 !Array 배열에 미리 정의된 값들을 순차적으로 !Value 변수에 할당합니다.
각 반복마다 지정된 값이 출력됩니다.
4. BREAK와 SKIP을 사용한 반복문 제어
PML의 DO 반복문은 중간에 반복을 중단하거나 특정 조건에 따라 반복을 건너뛸 수 있는 제어 기능도 제공합니다.
BREAK: 특정 조건이 만족되면 반복문을 중단하고 빠져나옵니다.
SKIP: 특정 조건이 만족되면 현재 반복을 건너뛰고, 다음 반복을 계속 진행합니다.
예시: BREAK
DO !I FROM 1 TO 5 IF (!I EQ 3) THEN BREAK $* !I가 3일 때 반복문을 종료합니다. ENDIF q var !I ENDDO
결과:
<string>: 1 <string>: 2
예시: SKIP
DO !I FROM 1 TO 5 SKIP IF (!I EQ 3) $* !I가 3일 때 해당 반복을 건너뜁니다. q var !I ENDDO
결과:
<string>: 1 <string>: 2 <string>: 4 <string>: 5
Bi
Subscribe to 'bittokki'
Welcome to 'bittokki'!
By subscribing to my site, you'll be the first to receive notifications and emails about the latest updates, including new posts.
Join SlashPage and subscribe to 'bittokki'!
Subscribe
👍
Other posts in 'PML BASIC'See all
Bito
Pml Basic 2 - Object String()
** GPTS로 학습시킨후 뽑아낸 글입니다 어색만 부분이나 있을수 있습니다 오류 있으면 댓글 달아주세요 추후 수정 예정입니다.** E3D PML에서의 텍스트 함수 E3D PML(Programming Macro Language)에서 텍스트 함수는 문자열을 조작하고 평가하는 데 사용됩니다. 각 함수의 설명과 예제를 통해 PML1과 PML2에서 어떻게 사용되는지 자세히 알아보겠습니다. 1. AFTER 함수 개요: AFTER(text1, text2)는 text1에서 text2가 처음으로 나타난 이후의 부분 문자열을 반환합니다. text2가 text1에 없으면 빈 문자열을 반환합니다. 예시: AFTER('abcdef', 'cd') → 'ef' AFTER('abcdef', 'x') → '' AFTER('abcdef', '') → 'abcdef' PML1 예제: PML2 예제: 2. BEFORE 함수 개요: BEFORE(text1, text2)는 text1에서 text2가 처음 나타나기 전의 부분 문자열을 반환합니다. text2가 text1에 없으면 text1을 반환합니다. 예시: BEFORE('abcdef', 'cd') → 'ab' BEFORE('abcdef', 'x') → 'abcdef' BEFORE('abcdef', '') → 'abcdef' PML1 예제: PML2 예제:
Bito
Pml Basic 1 - Object & Function
Pml Beginner와는 다르게 Basic 부분에서는 AVEVA에서 기본 제공하는 Object 및 Function 에 대해 설명할 예정입니다 순서대로 학습할 필요 없이 코딩하면서 필요하다 싶은 Object들만 읽으면 될 것 같습니다. Object란? PML은 객체 지향 개념을 사용하는 언어입니다. 여기서 객체 는 OBJECT를 말합니다. 여기서 OBJECT가 무엇이냐 하면 (STRING, REAL, ARRAY) 뿐만 아니라 (COLLECTION, TABLE, BLCOK)등 모든 데이터는 Object(객체)로 다루어집니다. 예를들어 설명해보겠습니다. String 객체 설명: |test1|, 'test2'와 같은 문자열은 String 객체로 취급됩니다. PML에서는 문자열도 객체로 간주됩니다. Real 객체 설명: 1, 2.5, 3 등은 Real 객체로, 실수 또는 정수 형태의 숫자를 의미합니다. Array 객체 설명: Array 객체는 각 인덱스에 다양한 유형의 객체(문자열, 숫자, 다른 배열 등)를 저장할 수 있는 자료 구조입니다. Collection 객체 설명: Collection 객체는 데이터베이스 요소를 필터링하거나 범위 내의 데이터를 모아서 Array 객체로 반환하는 역할을 합니다. 뿐만아니라 수많은 Object들이 있으며 원할경우 Object를 생성하여 사용하여도 됩니다. 결론적으로 말하면 PML에서의 Object란 데이터를 담고 있는 일종에 컨테이너 라고 생각하면 되고 메쏘드를 통해 다양한 작업을 수행할 수 있습니다. 1. Object 선언 선언 방법 : !변수 = Object Object이름() 예시:
Bito
PML Beginner 5 - .(Dot)
PML Beginner 마지막 글입니다. PML Basic 부터는 Object 에 대한 설명을 시작할 예정인데 Object에 대해 설명하기 전 .(Dot) 에 대해 설명을 하고 넘어가야 할 것 같아 작성하였습니다. .(Dot) 을 사용해야하는 이유 우선 PML에서는 PML1 PML2 둘다 혼용하여 사용합니다. 자세하게 설명하긴 그렇고 간단히 VAR 을사용하면 PML1 = 을 사용하면 PML2 라고 생각하면 좋을 것 같습니다. 예를들어 PIPE를 COLLECT를 해보겠습니다 PML1을 이용한 PIPE Collect 예시: PML2을 이용한 PIPE Collect 예시: 이렇게 PML1을 이용할경우 한 줄로 코딩이 가능하지만 PML2를 이용하면 5줄이나 사용해야합니다. 뿐만 아니라 결과에서도 큰 차이가 있습니다 PML1 결과: PML2 결과: 즉 PML1을 사용시 !A 에 바로 NAME 값이 할당되지만 PML2를 사용시 dbref 값이 할당되기에 DO문을 사용하여 다시 Name으로 변환해주는 작업이 필요합니다. !!collectAllFor을 사용하면 큰 차이가 안난다고 하지만 그럼에도 불구하고 Name으로 변환하는 작업은 필요합니다. 이렇게 간단한 작업에 있어서는 PML1을 사용하는것이 간편한 경우가 있습니다. 다만 코드가 점점더 복잡해 질수록 PML2를 이용한 코딩이 훨신 가독성이 좋아집니다. 예를들어 아래와 같은 상황이라고 가정을 해보겠습니다. 모든 BRANCH MEMBER 들을 COLLECT 합니다.