출처 : http://blog.naver.com/const34/20042866990

▣ 함수(Function) - 변환 관련 함수, 날짜/시간 관련 함수
&sec 학습목표
  1. ASP에서 지원하는 함수의 종류와 특징을 안다.
  2. ASP에서 지원하는 함수를 사용할 수 있다.

 

함수는 프로그램 코드내에서 반복적으로 사용되는 루틴이나 모듈을 구성할때 사용하는 것이다. 이런 함수를 보통 프로그래머가 구성을 하는 것이 원칙이다. 그러나 일일이 구성하는 것은 특히 사용자가 쉽게 표현하지 힘든 특정처리부분을 처리하기는 어렵다. 때문에 ASP에서 내장함수로 제공하여 준다.

함수의 사용예제를 링크걸어 두겠다.

ASP-Function 다운로드 ]

또 Microsoft에서 제공하는 MSDN에 방문해 보면 VBScript에 대한 모든 정보를 접할 수 있는데 함수도 그안에서 사용법과 주의할 점을 찾을 수 있다.

찾이가는 방법은 일단 MSDN.microsoft.com에서 상단 주메뉴에서 Library를 선택한다. 화면이 바뀌면 아래에 서브메뉴가 펼쳐지면 메뉴중에서 [Web Development] - [Scripting]- [Windows Script Tecnologies] - [VBScript] - [Reperence] - [Function] 을 차레로 산택하면 된다. 물론 VBScript의 다른 정보도 접할 수 있다.

일단 함수부분에 바로 접근할 수 있도록 링크를 걸어 두었다.

MSDN VBScript Function Reference ]

1. 변환 관련 함수

변환 관련 함수는 데이터의 형변환이나 데이터의 변환에 사용되는 함수이다.

(1) Asc

문자열에서 첫글자에 해당하는 ANSI 문자 코드를 반환한다.

형 식
Asc(string)

Dim MyNumber
MyNumber = Asc("A") ' Returns 65.
MyNumber = Asc("a") ' Returns 97.
MyNumber = Asc("Apple") ' Returns 65.

(2) AscB

문자열에서 그 문자의 첫 바이트를 반환한다.

형 식
AscB(string)

사용법은 ASC와 같다.

(3) AscW

문자열에서 그 문자의 첫 유니코드 문자 코드를 반환한다.

형 식
AscW(string)

사용법은 ASC와 같다.

(3) CBool

Boolean 하위형식의 Variant로 변환된 식을 반환

형 식
CBool(expression)

Dim A, B, Check
A = 5: B = 5 ' Initialize variables.
Check = CBool(A = B) ' Check contains True.
A = 0 ' Define variable.
Check = CBool(A) ' Check contains False.

(4) CByte

Byte 하위형식의 Variant로 변환된 식을 반환(결과는 255를 넘을 수 없다)

형 식
CByte(expression)

Dim MyDouble, MyByte
MyDouble = 125.5678 ' MyDouble is a Double.
MyByte = CByte(MyDouble) ' MyByte contains 126.

(5) CCur

Currency 하위형식의 Variant로 변환된 식을 반환한다.

형 식
CCur(expression)

Dim MyDouble, MyCurr
MyDouble = 543.214588 ' MyDouble is a Double.
MyCurr = CCur(MyDouble * 2) ' Convert result of MyDouble * 2 (1086.429176) to a Currency (1086.4292).

(6) CDate

Date 하위형식의 Variant로 변환된 식을 반환한다.

형 식
CDate(date)

MyDate = "2005-05-27" ' Define date.
MyShortDate = CDate(MyDate) ' #2005-05-27#

(7) CDbl

Double 하위형식의 Variant로 변환된 식을 반환한다.

형 식
CDbl(expression)

Dim MyCurr, MyDouble
MyCurr = CCur(234.456784) ' MyCurr is a Currency (234.4567).
MyDouble = CDbl(MyCurr * 8.2 * 0.01) ' Convert result to a Double (19.2254576).

(8) CInt

Integer 하위형식의 Variant로 변환된 식을 반환한다. (반올림한다)

형 식
CInt(expression)

Dim MyDouble, MyInt
MyDouble = 2345.5678 ' MyDouble is a Double.
MyInt = CInt(MyDouble) ' MyInt contains 2346.

(9) Chr(charcode)

지정한 ANSI 문자 코드와 연관된 문자를 반환한다.

형 식
Chr(charcode)

Dim MyChar
MyChar = Chr(65) ' Returns A.
MyChar = Chr(97) ' Returns a.
MyChar = Chr(62) ' Returns >.
MyChar = Chr(37) ' Returns %.

