PML BASIC

Pml Basic 9 - Object block()
** GPTS로 학습시킨후 뽑아낸 글입니다 어색만 부분이나 있을수 있습니다 오류 있으면 댓글 달아주세요 추후 수정 예정입니다.** OBJECT BLOCK의 정의와 사용 방법에 대한 심화 설명 OBJECT BLOCK은 PML에서 Array의 각 요소에 특정 작업을 수행하는 표현식을 포함하는 객체로, 복잡한 데이터 처리 작업을 효율적으로 수행할 수 있도록 도와줍니다. 이를 통해 개발자는 반복적인 작업을 간단하게 처리할 수 있으며, 코드를 보다 간결하게 작성할 수 있습니다. 1. OBJECT BLOCK의 정의 OBJECT BLOCK은 특정 표현식을 포함하는 블록 객체를 생성하는데, 이 블록 객체는 Array의 각 요소를 순회하며 해당 표현식을 평가합니다. 이를 통해 데이터의 변형, 필터링 또는 특정 조건에 따라 다른 값을 생성하는 등의 작업을 간단하게 수행할 수 있습니다. 구문: Expression: 이 표현식은 Array의 각 요소에 대해 수행할 작업을 정의합니다. 예를 들어, Array의 각 요소에 대해 특정 필드를 추출하거나, 연산을 수행할 수 있습니다. !EvalIndex 변수는 현재 Array 요소의 인덱스를 참조할 수 있으며, 이를 통해 Array 내에서 요소를 순회하면서 해당 요소에 접근할 수 있습니다. 2. 사용 방법 OBJECT BLOCK은 EVALUATE 메서드와 함께 사용되어 Array의 각 요소에 대해 블록 객체를 평가하고, 이를 통해 새 Array를 생성합니다. 이 과정은 Array 내의 데이터를 변환하거나 필터링하는 데 유용합니다. 구문: EVALUATE 메서드: EVALUATE() 메서드는 Array의 각 요소에 대해 블록 객체를 평가하고, 평가된 결과를 포함하는 새 Array를 반환합니다. 이 방법은 대규모 데이터셋을 처리할 때 특히 유용하며, 데이터의 재구조화 또는 조건부 필터링 등을 수행할 수 있습니다. 3. 예제 예제 1: 참조 목록에서 이름을 추출 예제 2: 특정 영역의 이름 추출 예제 3: Array 요소에 대한 수치 연산 예제 4: 문자열 Array 처리
  • B
    Bito
Pml Basic 8 - Object Table()
** GPTS로 학습시킨후 뽑아낸 글입니다 어색만 부분이나 있을수 있습니다 오류 있으면 댓글 달아주세요 추후 수정 예정입니다.** OBJECT TABLE은 PML에서 데이터의 집합을 표 형식으로 표현하는 데 사용되는 객체입니다. 이 TABLE은 특정 컬렉션(데이터베이스 참조의 Array)과 컬럼을 정의하는 COLUMN ARRAY로 구성됩니다. OBJECT TABLE과 OBJECT COLUMN을 사용하면 데이터의 조직화와 구조화를 쉽게 관리할 수 있습니다. 1. OBJECT TABLE의 구조 OBJECT TABLE은 기본적으로 두 가지 주요 요소로 구성됩니다: COLLECTION: TABLE에 포함될 데이터를 참조하는 dbref 타입의 Array입니다. 이 Array는 특정 조건에 맞는 데이터베이스 요소들을 수집하여 생성됩니다. COLUMN ARRAY: TABLE에 포함된 각 컬럼을 정의하는 OBJECT COLUMN들의 Array입니다. 각 COLUMN은 해당 컬럼에 대한 데이터를 표현하는 표현식과 추가적인 속성을 포함합니다. 구문: 2. OBJECT COLUMN의 정의 OBJECT COLUMN은 TABLE의 각 컬럼을 정의하는 객체로, 표현식, 정렬 가능 여부, 그룹화 가능 여부, 컬럼 제목 등의 속성을 포함합니다. EXPRESSION: 이 표현식은 각 컬럼의 데이터를 결정합니다. 예를 들어, 특정 dbref의 이름이나 타입을 추출하는 표현식을 사용할 수 있습니다. BOOLEAN (정렬 가능 여부): 이 컬럼이 정렬 가능한지 여부를 나타냅니다. BOOLEAN (그룹화 가능 여부): 이 컬럼이 그룹화 가능한지 여부를 나타냅니다. STRING (컬럼 제목): 이 컬럼의 제목을 나타내는 문자열입니다. 구문: 3. OBJECT TABLE 및 OBJECT COLUMN을 사용한 예제 아래는 OBJECT TABLE과 OBJECT COLUMN을 사용하는 예제입니다. 예제 1: 간단한 테이블 생성 이 예제에서는 'PIPE'라는 타입을 가진 모든 요소를 수집하고, 그 요소들의 SITE, ZONE, NAME을 각 컬럼에 표현하는 테이블을 생성합니다. 4. OBJECT TABLE 메서드 OBJECT TABLE에는 다양한 메서드가 존재하며, 이를 통해 테이블의 데이터에 접근하거나 조작할 수 있습니다. PrimaryKey()
  • B
    Bito
