Function

DECODE, IIF 기능 구현하기

조건에 따라 값을 치환하여 반환하는 방식을 살펴봅니다.

DECODE의 경우에는 아래와 같이 값을 지정합니다. DATA로 전달되는 값에 따라 해당하는 요일값을 반환하는 예제입니다. 함수 내에서 조건식을 정하는 것이 아니라 필요한 조건을 매개변수로 던질 수 있다는 점이 큰 차이입니다. Switch 문을 사용하는 것과 비슷합니다.

decode(DATA, '0', 'SUN', '1', 'MON', '2', 'TUE', '3', 'WED', '4', 'THU', '5', 'FRI', '6', 'SAT', 'OTHERS');

IIF의 경우에는 아래와 같이 값을 지정합니다. true가 되는 조건 자체를 넘기고 그에 따라 결과값을 받습니다.

iif(DATA=='Y', 'Yes', 'No')

예제

첫 번째 Edit 컴포넌트에는 0부터 6까지 숫자 입력 시 해당하는 요일을 반환합니다. 두 번째 Edit 컴포넌트에는 값이 없으면 'No', 값이 있으면 'Yes'를 반환합니다.

sample_function_01.xfdl

예제에서 사용한 핵심 기능

arguments

함수 호출 시 전달되는 매개변수를 배열로 처리합니다. decode 함수 같은 경우에는 전달되는 인수의 개수가 정해진 것이 아니기 때문에 arguments 속성을 사용해 넘겨지는 인수의 개수를 확인할 수 있습니다.

예제 구현 방법

1

화면 구성하기

Edit 컴포넌트와 Button 컴포넌트를 배치합니다. Edit 컴포넌트 중에서 결과값을 보여주는 컴포넌트는 enable 속성값을 false로 지정합니다.

2

Button 컴포넌트 이벤트 함수 작성하기

예제에서는 첫번째 인자값만 Edit 컴포넌트에서 입력받고 나머지 값은 미리 지정해놓습니다.

this.Button00_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
	this.Edit02.set_value(this.fn_decode(this.Edit00.value, '0', 'SUN', '1', 'MON', '2', 'TUE', '3', 'WED', '4', 'THU', '5', 'FRI', '6', 'SAT', 'OTHERS'));
};

this.Button01_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
	this.Edit03.set_value(this.fn_iif(this.Edit01.value, 'Yes', 'No'));
};

3

fn_decode 함수 작성하기

arguments 속성을 사용해 넘겨받은 매개변수를 확인합니다. 짝수로 입력되었다면 조건식에 지정된 값 외에 기본값이 있다는 의미입니다. 위의 예제에서는 'OTHERS'라는 기본값을 지정했습니다. 그리고 반복문을 사용해 주어진 조건에 해당하는 값을 찾아 반환합니다.

this.fn_decode = function()
{
    var sRtnValue = null;
    var arrArgument = this.fn_decode.arguments;
    var sValue = arrArgument[0];
    var bIsDefault = false;
    var nCount = 0;
	
    if ((arrArgument.length % 2) == 0) 
    {
        nCount = arrArgument.length - 1;
        bIsDefault = true;
    } 
    else 
    {
        nCount = arrArgument.length;
        bIsDefault = false;
    }
	
    for (var i = 1; i < nCount; i+=2) 
    {
        if(sValue == arrArgument[i]) 
        {
            sRtnValue = arrArgument[i+1];
            i = nCount;
        }
    }
	
    if (sRtnValue == null && bIsDefault==true) 
    {
        sRtnValue = arrArgument[arrArgument.length-1];
    }
	
    return sRtnValue;
};

4

fn_iif 함수 작성하기

arguments 속성을 사용해 넘겨받은 매개변수를 확인하는 것은 fn_decode 함수와 같습니다. 다만 3개의 값을 넘겨받기 때문에 첫번째 값이 true라면 두번째 값을 반환하고 그렇지 않다면 세번째 값을 반환하는 간단한 기능을 처리합니다.

this.fn_iif = function()
{
    var arrArgument = this.fn_iif.arguments;
	
    if (arrArgument[0]) 
    {
		return arrArgument[1];
    } 
    else 
    {
        return arrArgument[2];
    }
};

5

QuickView로 확인하기

QuickView(Ctrl + F6)로 실행한 후 값을 입력하면서 확인해봅니다.