(10) ChrB

chr 함수와 같으나 문자열의 바이트를 지정해서 사용한다. 항상 싱글바이트로 반환한다.

형 식
ChrB(charcode)

(11) ChrW

chr 함수와 같으나 유니코드 데이터를 지정해 사용한다.

형 식
ChrW(charcode)

(12) CLng

Long 하위형식의 Variant로 변환된 식을 반환한다. (실수데이터인경우 반올림한다)

형 식
ChrW(charcode)

MyVal1 = 25427.45: MyVal2 = 25427.55 ' MyVal1, MyVal2 are Doubles.
MyLong1 = CLng(MyVal1) ' MyLong1 contains 25427.
MyLong2 = CLng(MyVal2) ' MyLong2 contains 25428.

(13) CSng

Single 하위형식의 Variant로 변환된 식을 반환한다.(반올림처리)

형 식
CSng(expression)

' MyDouble1, MyDouble2 are Doubles.
MyDouble1 = 75.3421115: MyDouble2 = 75.3421555
MySingle1 = CSng(MyDouble1) ' MySingle1 contains 75.34211.
MySingle2 = CSng(MyDouble2) ' MySingle2 contains 75.34216.

(14) CStr

String 하위형식의 Variant로 변환된 식을 반환한다.

형 식
CStr(expression)

Dim MyDouble, MyString
MyDouble = 437.324 ' MyDouble is a Double.
MyString = CStr(MyDouble) ' MyString contains "437.324".

(15) Fix

숫자의 정수부분만을 반환한다. 
Sgn(number) * Int(Abs(number))의 결과와 같은 함수이다.

형 식
Fix(expression)

MyDouble = -437.324 ' MyDouble is a Double.
MyFix = Fix(MyDouble) ' MyFix contains "-437".

(16) Hex

숫자의 16진수를 나타내는 문자열로 반환한다.

형 식
Hex(number)

Dim MyHex
MyHex = Hex(5) ' Returns 5.
MyHex = Hex(10) ' Returns A.
MyHex = Hex(459) ' Returns 1CB.

(17) Int

지정된 숫자의 값보다 크지 않은 최대의 정수를 반환한다.

형 식
Int(number)

MyNumber = Int(99.8) ' Returns 99.
MyNumber = Fix(99.2) ' Returns 99.
MyNumber = Int(-99.8) ' Returns -100.
MyNumber = Fix(-99.8) ' Returns -99.
MyNumber = Int(-99.2) ' Returns -100.
MyNumber = Fix(-99.2) ' Returns -99.

(18) Oct

숫자의 8진수 값을 반환한다.

형 식
Oct(number)

Dim MyOct
MyOct = Oct(4) ' Returns 4.
MyOct = Oct(8) ' Returns 10.
MyOct = Oct(459) ' Returns 713.

(19) Round

지정한 소수점 자리에서 반올림한 수를 반환한다.

형 식
Round(expression[, numdecimalplaces])

pi = 3.14159
MyVar1 = Round(pi) ' MyVar1 contains 3.
MyVar2 = Round(pi, 2) ' MyVar2 contains 3.14. 
var1 = Round(1.5) ' var1 contains 2
var2 = Round(2.5) ' var2 contains 2
var3 = Round(3.5) ' var3 contains 4
var4 = Round(0.985, 2) ' var4 contains 0.98
var5 = Round(0.995, 2) ' var5 contains 1.00

(20) Sgn

수의 부호를 반환한다. (음수이면 -1, 아니면 0)

형 식
Sgn(number)

Dim MyVar1, MyVar2, MyVar3, MySign
MyVar1 = 12: MyVar2 = -2.4: MyVar3 = 0
MySign = Sgn(MyVar1) ' Returns 1.
MySign = Sgn(MyVar2) ' Returns -1.
MySign = Sgn(MyVar3) ' Returns 0.


2. 날짜/시간 함수

날짜와 시간에 관련된 함수들이다. 날짜데이터는 1989년 12월31일을 기준으로 하여 카운팅하여 사용한다.

(1) Date

현재 시스템의 날짜

형 식
Date

Dim MyDate
MyDate = Date

(2) DateAdd

지정된 시간간격을 추가한 날짜를 반환한다.

형 식
DateAdd(interval, number, date)

interval의 세팅값은 다음과 같다.

SettingDescription
yyyy 
Year

Quarter
mMonth
yDay of year
dDay
wWeekday
wwWeek of year


NewDate = DateAdd("m", 1, "2005-05-13") '2005-06-13 
NewDate = DateAdd("d", 10, "2005-05-13") '2005-05-23
NewDate = DateAdd("d", -10, "2005-05-13") '2005-05-03