Pml Basic 7 - Object FILE()
** GPTS로 학습시킨후 뽑아낸 글입니다 오류있으면 댓글 달아주세요 추후 수정 예정입니다.** OBJECT FILE의 개념과 사용 방법에 대한 자세한 설명 OBJECT FILE은 PML에서 FILE들을 다룰떄 사용합니다. 1. OBJECT FILE의 정의 OBJECT FILE은 파일 작업을 수행하기 위해 PML에서 제공하는 객체입니다. 이 객체를 사용하여 파일을 열고, 읽고, 쓰고, 닫는 작업을 할 수 있습니다. 파일 작업은 주로 보고서를 생성하거나, 데이터를 외부로 저장하거나, 외부 데이터를 시스템으로 가져올 때 사용됩니다. 구문: 이 구문을 통해 OBJECT Object File를 생성할 수 있습니다. 생성된 !Object File를 사용하여 파일 작업을 수행할 수 있습니다. 2. Object File의 생성 Object File를 생성하려면 다음과 같이 파일 경로를 지정하여 객체를 생성합니다. 구문: 이 구문을 통해 !MyFile이라는 Object File를 생성하여, 이후 파일 작업을 수행할 준비를 합니다. 3. 파일 열기 및 닫기 파일 작업을 수행하기 전에 파일을 열어야 하며, 작업이 끝난 후에는 파일을 닫아야 합니다. 파일 열기: Open() 메서드는 파일을 지정된 모드로 엽니다. 모드에는 'READ', 'WRITE', 'OVERWRITE', 'APPEND' 등이 있습니다. 파일 닫기: Close() 메서드는 열려 있는 파일을 닫습니다. 4. 파일에서 데이터 읽기
  • B
    Bito
1
Pml Basic 6 - Object Collection()
** GPTS로 학습시킨후 뽑아낸 글입니다 어색만 부분이나 있을수 있습니다 오류 있으면 댓글 달아주세요 추후 수정 예정입니다.** Object Collection은 기존 PML1 방식보다 사용하기 번거롭습니다. 하지만 2개이상의 Search Scope를 설정 할 수 있다는 장점, Collect 되는 Data 타입이 String이 아닌 Dbref라는점에서 좀 더 효율적인 collect가 필요할떄 사용합니다. 1. OBJECT COLLECTION의 정의 OBJECT COLLECTION은 E3D에서 기본 제공되는 Object로 특정 범위(Scope), 타입(Type), 필터(Filter) 등을 설정하여 조건에 맞는 객체들을 수집합니다. 구문: 이 구문을 통해 Object Collection을 생성할 수 있습니다. 2. OBJECT COLLECTION의 주요 메서드 OBJECT COLLECTION은 데이터를 수집하고 필터링하기 위한 다양한 메서드를 제공합니다. 여기서는 자주 사용되는 메서드와 그 예제를 설명합니다. 2.1 SCOPE(STRING scope) SCOPE 메서드는 Object Collection이 데이터를 수집할 범위를 설정합니다. Scope는 WORLD(전체 모델), CE(현재 요소), 또는 특정 영역 등으로 설정할 수 있습니다. Scope를 설정하면 그 범위 내에서만 객체를 수집합니다. 예제: 이 예제에서는 전체 모델(WORLD) 범위에서 객체를 수집하도록 설정합니다. 2.2 ADDSCOPE(STRING scope) ADDSCOPE 메서드는 추가적인 범위를 설정하여 여러 범위에서 데이터를 수집할 수 있게 합니다. 이 메서드를 사용하면 초기 SCOPE에서 지정한 범위 외에 다른 범위도 추가로 포함시킬 수 있습니다. 예제: 이 예제에서는 /ZONE1이라는 특정 영역을 추가하여, 초기 SCOPE 외에도 이 영역에서 데이터를 수집하도록 설정합니다. 2.3 TYPE(STRING type)
  • B
    Bito
