Module
Contents
Index 🔎︎

# 프로시저 및 함수 사용

다음은 LibreOffice Basic의 프로시저 및 함수 사용에 대한 기본적인 사항을 설명한 것입니다.

새 모듈을 만들 때 LibreOffice Basic은 "Main"이라는 SUB를 자동으로 삽입합니다 이 기본 이름은 LibreOffice Basic 프로젝트의 순서나 시작 지점과 상관이 없습니다. 원할 경우 이 SUB의 이름을 안전하게 바꿀 수 있습니다.

Some restrictions apply for the names of your public variables, subs, and functions. You must not use the same name as one of the modules of the same library.

프로시저(SUBS)와 함수(FUNCTIONS)를 사용하면 프로그램을 논리적 부분으로 분리하여 구조화된 개요를 유지 관리할 수 있습니다.

프로시저와 함수의 한 가지 이점은 작업 구성 요소를 포함하는 프로그램 코드를 개발한 후 이 코드를 다른 프로젝트에서 사용할 수 있다는 것입니다.

## 프로시저(SUB)와 함수(FUNCTION)에 변수 전달

변수를 프로시저와 함수 모두에 전달할 수 있습니다. SUB 또는 FUNCTION은 다음과 같이 매개 변수와 함께 선언해야 합니다.

    Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
    Program code
    End Sub

SUB는 다음 구문을 사용하여 호출합니다.

    SubName(Value1, Value2,...)

SUB에 전달되는 매개 변수는 SUB 선언에 지정된 것과 일치해야 합니다.

이와 동일한 프로세스가 함수 결과를 구하기 위해 FUNCTIONS에 적용됩니다. 함수를 사용하여 구할 값에 함수 이름과 매개 변수를 할당하여 함수 끝에 도달하기 전에 이러한 결과를 직접 지정할 수 있습니다. 다음의 예를 참조하십시오.

    Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
    Program code
    FunctionName=Result
    End Function

FUNCTION은 다음 구문을 사용하여 호출합니다.

    Variable=FunctionName(Parameter1, Parameter2,...)

다음과 같이 전체 이름을 사용하여 프로시저나 함수를 호출할 수도 있습니다.
Library.Module.Macro()
예를 들어, Gimmicks 라이브러리의 상용구 매크로를 호출하려면 다음 명령을 사용합니다.
Gimmicks.AutoText.Main()

## 값 또는 참조로 매개 변수 전달

매개 변수를 참조나 값으로 SUB 또는 FUNCTION에 전달할 수 있습니다. 따로 지정되지 않을 경우 매개 변수는 항상 참조로 전달됩니다. 이것은 SUB 또는 FUNCTION이 매개 변수를 가져와 그 값을 읽고 수정할 수 있다는 것을 의미합니다.

매개 변수를 값으로 전달하려는 경우 SUB 또는 FUNCTION을 호출할 때 매개 변수 앞에 "ByVal" 키워드를 삽입합니다. 예를 들면 다음과 같습니다.

    Result = Function(ByVal Parameter)

이 경우, FUNCTION은 매개 변수 자체가 아니라 값만 가져오기 때문에 매개 변수의 원래 내용을 수정하지 않습니다.

## 변수 범위

SUB 또는 FUNCTION 내에 지정된 변수는 프로시저가 종료할 때까지만 유효합니다. 이러한 변수를 "로컬" 변수라고 합니다. 대부분의 경우 변수는 모든 프로시저에서, 모든 라이브러리의 모든 모듈에서, 또는 SUB 또는 FUNCTION이 종료된 후에 유효해야 합니다.

### SUB 또는 FUNCTION 밖에서 변수 선언

    GLOBAL VarName As TYPENAME

변수는 LibreOffice 세션이 지속되는 동안 유효합니다.

    PUBLIC VarName As TYPENAME

변수는 모든 모듈에서 유효합니다.

    PUBLIC VarName As TYPENAME

변수는 이 모듈에서만 유효합니다.

    PUBLIC VarName As TYPENAME

변수는 이 모듈에서만 유효합니다.

### private 변수에 대한 예제

CompatibilityMode(true) 설정으로 private 변수를 강제로 모듈에 걸친 private가 되게 합니다.

    ' ***** Module1 *****
    Private myText As String
    Sub initMyText
        myText = "Hello"
        print "in module1 : ", myText
    End Sub

    ' ***** Module2 *****
    'Option Explicit
    Sub demoBug
        CompatibilityMode( true )
        initMyText
        ' 이제 빈 문자열을 반환합니다
        ' (또는 Option Explicit에 대한 오류를 발생시킵니다)
        print "Now in module2 : ", myText
    End Sub

### SUB 또는 FUNCTION 종료 후 변수 내용 저장

    STATIC VarName As TYPENAME

변수는 다음에 FUNCTION 또는 SUB가 입력될 때까지 해당 값을 유지합니다. 선언은 SUB 또는 FUNCTION 안에 있어야 합니다.

## FUNCTION의 반환 값 유형 지정

변수와 마찬가지로 함수 이름 뒤에 유형 선언 문자를 포함하거나 "As" 및 해당 키워드로 표시된 유형을 매개 변수 목록의 끝에 포함하여 함수의 반환 값 유형을 지정합니다. 예를 들면 다음과 같습니다.

    Function WordCount(WordText As String) As Integer