(3) DateDiff

두 날짜 사이의 날짜 간격수를 반환한다.

형 식
DateDiff(interval, date1, date2 [,firstdayofweek [,firstweekofyear]])

interval의 세팅값은 DateAddd와 기본적으로 같다.

SettingDescription
yyyy 
Year

Quarter
mMonth
yDay of year
dDay
wWeekday
wwWeek of year
hHour
nMinute
sSecond

Date 데이타 형식은 # 과 " 둘다 사용가능하다.

DateDiff("d", Now, #2005-12-25#) '208 
DateDiff("d", Now, "2004-12-25") '-157

(4) DatePart

주어진 날짜의 지정된 부분을 반환한다.

형 식
DatePart(interval, date[, firstdayofweek[, firstweekofyear]])

interval의 세팅값은 DateDiff와 기본적으로 같다.

a =DatePart("q", "2005-07-13") '3 , 즉 3/4분기에 속한다는 것이다.

(5) DateSerial

지정된 년, 월, 일의Date 하위형식인 Variant를 반환한다.

형 식
DateSerial(year, month, day)

MyDate1 = DateSerial(1970, 1, 1) ' 1970-01-01

(6) DateValue

Date 하위형식인 Variant를 반환한다. (#Date#)

형 식
DateValue(date)

a =DateValue("2005-05-13") ' 2005-05-13

(7) Day

날짜/시간 형식의 데이터로 부터 날짜를 반환한다.(1~31)

형 식
Day(date)

MyDay = Day("2005-05-19") ' MyDay contains 19.

(8) Hour

날짜/시간 형식의 데이터로 부터 시간를 반환한다.(0~23)

형 식
Hour(time)

MyHour = Hour(now) '현재시간의 시를 출력

(9) Minute

날짜/시간 형식의 데이터로 부터 분을 반환한다.(0~59)

형 식
Minute(time)

Dim MyVar
MyVar = Minute(Now)

(10) Month

날짜/시간 형식의 데이터로 부터 월을 반환한다.(1~12)

형 식
Month(date)

Dim MyVar
MyVar = Month(Now) ' 현재 날짜에서 월데이터를 가져온다.

(11) MonthName

지정한월을 나타내는 문자열을 반환한다.abbreviate의 기본값은 false이다.

형 식
MonthName(month[, abbreviate])

Dim MyVar
MyVar = MonthName(10, True) ' 10
MyVar = MonthName(10) ' 10월

(12) Now

현재 컴퓨터의 시스템 날짜와 시간을 반환한다

형 식
Now

MyVar = Now

(13) Second

날짜/시간 형식의 데이터로 부터 초를 반환한다.(0~59)

형 식
Second(time)

MySec = Second(Now) ' 현재시간에서 초 데이터를 가져온다.

(14) Time

현재 시스템 시간을 나타내는 Date 하위형식의 Variant를 반환한다.

형 식
Time

MyTime = Time ' 현재시간을 반환한다.

(15) TimeSerial

지정된 년, 월, 일의Date 하위형식인 Variant를 반환한다.

형 식
TimeSerial(hour, minute, second)

hour : Number between 0 (12:00 A.M.) and 23 (11:00 P.M.), inclusive, or a numeric expression.

minute : Any numeric expression.

second : Any numeric expression.

MyTime1 = TimeSerial(12 - 6, -15, 0)

(16) TimeValue

시간을 포함하는 Date 하위형식인 Variant를 반환한다.

형 식
TimeValue(time)

MyTime = TimeValue("4:35:17 PM") '오후 4:35:17

(17) Weekday

요일을 나타내는 정수를 반환한다.

형 식
Weekday(date, [firstdayofweek])

리턴되는 값은 1~7 의 정수이며 일요일부터 토요일까지의 순서를 의미한다.

Constant 
Value
Description
vbSunday
1
Sunday
vbMonday
2
Monday
vbTuesday 
3
Tuesday
vbWednesday
4
Wednesday
vbThursday
5
Thursday
vbFriday
6
Friday
vbSaturday
7
Saturday

MyWeekDay = Weekday(now)

(18) WeekdayName

지정된 요일을 나타내는 문자열을 반환한다.

형 식
WeekdayName(weekday, abbreviate, firstdayofweek)

Constant 
Value
Description
vbSunday
1
Sunday
vbMonday
2
Monday
vbTuesday 
3
Tuesday
vbWednesday
4
Wednesday
vbThursday
5
Thursday
vbFriday
6
Friday
vbSaturday
7
Saturday

MyDate = WeekDayName(6, True) ' 금

MyDate = WeekDayName(6) '금요일

(19)Year

날짜/시간 형식의 데이터로 부터 년도를 반환한다.

형 식
Year(date)

MyYear = Year(now) '현재날짜의 년도 데이터를 가져온다.


데이터 타입

Cbool - Boolean  
Cbyte - Byte  
Ccur - Currency  
Cdate - Date  
CDbl - Double 
Cint -  Integer  
CLng - Long  
CSng - Single  
CStr - String 
Cvar - Variant  
CVErr - Error  


ASP 기본 문법과 함수

ASP의 기본 문법

□ 변수, 배열, 개체 선언

Dim 변수이름
Dim 배열이름(배열크기)
;
대개 일반 변수는 정의 하지 않고 사용 한다. 그러나 배열 변수는 정의를 한 후에 사용 해야 한다.

배열 크기 조정

ReDim [preserve] 배열이름(새로운 크기)
; preserve 를 붙이면 원래의 배열 내용을 유지하면서 크기가 조절된다.

개체선언

SET 개체명 = Server.CreateObject("컴포넌트이름")

□ 연산자

산술 연산자 비교 연산자 논리 연산자
설명 기호 설명 기호 설명 기호
지수 ^ 같다 = 논리적 부정 Not
단항 부정 - 같지 않다 <> 논리적 결합 And
곱셈 * 보다 작다 < 논리적 분리 Or
나눗셈 / 보다 크다 > 논리적 배타 Xor
정수 나눗셈 \ 보다 작거나 같다 <= 논리적 동등성 Eqv
나머지 연산 Mod 보다 크거나 같다 >= 논리적 함축성 Imp
덧셈 + 개체 동등성 Is    
뺄셈 -        
문자열 연결 &        
□ 논리 구문들
조건분기(IF) 예제
조건에 따라 실행을 다르게 하는 구문

IF 조건 THEN
    [
참일때 실행문]
[ELSEIF
조건 THEN
    [
참일때 실행문]]
    ...
[ELSE
    [
거짓일때 실행문]]
END IF

page = Request.QueryString("page")
if page="" then
    page=1
end if

s = Request.QueryString("s")
if s="1" then
    s = "
남자"
else
    s = "
여자"
end if
cmd = Request.QueryString("cmd")
if cmd="list" then
    ' list
처리
elseif cmd="view" then
    ' view
처리
elseif cmd="write" then
    ' write
처리
else
    '
에러 처리
end if
다중분기(SELECT CASE) 예제
elseif와 같은 여러개의 조건에 따른 처리를 한다. 

SELECT CASE
    [CASE 경우n
        [
실행문]]
    ...
    [CASE ELSE
        [
실행문]]
END SELECT

cmd = Request.QueryString("cmd")
select case cmd
    case "list"
        ' list
처리
    case "view"
        ' view
처리
    case "write"
        ' write
처리
    case else
        '
에러 처리
end select 
회수가 정해진 반복문(FOR) 예제

일정한 회수 만큼 반복하여 같은 문장을 실행 할때 사용한다.
반복 하는 도중에 EXIT FOR를 만나면 반복을 그만둔다.
증가치가 1인경우 생략 가능하다.

FOR 변수=처음값 TO 최종값 [STEP 증가치]
    [
실행문]
    [EXIT FOR]
NEXT

for i=1 to 5
    Response.Write i
next

for i=1 to 5
    for j=1 to i
        Response.Write "*"
    next
    Response.Write "<br>"
next
컬렉션 요소 만큼 반복(FOR EACH) 예제
개체나 컬렉션의 요소 수만큼 반복한다.

FOR EACH 변수명 IN 컬렉션
    [실행문]
NEXT

for each a in request.ServerVariables
    response.write a & "="
    response.write request.ServerVariables(a)
    response.write "<br>"
next
선행 조건검사 반복 예제

조건이 참인동안(while) 반복하거나, 참이 될때까지(until) 반복 한다.
exit do를 만나면 반복을 그만둔다.
조건을 먼저 검사한 후 실행문을 반복 실행 한다.

DO {WHILE | UNTIL} 조건
    [실행문]
    [Exit Do]
LOOP

a = 10
do while a<1
    Response.Write a
    a = a - 1
loop

결과는
 10987654321
이 출력 된다.
후행 조건검사 반복 예제

do while과 동일 하지만 조건을 뒤에 검사 한다.

DO
    [
실행문]
    [Exit Do]
LOOP {WHILE | UNTIL}
조건

a = 10
do
    Response.Write a
    a = a - 1
loop while a<1

결과는
 1098765432
이 출력 된다.

□ Function과 SUB 루틴

프로그램에서 같은 동작을 하는 부분이 여러번 나올때 Sub나 Function을 이용하면 전체 프로그램의 길이가 짧아 지며, 구조화 시킬 수 있다. Function은 함수형태로 사용되게 작성을 하는 것이고, Sub는 명령어 형태로 사용하게 작성 하는 것이다.

SUB(서브루틴) 정의와 사용 - 결과 값이 없고, 명령어 형태이다.

정의 측 실행 하는 방법
SUB 서브루틴이름(인수1, 인수2 ...)

 
서버루틴 내용
    [exit sub]

END SUB
서브루틴이름  인수1, 인수2 ...

Function(함수) 정의와 사용 - 결과 값이 있고, 함수 형태 이다.

정의 측 실행 하는 방법
Function 함수이름(인수1, 인수2 ...)

 
함수 내용
    [exit function]

    함수이름 = 결과값
END Function
변수 = 함수이름(인수1, 인수2 ...)

VBScript 기본 함수들

변환 함수들
함수 설명
ASC(문자열) 첫문자의 ANSI코드 값 추출
CHR(숫자) 지정됨 숫자에 해당하는 ANSI문자값
CBOOL() 값을 TRUE/FALSE형식으로 변환
BYTE() 값을 BYTE형으로 변환
CDATE() 값을 날짜형으로 변환
CDBL() 값을 DOUBLE(실수)형으로 변환
CINT() 값을 INT(정수)형으로 변환
CLNG() 값을 LONG(정수)형으로 변환
CSNG() 값을 SINGLE(실수)형으로 변환
FIX(실수) 소수점 아래를 버린다.
HEX(수치) 16진수 문자로 바꾼다.
INT(실수) 실수를 정수로 바꾼다.
SGN(수치) 수치의 부호를 -1, 0, 1의 형태로 구한다.
날짜/시간 함수들
함수/예약변수 설명
NOW 현재 서버의 날짜/시각
DATE 현재 서버의 날짜
TIME 현재 서버의 시각
YEAR(날짜값) 날짜에서 년도 추출
MONTH(날짜값) 날짜에서 월 추출
DAY(날짜값) 날짜에서 일 추출
WEEKDAY(날짜값) 날짜에서 요일 추출 1:일, 2:월, 3:화 ... 7:토요일
HOUR(날짜형) 날짜 형식에서 시간 추출
MINUTE(날짜형) 날짜 형식에서 분 추출
SECOND(날짜형) 날짜 형식에서 초 추출
DateAdd(간격, , 날짜) 날짜에서 정해진 간격으로 수만큼 더한다.
정해진 간격은 y : 1년, m : 월, d : 일, h : 시, n : 분, s : 초
수학 관련 함수들
함수 설명
RND()  0부터 1사이의 무작위 난수 발생
ATN() 아크 탄젠트
COS() 코사인
EXP(값) e(자연로그 밑수)의 인자 제곱
LOG(값) 자연로그 값
SIN(각) 사인값
TAN(각) 탄젠트
※ 각은 라디안 값인다.
문자열 관련 함수들
함수 설명
FormatCurrency(v)  통화형식으로 표시
FormatDateTime(v) 날짜형으로 표시
FormatPercent(v) %형식으로 표시(*100을 한다.)
Lcase(s) 소문자로 변환
Ucase(s) 대문자로 변환
Instr(s1, s2) s1에서 s2가 있는 위치
Left(s, v) s에서 왼쪽에서 v글자만큼 추출
Right(s, v) s에서 오른쪽에서 v글자만큼 추출
Mid(s, v1, v2) s에서 v1위치에서 v2글자만큼 추출
Trim(s) s의 좌우 공백(Vbcrlf 포함) 제거
RTrim(s) s의 오른쪽 공백 제거
LTrim(s) s의 왼쪽 공백 제거
Split(s, d) s문자열을 d문자로 나누어서 배열에 저장 한다.
StrReverse(s) s를 거꾸로 한다.
Replace(s, s1, s2) s문자열 에서 s1을 s2로 모두 바꾼다.
변수 테스트 함수들
함수 설명
IsArray(s) s가 배열인가?
IsDate(s) s가 날짜형인가?
IsEmpty(s) s가 변수로 할당 되어 있는가?
IsNull(s) s가 빈 문자열인가?
IsNumeric(s) s가 숫자인가?
IsObject(s) s가 개체인가?
VarType(s) s의 형식을 나타내는 숫자값

 


+ Recent posts