본문 바로가기

Scrap

ASP 함수 또는 프로시저 콜 규칙

뭐 이런 허접한...

[출처] [vbscript] Sub를 호출할 때는 괄호를 사용할 수 없습니다.|작성자 몽시리

음... 말씀하신 "Sub를 호출할 때는 괄호를 사용할 수 없습니다." 에러는 어쩌면 진실을 아시고 나면 허탈하실 수도... ^_^;;;

이 에러는 VB 에서 발생하는 에러입니다. 아시다시피 VB 나 VBScript 에는 두 종류의 프로시져가 있죠. 하나는 Function 이고 다른 하나는 Sub 입니다. 보통 C/C++ 이나 JavaScript 등에서는 function 하나 밖에 없는데 비해서 조금 특이한 경우입니다만...

아무튼 이 두 프로시져간의 차이점은 딱 하나입니다. 바로 리턴값이 있느냐 없느냐 그것이죠. Function 프로시져는 리턴값이 있을 때 Sub 프로시져는 리턴값이 없을 때 사용합니다. 그런데 이런 프로시져를 사용할 때 한 가지 주의점이 있습니다.

리턴값이 있는 Fucntion 프로시저는 일반적으로 다음과 같이 사용합니다.

retVal = MyFunction(aVal, bVal)

그런데 리턴값이 없는 Sub 프로시저의 올바른 사용법은 다음과 같습니다.

MySub aVal, bVal

바로 괄호를 사용하지 않는 것이죠. ^_^;;; 그런데 아무리 Function 프로시져라고 하더라도 리턴값을 받지 않고 리턴값을 사용하지 않으면 Sub 처럼 괄호를 사용할 수 없습니다. 따라서 다음과 같이 사용해야 하죠.

MyFunction aVal, bVal

지금 발생한 에러가 바로 이 에러입니다. 만약 괄호를 사용하시고 싶다면 다음과 같이 사용하셔야 합니다.

Call MySub(aVal, bVal)

알고 나시니 허탈하시죠? ^_^;;; 주로 ASP 에서 사용하는 VBScript 에서는 이 두 가지 사용법에 구분이 없습니다. 그러나 VB 에서는 이를 철저하게 검사하는 펀이고 ASP 에서도 가끔가다가 컴포넌트를 사용하는 경우 컴포넌트단에서 해당 에러가 발생하는 경우가 있죠.


 게다가 함수 값 리턴하는 꼴을 보면 이것도 병맛... ㅍㅍ