Pml Basic 5 - Object Array()
** GPTS로 학습시킨후 뽑아낸 글입니다 어색만 부분이나 있을수 있습니다 오류 있으면 댓글 달아주세요 추후 수정 예정입니다.** Array PML을 사용하는 이유가 반복적인 작업을 단순화하려는 만큼, Array는 매우 많이 사용됩니다. 기본적인 PML1 방식의 Array보다 PML2 방식의 Array를 이용하면 좀 더 효율적으로 PML을 작성할 수 있습니다. 1차원 배열과 2차원 배열을 PML1 방식과 PML2 방식으로 다뤄보도록 하겠습니다. 1. 1차원 배열 1차원 배열은 단일 리스트로, Element들이 하나의 차원에 배열됩니다. 예를 들어, ['apple','banana', 'cherry']와 같은 배열이 1차원 배열입니다. Array에 Append를 하기 전, 반드시 OBJECT ARRAY()로 배열을 우선 생성해야 합니다. 1.1 1차원 Array 생성 및 사용 (PML1) PML1 방식에서는 배열을 생성한 후 .APPEND() 메서드를 사용해 Element를 추가합니다. 배열 생성: OBJECT ARRAY()로 빈 배열을 생성합니다. Element 추가: .APPEND() 메서드를 사용해 배열에 Element를 순차적으로 추가합니다. Element 접근: 인덱스를 통해 배열 내 Element에 접근합니다. PML에서는 배열의 인덱스가 1부터 시작하므로 첫 번째 Element는 !array[1]으로 접근합니다. 1.2 1차원 Array 생성 및 사용 (PML2) PML2 방식에서는 배열을 생성한 후 인덱스를 사용해 직접 값을 할당할 수 있습니다. 배열 생성: OBJECT ARRAY()로 빈 배열을 생성합니다. 인덱스 할당: 배열의 각 위치에 인덱스를 통해 직접 Element를 할당합니다. Element 접근: PML1 방식과 마찬가지로 배열의 Element는 인덱스를 사용해 접근합니다. 2. 2차원 배열 2.1 PML에서 2차원 배열 생성 및 사용 PML에서 2차원 배열은 배열 내에 배열을 추가하는 방식으로 구현됩니다. 이는 **행(row)**을 배열로 만들고, 이 행들을 또 다른 배열에 추가하는 방식으로 구성됩니다. PML1 방식과 PML2 방식 모두 이러한 구조를 지원하지만, 각 방식에는 차이가 있습니다. 2.2 PML1 방식 PML1에서는 배열을 생성한 후, 각 배열(행)을 배열에 추가하여 2차원 배열을 구성합니다. 여기서는 .APPEND() 메서드를 사용하여 배열에 Element를 추가합니다. 2.3 PML1 방식 2차원 배열 예시
  • B
    Bito
Pml Basic 4 - Logical Functions
GPTS로 학습시킨후 뽑아낸 글입니다 어색만 부분이나 있을수 있습니다 오류 있으면 댓글 달아주세요 추후 수정 예정입니다.** PML에서의 논리 함수 PML(Programming Macro Language)에서 Logical Fucntions는 주어진 조건에 따라 논리값을 반환하는 함수들입니다. 이 함수들을 사용하면 다양한 조건 검사를 수행하고, 그 결과에 따라 프로그램의 흐름을 제어할 수 있습니다. 아래는 각 논리 함수에 대한 설명과 예제입니다. 1. BADREF 함수 개요: BADREF(id)는 id가 유효하지 않으면 TRUE를, 유효하면 FALSE를 반환합니다. 예제:이 예제는 TREF가 유효한지 확인합니다. 2. DEFINED 및 UNDEFINED 함수 개요: DEFINED(variable_name)는 변수나 배열 요소가 정의되어 있으면 TRUE를 반환합니다. UNDEFINED(variable_name)는 변수나 배열 요소가 정의되지 않았으면 TRUE를 반환합니다. 예제:이 예제는 배열 array가 정의되어 있는지 확인합니다. 3. EMPTY 함수 개요: EMPTY(text)는 text가 빈 문자열이면 TRUE를, 그렇지 않으면 FALSE를 반환합니다. 예제:이 예제는 문자열이 비어 있는지 확인합니다. 4. IFTRUE 함수 개요: IFTRUE(logical, anyA, anyB)는 logical이 TRUE일 경우 anyA를, FALSE일 경우 anyB를 반환합니다. 예제:이 예제는 조건이 참인지 거짓인지에 따라 다른 값을 반환합니다.
  • B
    Bito
Pml Basic 3 - Object Real()
d
  • B
    Bito
Pml Basic 2 - Object String()
Function Description Match(STRING) 문자열의 시작 위치를 찾습니다. MatchWild(STRING) 와일드카드( * 는 여러 문자, ? 는 한 문자)를 사용하여 문자열을 비교합니다. EQNoCase(STRING) 대소문자 구분 없이 문자열을 비교합니다. After(STRING) 문자열에서 가장 왼쪽에 있는 STRING 다음에 오는 부분 문자열을 반환합니다. Before(STRING) 문자열에서 가장 왼쪽에 있는 STRING 앞에 있는 부분 문자열을 반환합니다. Length() 문자열의 문자 수를 반환합니다. UpCase() 문자열을 대문자로 변환합니다. LowCase() 문자열을 소문자로 변환합니다. Replace(STRING1, STRING2) 문자열에서 모든 STRING1 를 STRING2 로 바꿉니다.
  • B
    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이름() 예시:
  • B
    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 합니다.
  • B
    Bito
PML Beginner 4 - 연산자, 조건문, 반복문
연산자와, 조건문, 반복문 이번엔 연산자, 조건문, 반복문 에 대해 설명해보도록 하겠습니다. 1. 연산자 1. 산술 연산자 기본적인 수학 연산을 수행할 때 사용되는 연산자들입니다. 더하기 (Addition): + 빼기 (Subtraction): - 곱하기 (Multiplication): * 나누기 (Division): / 예시: 결과: 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 예시: 이 예시에서:
  • B
    Bito
PML Beginner 3 - Collect
PML 에서의 Collect 매번 하나하나 데이터를 ARRAY에 add 할수는 없기에 collect를 사용합니다. 크게 PML1 방식의 Collect와 PML2 방식의 Collect가 있으나 주로 PML2는 복잡하기에 PML1 위주로 설명드리도록 하겠습니다. Beginner 이후 Object에 대한 설명 과정에서 PML2방식의 Collect에 대해 자세히 설명 드리겠습니다. PML1 에서 Collect PML1 에서 데이터를 COLLECT 하는 방법엔 2가지가 있습니다. COLL 을사용하는것과 EVAL을 사용하는게 있습니다. COLL 을 이용한 COLLECT 구조: VAR (변수) COLL ALL (COLLECT TYPE) WITH (조건) FOR (COLLECT 할 Scope) 주의사항: (COLLECT TYPE) 과 WITH (조건) 과 FOR (조건) 은 생략할 수 있습니다. 주의사항: 다만 셋 모두 동시 생략은 불가능합니다 EX) VAR !A COLL ALL 불가능 주의사항: COLL 사용시 모든 데이터는 string 타입의 refno 가 들어갑니다. 예시: 결과: EVAL 을 이용한 COLLECT 구조: 구조: VAR (변수) EVAL NAME FOR ALL (COLLECT TYPE) WITH (조건) FOR (COLLECT 할 Scope) 주의사항: (COLLECT TYPE) 과 WITH (조건) 과 FOR (조건) 은 생략할 수 있습니다. 주의사항: 다만 셋 모두 동시 생략은 불가능합니다 EX) VAR !A EVAL NAME FOR ALL 불가능 주의사항: EVAL NAME FOR ALL 사용시 모든 데이터는 string 타입의 Name 가 들어갑니다. 예시: 결과: PML2에서 Collect PML2에서는 COLLECTION() 이라는 OBJECT를 이용하여 COLLECT 합니다. 자세히 설명하기에는 아직 OBJECT에 대한 설명도 안하였고 PML2를 이용한 객체지향에 대한 설명도 안하였기에 Beginner 이후 자세히 설명하도록 하겠습니다. 아래와 같이 사용이 가능하며 PML1에 비해 복잡하지만 결과값이 DBREF이기에 PML2에서 . 으로 객체 속성접근이나 메쏘드 접근이 가능하다는점 여러 SCOPE를 지정 가능하다는 장점이 있습니다.
  • B
    Bito
PML Beginner 2 - 변수(string, real, array)
PML에서의 변수 변수 간단하게 말하면 값을 저장할수있는 저장공간 입니다. PML에서 변수에는 string, real, array, file, datetime, 등 각종 object들이 들어갈수 있습니다. Object에 대한 자세한 설명은 초급 과정 이후 추후 자세히 설명하도록 하겠습니다 Beginner에서는 제일 많이 사용하는 string, real, array 만 설명하도록 하겠습니다. 1. PML에서 변수를 선언하는법 PML에서 모든 변수는 ! 로 시작합니다. PML1 변수 선언 예시 모든 값이 string 형태로 저장됩니다 예시 결과: PML2 변수 선언 예시 문자형 형태로 변수를 입력시 문자형, 숫자형 형태로 입력시 숫자형 값이 들어값니다 예시: 결과: 지역변수와 전역변수 지역 변수: !로 시작하며, 스크립트 내에서만 사용할수 있습니다. 즉 commandwidnow 에서 !a에 값을 할당했다고 해서 .mac파일 혹은 form에서 !a에 할당된 값을 사용이 불가능합니다. 전역 변수: !!로 시작하며, 프로그램 내에서 사용이 가능합니다. 즉 commandwidnow 에서 !!a에 값을 할당하면 .mac파일 혹은 form에서 !!a에 할당된 값을 사용이 가능합니다. 예시: (COMMAND WINDOW) 결과:
  • B
    Bito
PML Beginner 1 - 기본구조
이 글에서는 Aveva E3D, AM, PDMS에서 사용되는 PML(Programming Macro Language)의 기본적인 사용법을 설명해보려고 합니다. 처음 PML을 학습할때 메뉴얼을 보먼서 학습하였는데 자료가 부족하기도.. 했고 영문이라 학습하는데 힘들기도했고... 예를들어 $S라던지 잘 사용하지도 않는걸 우선적으로 설명해버려서 고생한 기억이 있어 PML 기초에 대해 정리해보았습니다. Beginner의 경우 PML을 사용하는데 있어서 자주 사용되며 정말 필요한 정말 최소한의 지식들을 작성해 보았습니다. 정말 기초적인 내용을 다루기 때문에 PML에 익숙하신 분들은 이 내용을 건너뛰어도 무방합니다. 다만 E3D 혹은 PDMS를 어느정도 해본 후 적어도 Q ATT, Q NAME, Q NAME OF PIPE 등 정말 간단한 COMMAND를 알고있는 상태에서 읽는걸 추천드립니다. PML의 기본 구조 1. 주석 PML 코드내에서 주석을 작성하는 방법입니다. 단일 줄 주석: $*, - 를 사용하여 한 줄 주석을 작성합니다. 예시: -- This is another comment 블록 주석: - $(...$) 로 여러 줄에 걸친 주석을 작성할 수 있습니다. 예시: 2. 변수 PML에서는 변수 이름이 항상 ! 로 시작해야 합니다. PML1 변수 선언: VAR을 이용하여 변수를 선언합니다.
  • B
    Bito