itcookbook asp chapter2

46
01. ASP 동작환경과 코드 구조 02. 변수와자료형 03. 제어문과반복문 04. 서브프로시저와 함수 05. 유용한ASP 내장 함수 요약 연습문제 ASP 기본구조 C h a p t e r 0 2 학습목표 •A S P의 동작 환경과 언어적 특성을 이해한다. •ASP 변수, 배열 선언과용법, 자료형을 이해한다. •함수( F u n c t i o n ) 서브프로시저(Sub) 구조를이해한다. •if, select 분기문과 for...next, do...loop 반복문 구조와 용법을 익힌다. •자주 사용되는내장함수(VBScript 함수) 사용법을익힌다.

Upload: xyzlee

Post on 13-Aug-2015

202 views

Category:

Documents


0 download

TRANSCRIPT

01. ASP 동작환경과코드구조

02. 변수와자료형

03. 제어문과반복문

04. 서브프로시저와함수

05. 유용한ASP 내장함수

요약

연습문제

ASP 기본구조

C h a p t e r

0 2

학습목표

•A S P의 동작환경과언어적특성을이해한다.

•ASP 변수, 배열선언과용법, 자료형을이해한다.

•함수( F u n c t i o n )와 서브프로시저(Sub) 구조를이해한다.

•if, select 분기문과for...next, do...loop 반복문구조와용법을익힌다.

•자주사용되는내장함수(VBScript 함수) 사용법을익힌다.

ASP 역시다른프로그래밍언어와마찬가지로동작환경과언어구조가독특하다. IIS에서

작동하는ASP의동작환경과코드구조를살펴보자.

ASP 동작환경

대개HTML 문서는더블클릭하는것만으로도인터넷익스플로러에서실행된다. 1장에서

도언급했듯이HTML을해석하는해석기가인터넷익스플로러에내장되어있기때문이다.

반면, 웹서버에해석기가내장된ASP 파일은http://localhost/a.asp와같이반드시서

버를통해호출해야한다. 서버를통과해야만서버에내장된해석기로ASP 웹페이지를해

석할수있기때문이다.

ASP 파일의확장자는기본적으로.asp여야한다. 이는웹브라우저가요청하는웹문서의

확장자가.asp인 경우에만ASP 해석기(ASP 스크립팅엔진)를호출하도록IIS 웹 서버가

설정되어있기때문이다.

5 2

ASP 동작환경과코드구조

S e c t i o n

1

[그림2-1] .asp 문서를처리하는a s p . d l l

A S P 문서를 해석하는 해석기는asp.dll 파일이며, C : \ W I N N T \ S y s t e m 3 2 \ i n e t s r v \

디렉터리에 저장되어 있다. .asp 문서뿐만 아니라 .html 문서도ASP 코드를 실행하는

ASP 문서로사용하려면[시작] →[제어판] →[관리도구] →[인터넷정보서비스] →[웹

사이트] →[등록정보] →[홈디렉터리] →[구성]을선택하여ISAPI 응용프로그램매핑에

해당사항을추가하면된다.

ASP는 윈도우운영체제를기반으로작동되기때문에윈도우운영체제에서발생하기쉬운

보안문제에상대적으로취약하다는단점이있다. 인터넷에서.asp 파일을웹문서로사용

하는웹사이트는‘이웹사이트는MS 운영체제를사용한다’는사실을광고하는것과마찬

가지므로몇몇웹 사이트는.asp 확장자대신.html이나다른확장자를지정하여ASP를

사용하고있음을감추기도한다.

ASP 코드구조

웹 문서는물리적인파일안에여러가지언어를포함하고있다. HTML 문서에는HTML

코드와자바스크립트를, ASP 문서에는ASP 코드와HTML 코드와자바스크립트를포함

하고있다. 각언어는고유의해석기를통해야하므로, 하나의웹 문서를다수의해석기로

해석하는독특한구조다. 이런구조를하이브리드코드구조라한다.

1장에서살펴본today.asp는 오늘날짜를출력하는간단한ASP 파일이다. 이예제를통

해 ASP 코드와HTML 코드그리고자바스크립트코드가포함된하이브리드코드의사용

방법을익혀보자.

ASP 페이지작성하기

자바스크립트와ASP 코드를이용해서오늘날짜를출력하는today.asp 파일을작성하고저장한다.

5 3

2장. ASP 기본구조◀

2

하이브리드코드의작동원리알아보기따라하기

[예제2-1] to d a y . a s p

01 <HTML>

02 <script Language="Javascript">

03 var toDay = new Date()

1

FTP 접속기능으로파일전송하기

저장한today.asp 파일을웹 서버로업로드한다. 에디트플러스의[File] →[FTP] →[FTP 업로드] 메뉴에

서 처리한다(웹브라우저의홈디렉터리에각 장에해당하는디렉터리를미리만들어두고, 해당장의예제

를 각각저장하자. 이책에서는2장에서만든예제파일을ch2 디렉터리에저장하도록한다) .

실행결과확인하기

[예제2 - 1 ]은 웹 페이지의본문에자바스크립트와HTML 코드와ASP 코드를함께사용했다. 소스코드중

VB 스크립트로작성한<script language='vbscript' runat='server'>는a s p . d l l에 의해해석되는부분이다.

실행결과는[그림2 - 2 ]와같다.

예제의도에따르면HTML 문서를출력한결과는‘오늘은2004-03-01 입니다’여야한다. 그런데결과는

‘오늘은입니다. 2004-03-01’과 같이출력되었다. 웹서버를통해 ASP 코드를해석한후 클라이언트로

전송한HTML 문자열은다음과같다.

5 4

▶ 1부. 준비학습: ASP 기본문법

04 var strDate = toDay.getFullYear() + "년" +(toDay.getMonth()+1) + "월" + toDay.getDate() + "일";

05 alert("오늘은" + strDate + " 입니다");

06 </script>

07 <BODY>

08 <H3>오늘은

09 <script language="VBScript" runat="server">

10 Response.Write date()

11 </script>

12 입니다.</H3>

13 </BODY>

14 </HTML>

[그림2-2] today.asp의실행결과

2

3

<!-- 스크립트부분생략--><H3>오늘은

입니다.</H3></BODY></HTML>2004-03-01

인라인스크립트적용하기

ASP 코드를 실행한 결과가 의도대로 나오지 않는 이유는 웹 서버가 <script language="vbscript"

runat="server"> 태그를만나면ASP 스크립트를처리하기는하지만, 그결과를HTML 문자열의맨 끝에

추가하기때문이다. 이러한이유로A S P에서는주로인라인스크립트명령어인< % . . . % >를 사용한다. 인라

인 스크립트명령어를사용해서[예제2 - 1 ]을 다음과같이수정하자. 실행결과는[그림2 - 3 ]과 같이정상

적으로출력될것이다.

<HTML><script Language="Javascript"> var toDay = new Date()var strDate = toDay.getFullYear() + "년" + (toDay.getMonth()+1) +"월" + toDay.getDate() + "일";alert("오늘은 " + strDate + " 입니다");</script><BODY><H3> 오늘은 <%Response.Write date()%> 입니다.</H3></BODY></HTML>

인라인스크립트명령어를이용하면HTML 문자열사이사이에ASP 코드를삽입할수 있어프로그래밍이

훨씬편리하다. 이런방식은대부분의웹 프로그래밍언어에도그대로적용되는데, PHP는인라인스크립

트로< ? . . . ? >를사용하고, JSP는A S P와 동일한<% ... %>를사용한다.

5 5

2장. ASP 기본구조◀

4

[그림2-3] 인라인스크립트를사용한 t o d a y . a s p의 실행결과

ASP 변수는특별한자료형을제공하지않고, 변수선언을강제하지않는등일반적인프로

그래밍언어의변수와는형태가다르다. 웹사이트성능을최대화하려면ASP 변수를사용

할때어떤점을고려해야하는지알아보자.

식별자

식별자는변수나함수를지정할때 이름이될 수 있는 단어를뜻한다. 단ASP에서는VB

스크립트에서지원하는다음과같은식별자기준을따른다.

•식별자는문자와숫자, _를사용하여생성할수있다.

•특수문자나메타문자는사용할수없다.

•식별자길이는255자이내로지정한다.

•VB 스크립트에서는대소문자를구분하지않는다. 즉ABC와 abc는동일한식별자를의

미한다.

•식별자의첫문자로숫자를사용할수없다.

[표2-1]은VB 스크립트의식별자생성규칙을준수한예와사용이불가능한예를나타낸

것이다.

[표2-1] 식별자생성예

사용가능 사용불가

I n t C o u n t int?Count, int!Count, int@Count

_ s t r N a m e ~ s t r N a m e

s t r P w d 1 2 3 1 2 3 s t r P w d

5 6

변수와자료형

S e c t i o n

1

기본 ASP 언어를 자바

스크립트로 따르는 경우

식별자 기준도 자바스크

립트를따른다.

변수

변수는응용프로그램이실행되는동안사용되는값을임의로저장하기위해개발자가이

름을지정하여할당받은메모리영역을뜻한다. 변수는응용프로그램이실행되는동안그

값이지정된자료형내에서자주변경될수 있다. 예를들면, 인터넷응용프로그램의로그

인 페이지에회원 아이디와비밀번호를뜻하는 strLoginId와 strPwd 변수를생성하면,

이 변수는계속 비어있다가실제로사용자가로그인할때 아이디와비밀번호를입력하는

순간그 값이저장된다. 또한변수명은항상strLoginId와 strPwd로 동일하지만, 변수에

저장되는값은로그인하는회원에따라다르게변한다.

(1) 변수선언

ASP는비주얼베이직과마찬가지로변수를선언할때Dim 키워드를사용한다.

일반적인프로그래밍언어는변수를생성할때변수를선언하는키워드, 변수명, 변수의자

료형을함께선언한다. 다음은비주얼베이직에서변수를정수형으로선언한예다.

ASP 프로그래밍 구조는 비주얼 베이직 구조를 많이 차용했다. 하지만 스크립트 언어인

ASP에서는변수를선언하지않고도바로사용할수 있고, 변수선언에서도볼 수 있듯이

명확한자료형을지원하지도않는다(ASP 변수는모두Variant 형이다). 그러나변수를선언

하지않고사용하면파일을실행할때소스코드를해석하는데 많은시간이소요되기때문

에반응속도가느려질수있다. 따라서변수는선언한후사용할것을권장한다.

(2) OPTION EXPLICIT 키워드

ASP는변수선언을강제할 수 있도록OPTION EXPLICIT 키워드를제공한다. Option

explicit 키워드를ASP 문서맨앞에사용하면선언하지않은변수를사용할때오류가발

생한다.

5 7

2장. ASP 기본구조◀

2

Dim varA As Integer

Dim myVariableDim myVar1, myVar2, myVar3, myVar4

<%OPTION EXPLICIT%><%Dim myVar1, myVar2myVar1 = 1myVar2 = "cool"myVar3 = "13h" '이부분에서오류발생

%>

(3) 변수명명규칙

변수명을지을때는ASP 식별자작성규칙을준수해야할뿐만아니라프로그래밍의효율

성과오류방지를위해일정한규칙을세워야한다. 일반적으로효용성이입증된변수의명

명규칙은다음과같다.

•변수명이길어지더라도자기기술적인변수명을사용한다. 예를들면, var1, var2 형태보

다userId, userPwd와같이변수명자체에그특징을알수있도록하는것이좋다.

•ASP 내장객체나키워드와헷갈릴수 있는이름은피한다. 예를들면, Date, Number

보다 loginDate나 loginNo가 좋다. 내장객체나키워드내장함수와동일한변수명을

정의하면오류가발생한다.

•변수범위가달라도서로다른변수라면같은변수명을사용하지않는다.

상수

프로그래밍언어를이용해서응용프로그램을개발할때는변수를사용할때와달리자주

사용되는값을인지하기쉬운문자로변경하여사용할필요가있다. 이런경우 항상같은

값을갖는상수를사용한다. 예를들면, 모든판매상품에세금이8.5% 붙는다고할때, 세

율을 8.5%라고 직접 쓰거나 변수에 담는 것보다TAXRATE라는상수를선언하고, 해당

상수값에8.5%를부여한후세율을계산할때마다호출해서사용하는편이좋다.

(1) 상수선언

상수는Const 키워드를사용해서선언할수 있다. 상수선언후 상수값을저장한다. 일반

적으로상수를일반변수와구분하기위해상수명전체를대문자로작성한다.

5 8

▶ 1부. 준비학습: ASP 기본문법

3

우리가 가장 잘 아는 대

표적인 상수로 원주율을

뜻하는p i를들수있다.

Const TAXRATETAXRATE = 0.085

Const 키워드를사용해서선언한상수는상수값을단 한번만설정할수 있고, 프로그래밍

도중상수값을변경하려고시도하면‘잘못된할당’오류가발생한다.

자료형

변수나상수가가질수있는 값의범위를자료형이라고한다. 자료형을지정하는이유는변

수나상수를실제메모리에할당할때 사용될메모리크기를지정하기위해서다. 예를들

면, 숫자는아무리큰 숫자를저장해도16바이트면충분하지만(4바이트정도면정수형은-

21억~ +21억까지설정할수 있다), 문자열은1글자가1바이트메모리를차지한다. 결국변

수에지나치게많은 메모리를할당하게되므로시스템성능에심각한영향을줄 수 있다.

따라서저장할데이터종류에따라변수나상수의자료형을정확히지정해야한다.

ASP, 펄(Perl), PHP와 같은 서버측스크립트언어는 변수나상수의 자료형을지정할수

없다. 모든변수의자료형을한 가지로제한하기때문이다. ASP는 모든 변수의자료형을

Variant라는형식으로지정해놓았다. Variant는 특별한형태의자료형으로모든 형태의

데이터를저장할수있다.

Variant 형 변수는저장되는데이터의형식을자동으로감지하여숫자, 문자등으로인식

한다. 간혹자동으로감지된자료형이원래의도와다르게지정될때도있다. 이런경우, 하

위자료형변환함수를이용해서변수의자료형을변경해주어야한다.

ASP에서는변수의자료형을Variant로제한하지만, 저장되는값에따라데이터형태를여

러 가지하위자료형(하위자료형)으로정의한다. 하위자료형은크게숫자형, 문자형, 날짜

형, 불린형등으로나눌수있다.

(1) 숫자자료형

•정수형(Integer): -32,768~32,767(2바이트)까지정수를저장하는자료형

•긴정수형(Long): -2,147,483,648~2,147,483,647까지정수를저장하는자료형

•바이트형(Byte): 0~255까지정수를저장할수있는자료형

•싱글(S i n g l e): -3 . 4 0 2 8 2 3 E 3 8~ -1 . 4 0 1 2 9 8 E-4 5의 음수 범위와 1 . 4 0 1 2 9 8 E-

5 9

2장. ASP 기본구조◀

4

4 5~3 . 4 0 2 8 2 3 E 3 8의양수범위를갖는단정도부동소수점숫자를저장할수있는자료형

•더블(Double): -1.79769313486232E308~ -4.94065645841247E-324의 음수범

위와 4.94065645841247E-32~1.79769313486232E308의 양수범위를 갖는 배정

도부동소수점숫자를저장할수있는자료형

•통화(C u r r e n c y): -9 2 2 , 3 3 7 , 2 0 3 , 6 8 5 , 4 7 7 . 5 8 0 8~9 2 2 , 3 3 7 , 2 0 3 , 6 8 5 , 4 8 8 . 5 8 0 7의 범

위를가지는통화형을저장하기위한자료형

(2) 문자자료형

큰따옴표로둘러싸인문자열을저장할때사용한다.

(3) 날짜자료형

날짜에대한정보를저장하기위해미리정해진형식에따라시간과날짜를정의해서사용

한다. 예를들면, toDay라는변수에오늘날짜를저장하려면다음과같이지정한다.

Dim toDaytoDay = #03/11/2002# '월/일/년형태로작성

만일변수값을저장할때 #을빼고저장하면숫자연산이이루어진뒤 숫자자료형으로변

수값이저장되고, “”따옴표를사용하면문자열로인식한다.

(4) 불린형

변수값이true와 false 중 하나만되는형태로제어문에서자주사용한다. 이값을정수형

으로변환하면각각-1과0으로변환된다.

Dim isLoginisLogin = falseIf isLogin = true ThenResponse.write "로그인하셨습니다."

End If

(5) 기타자료형

•Empty: 값을할당받지못함

6 0

▶ 1부. 준비학습: ASP 기본문법

•NULL: 데이터를가지고있지않은필드와DB를연동할때사용하는자료형

•Object: ASP 개체를나타내는자료형

비록ASP가 변수형을Variant로 처리하고는있지만, 내부적으로는변수의하위자료형에

따라배정되는메모리양과처리속도가다르다. 따라서변수를지정할때는그 변수가사

용할자료형을규정해서사용하는것이좋다.

개발자는현재변수에저장된데이터가어떤타입으로저장되어있는지확인할필요가있

다. 확인해서잘못된자료형이있다면형변환함수를통해적절한하위자료형으로변경해

야한다. ASP 변수선언과ASP 변수의하위자료형에대한예제를직접실행해보자.

Typename.asp 작성하기

Typename.asp 파일을작성한후웹 서버의ch2 디렉터리로업로드한다.

6 1

2장. ASP 기본구조◀

ASP 변수선언과하위자료형확인하기따라하기

[예제2-2] T y p e N a m e . a s p

01 <%OPTION EXPLICIT %>

02 <%

03 '변수선언

04 Dim strVar, intVar, dateVar, boolVar, nullVar

05

06 '변수에값지정하기

07 strVar = "안녕하세요"

08 intVar = 15

09 dateVar = #03/1/2004#

10 boolVar = false

11 nullVar = null

12 %>

13 <html>

14 <body>

15 <h3>ASP 변수와하위자료형확인하기<br><hr noshade></h3>

16 <%

17 '변수strVar의하위자료형확인하기

1

실행결과확인하기

웹브라우저주소창에h t t p : / / l o c a l h o s t / c h 2 / T y p e N a m e . a s p를입력하고결과를살펴보면[그림2 - 4 ]와같다.

6 2

▶ 1부. 준비학습: ASP 기본문법

18 Response.Write "strVar는자료형이 " &<h3>TypeName(strVar) & "입니다</h3>" & chr(13)

19 '변수intVar의하위자료형확인하기

20 Response.Write "intVar는자료형이 " &<h3>TypeName(intVar) & "입니다</h3>" & chr(13)

21 '변수dateVar의하위자료형확인하기

22 Response.Write "dateVar는자료형이 " &<h3>TypeName(dateVar) & "입니다</h3>" & chr(13)

23 '변수strVar의하위자료형확인하기

24 Response.Write "boolVar는자료형이 " &<h3>TypeName(boolVar) & "입니다</h3>"

25 %>

26 </h3>

27 </body>

28 </html>

2

[그림2-4] ASP 변수의하위자료형확인하기

연산자

연산자는프로그래밍할때수학적, 논리적계산에사용되는일정한형태의기호를의미한다.

(1) 대입연산자

가장대표적인연산자는변수나상수에값을저장할때나수학계산식에서결과를저장할

때사용하는연산자‘=’이있다. 수학에서는‘=’은‘같음’을의미하지만, 프로그래밍에서는

오른쪽의연산결과를왼쪽에저장하라는의미다.

intVar = 1intVar = intVar + 2

위의예에서볼수있듯이변수 intVar에처음에는1이저장되지만, 두번째줄에서intVar

에 2를 더해오른쪽의변수 intVar에 다시 대입하므로최종적으로는intVar 값은 3이 된

다. 자바나C에서는‘=’외에도‘+ =’, ‘* =’과 같이발전된대입 연산자를사용할수 있지

만, VB 스크립트에서는‘=’만사용할수있다.

(2) 산술연산자

산술계산을위한연산자로서기본적으로가감승제를수행한다.

[표2-2] 산술연산자

연산자 설명 연산자 설명

+ 더하기 ^ 지수

- 빼기 - 음수

* 곱하기 m o d 나머지

/ 나누기

mod 연산자는나머지를구하는연산자로, A mod B를한다면A를B로나눈후나머지를

반환한다. 예를들면, 다음과같이13 mod 3 연산결과를확인하면1이출력된다.

Dim intRestintRest = 13 mod 3 Response.Write intRest

6 3

2장. ASP 기본구조◀

5

(3) 비교연산자

두 변수나상수값을비교하여그 관계를알고자할 때 사용하는데, 두값의크기를비교하

는경우가대부분이다.

[표2-3] 비교연산자

연산자 설명 연산자 설명

= 같다 < = 작거나같다

< 보다작다 > = 크거나같다

> 보다크다 < > 같지않다

(4) 논리연산자

조건에대한논리적인연산을통해 true나 false 값을반환하는작업을수행한다. 논리연

산자의종류로는논리곱, 논리합, 부정과배타논리합이있다.

•AND: 논리곱. 두조건이모두참이어야결과값이참이된다.

•OR: 논리합. 두조건중하나만참이면결과값이참이된다.

•NOT: 부정. 조건값을반대로만든다.

•XOR: 배타적논리합(Exclusive OR). 두조건의진위값이서로달라야만참이된다.

(5) 연결연산자

A S P에서자주사용하는연산자중하나가바로문자열을합칠때필요한연결연산자‘&’이

다. ‘&’를사용하면문자열과변수, 숫자등을모두문자열로인식해서하나로합칠수있다.

Response.Write "s t r V a r는자료형이 " & TypeName(strVar) & "입니다< b r >"

ASP 배열

배열은유사한항목을많이저장하고자할때사용한다. 이름을하나지정하고인덱스번호

를사용해서여러값을저장할수있는자료집합이다. 하나의변수에해당하는데이터값이

여러개존재할때이를저장하기위해배열을사용할 수있다. 서로다른변수에각각데이

6 4

▶ 1부. 준비학습: ASP 기본문법

6

터를저장하는것보다배열을사용하면인덱스번호를사용해서쉽게접근할수 있다는장

점이있다.

Cart1 = '자장면'

Cart2 = '짬뽕'

Cart3 = '탕수육'

Cart(0) = '자장면'

Cart(1) = '짬뽕'

Cart(2) = '탕수육'

배열에저장한데이터는선언된배열 크기만큼for 문과같이루프를통하면쉽게접근할

수있다. 따라서서로다른변수에데이터를각각저장하는것보다훨씬효율적이다.

(1) 고정크기배열선언

배열도Dim 키워드를사용해서선언한다. 배열을선언할때 배열크기를인수로함께정

하는데, 이를고정크기배열이라고한다.

Dim Cart(2)Cart(0) = '마우스'

Cart(1) = '키보드'

Cart(2) = '프린터'

인수2는인덱스끝번호를의미한다. 배열은인덱스번호0부터시작하기때문에인수2를

사용해서선언한배열은항목을2개갖는다.

(2) 동적배열

배열에 저장할 데이터개수가불분명해서배열 크기가확정되지않았다면동적인 배열을

다음과같이선언할수있다.

Dim dArray()

이렇게선언된동적배열은실제로배열의항목개수가정해져있지않으므로, 배열에저장

할 데이터개수를확인하면다음과같이Redim 키워드를이용해서배열크기를재지정해

야한다. 배열크기를지정하지않으면변수선언만가능할뿐사용은불가능하기때문이다.

6 5

2장. ASP 기본구조◀

Redim dArray(2)

dArray(0) = "cookin"dArray(1) = "김찬웅"

dArray(2) = "0333"

Redim 키워드는동적배열이아니더라도정적배열에서배열크기를변경할때사용할수

있다. 단, 배열크기를재지정하면메모리에서새로운영역을할당하기때문에기존에저장

된데이터는모두지워진다.

Dim Cart(2)Cart(0) = '마우스'

Cart(1) = '키보드'

Cart(2) = '프린터'

Redim Cart(3)

(3) Pre s e rve를이용한배열값보존

Redim 키워드를이용해서배열크기를변경할때가장큰문제는기존에저장된데이터가

모두사라진다는점이다. 이와같은데이터소실을막기위해Redim 키워드를사용해서

배열을재지정할때Preserve 키워드를같이적용하면저장된데이터를보호할수있다.

Redim Preserve Cart(3)

(4) 다차원배열

ASP에서는여러개의인수를사용해서배열을선언하게함으로써, 다차원배열을사용할

수 있도록하고있다. ASP의 다차원배열은60차원까지가능한데, 다차원배열선언과사

용예는다음과같다.

Dim userArray(2,2)

userArray(0,0) = "홍길동"

userArray(0,1) = "서울시종로구염창동"

userArray(0,2) = "222-3333"userArray(1,0) = "고길동"

userArray(1,1) = "서울시성북구수유동"

userArray(1,2) = "333-4444"

6 6

▶ 1부. 준비학습: ASP 기본문법

다차원 배열의 기능은

데이터베이스 기능과 중

복되는 면이 많다. 하지

만 다차원 배열에 비해

관계형 데이터베이스

( R D B )에는 자료 저장의

최적화나 입출력의 자동

화 등 여러 가지 장점이

있다. 따라서 다차원 배

열보다는 R D B를 사용하

기를권한다.

주석

주석은소스코드를실행할때 아무런영향을주지않으며, 소스코드설명, 지원되지않는

스크립트언어의실행방지, 개발중 테스트를위해사용하는비실행구문이다. ASP 문서

에서는크게HTML 주석, 자바스크립트주석, ASP 코드주석이사용된다

HTML 주석은‘<!-- ...... -- >’를, 자바스크립트주석은‘//’와‘/ * . . . */’를, ASP 주석은

영문작은따옴표(')를사용한다. 특히자바스크립트의경우, 구버전의브라우저를사용하

는 컴퓨터에서는실행되지않거나 텍스트로인식되는경우가생기므로소스 코드 전체를

HTML 주석으로묶어주기도한다.

다음코드는[예제2-1]에주석을추가한것이다. HTML, 자바스크립트, ASP 주석이어떻

게사용되는지확인해보자.

today.asp 파일에다음과같이주석을추가한후웹서버의 ch2 디렉터리에업로드한다.

<%language="VBScript"%><HTML><script Language="Javascript"><!-(html 주석시작)// 날짜객체생성(자바스크립트주석)

var toDay = new Date()// 오늘날짜를구성하여변수에저장

var strDate = toDay.getFullYear() + "년" + (toDay.getMonth()+1) +"월" + toDay.getDate() + "일";

//오늘날짜를확인하는대화상자출력

alert("오늘은" + strDate + " 입니다");//(html 주석끝)--></script><BODY><!--서버로부터실행된결과가아래의 HTML 문자열사이에출력됨--><H3>오늘은

<%'오늘날짜를출력 (ASP 주석)Response.Write date()%> 입니다.</H3></BODY></HTML>

6 7

2장. ASP 기본구조◀

7

t o d a y . a s p에 주석추가하기따라하기

1 직접 메뉴를 이용해서

[File] → [FTP] → [ F T P

업로드]를 선택해도 되지

만, 단축키( C t r l + S h i f t + S )

를 사용하면 훨씬 쉽게

파일을업로드할수있다.

실행결과확인하기

주석은프로그램의실행에아무영향을미치지못하므로실행결과는주석추가전과동일하다( [그림2 - 5 ]

참고). 그러나웹브라우저에서[보기] →[소스]를하면주석이입력되었음을확인할수있다.

6 8

▶ 1부. 준비학습: ASP 기본문법

[그림 2-5] 인라인 스크립트를 사용

한 t o d a y . a s p의 실행결과

2

프로그래밍에서실행순서는대개분기문, 반복문, 이동제어를통해제어한다. ASP 프로

그래밍에서분기문, 반복문, 이동제어를사용하는방법을알아보자.

분기문

(1) If 문

If ... Then ... End If 구조를사용하여조건에따라여러구문을실행할수 있다. 예를들

어, If 문을회원로그인기능에사용한다면아이디와비밀번호가맞으면로그인을허락하

고, 그렇지않으면로그인오류를출력한다.

IF 문을이용해서변수에저장된숫자 크기를판별하는간단한예를만들어보자.

howbig.asp 작성하기

howbig.asp 파일을작성한후웹 서버의ch2 디렉터리로업로드한다.

6 9

제어문과반복문

S e c t i o n

1

If 문을이용해서숫자판별하기따라하기

1

[예제2-3] h o w b i g . a s p

01 <%OPTION EXPLICIT%>

02 <HTML>

03 <BODY>

04 <H3>ASP에서제어문 If 사용하기<HR noshade></H3>

05 <%

06 '변수선언

실행결과확인하기

[예제2 - 3 ]에서는 If 문으로변수에저장된숫자를비교하여참이되는부분의코드를실행시키는논리구

조를생성하였다. 이파일을웹디렉터리에저장하고, 브라우저에서실행하면[그림2 - 6 ]과같다.

7 0

▶ 1부. 준비학습: ASP 기본문법

07 Dim intNum

08 intNum = 8 '변수값에8을지정

09

10 If intNum > 10 Then

11 Response.Write "변수intNum은 10보다큰정수입니다."

12 ElseIf intNum > 1 Then

13 Response.Write "변수 intNum은 1과 10 사이의정수입니다."

14 ElseIf intNum = 0 Then

15 Response.Write "변수intNum은 0 입니다."

16 Else

17 Response.Write "변수 intNum은0보다작은음의정수입니다."

18 End If

19 %>

20 </BODY>

21 </HTML>

2

[그림2-6] If 문을사용하여변수값

확인하기

(2) Select...Case 문

If 문이조건을조사하여참을실행하는구조라면Select. . .Case는검사식을한 번만평가

한 후 결과값과같은목록을선택하는구조다. 그러므로많은가능성중 하나만실행할때

효과적이다. 또한Select. . .Case는 분기점이많을때 필요하지만, If. . .Then 문처럼조건

값이범위일경우에는사용할수 없으며, 하나의값에대해서만반응한다. 따라서범위에

대한조건을따지려면If. . .Then 문장이나Case 문을사용한다. Select. . .Case에서범위

를지정하려면3, 4, 5, 6, 7. . .하는식으로모두나열해야한다.

[예제 2 - 4 ]는 로그인한 사용자의 등급에 따라 관리자, 회원, 비회원에 해당하는 화면으로 이동한다.

Select...Case 문을이용한예다.

SelectCase.asp 작성하기

SelectCase.asp 파일을작성한후웹 서버의ch2 디렉터리로업로드한다.

7 1

2장. ASP 기본구조◀

Select... Case로회원등급판별하기따라하기

1

[예제2-4] S e l e c t C a s e . a s p

01 <%OPTION EXPLICIT%>

02 <HTML>

03 <BODY>

04 <H3>Select...Case 구문을이용하여페이지제어하기<HR NOSHADE></H3>

05 <%

06 Dim userLevel

07 userLevel = "member"

08

09 Select Case UserLevel

10 Case "admin"

11 Response.Write "당신은관리자계정으로로그인하셨습니다."

12 Case "member"

13 Response.Write "당신은회원계정으로로그인하셨습니다."

14 Case "guest"

15 Response.Write "회원으로로그인하세요."

16 End Select

17 %>

실행결과확인하기

소스코드에서확인할수 있듯이변수userLevel 값이‘m e m b e r’로 저장되었기때문에Select Case 문

의 두번째 C a s e가 선택되어실행된다. [예제2 - 4 ]의실행결과는[그림 2 - 7 ]과같다.

반복문

간혹코드몇줄을변수만달리해서반복 실행함으로써상품목록이나게시물목록등을출

력할경우가있는데, 이때반복문을사용한다. ASP에서는For. . .Next, For Each. . .In. . .

Next, Do While/Until. . .Loop 문이라는반복문을제공한다.

(1) For 문

반복실행할횟수를알고있다면For 문을 사용한다. For 문은세 부분으로나뉘어있는

데, 바로반복실행횟수를지정하는부분, 반복되는실행문, 실행문의끝을알리고다시처

음으로돌리는Next다. For. . .Next 문의문법구조는다음과같다.

7 2

▶ 1부. 준비학습: ASP 기본문법

18 </BODY>

19 </HTML>

2

[그림2-7] S e l e c t C a s e . a s p의 실행결과

2

For 문이나While 문의가장대표적인예는게시판의목록을출력할때다. 게시물목록은

한페이지에10~20줄 정도지정되는데, 게시물이10줄미만일경우에는존재하는게시물

개수만큼만반복하도록설정되어있기때문에조건을갖는반복문을사용한다.

ForNext.asp 작성하기

ForNext.asp 파일을작성한후웹 서버의ch2 디렉터리로업로드한다.

7 3

2장. ASP 기본구조◀

For 문을이용하여HTML 테이블에행 생성하기따라하기

1

[예제2-5] F o r N e x t . a s p

01 <%OPTION EXPLICIT %>

02 <HTML>

03 <BODY>

04 <table width="300" border="1">

05 <tr bgcolor="yellow" align="center">

06 <td>이름</td>

07 <td>제목</td>

08 <td>이메일</td>

09 </tr>

10 <%

11 Dim count

12 For count = 0 To 4%>

13 <!-이부분반복실행-->

14 <tr>

15 <td>&nbsp;</td>

16 <td>&nbsp;</td>

17 <td>&nbsp;</td>

18 </tr>

19 <%Next%>

20 <table>

For 카운터= 초기값 To 종료값 [Step 증가값]........

Next

실행결과확인하기

[예제2 - 5 ]의 For 문은c o u n t가 0부터+1 되면서4가될 때까지다섯 번 실행된다. 실행결과 행을5개

만드는HTML 문자열이출력된다. 소스보기를통해fornext.asp 파일이실행된결과화면( [그림2 - 8 ] )을

보면<tr>...</tr> 부분이다섯번반복되었음을알수있다.

(2) For Each 문

For Each 문은For 문과비슷하게동작하지만, 배열이나콜렉션(배열이나개체의집합) 내

의 각 항목들에대해서사용되는독특한반복문이다. 예를들면, 배열에들어있는값을꺼

내기위해서는배열의길이를미리파악하여For 문으로루프를돌려야하지만, For Each

문을사용하면배열길이를미리파악하지않았더라도배열의처음부터끝까지배열에저

장된값에접근할수있다. For Each 문의구문형식은다음과같다.

7 4

▶ 1부. 준비학습: ASP 기본문법

21 </BODY>

22 </HTML>

2

[그림2-8] F o r N e x t . a s p의 실행결과

For Each 요소In 그룹(배열)........

Next

요소는 배열에서하나의배열값을뽑아저장할Variant 변수를뜻한다. 그룹에해당하는

것으로여러개의개체를포함하는컬렉션을사용하는경우에는, 이를요소로저장하기위

해개체변수를사용하기도한다.

ForEach.asp 작성하기

ForEach.asp 파일을작성한후웹 서버의ch2 디렉터리로업로드한다.

실행결과확인하기

소스코드에서볼 수 있듯이4개항목을가진배열C a r t를 For Each 문을이용하여배열값을변수i t e m

에 일일이저장하여처리했다. 반복횟수에대해아무런지정을하지않았어도C a r t의 배열값에모두접근

한 후자동으로반복문을종료했음을확인할수 있다. [예제2 - 6 ]을실행한결과는[그림 2 - 9 ]와 같다.

7 5

2장. ASP 기본구조◀

A S P는 이 모든 변수를

Variant 형으로간주한다.

F o r . . . E a c h문으로배열에저장된데이터출력하기따라하기

1

2

[예제2-6] F o r E a c h . a s p

01 <%OPTION EXPLICIT%>

02 <HTML>

03 <BODY>

04 <H3>For Each 문을이용하여배열값출력하기<HR noshade></H3>

05 <%

06 Dim Cart(3), item

07 Cart(0) = "프로젝션TV"

08 Cart(1) = "양문형냉장고"

09 Cart(2) = "드럼세탁기"

10 Cart(3) = "컴퓨터"

11

12 For Each item In Cart

13 Response.Write item & "<br>"

14 Next

15 %>

16 </BODY>

17 </HTML>

(3) Do...Loop 문

반복실행할횟수를정확히모르거나어떤조건이충족될때까지일부소스코드를반복실행

해야 한다면 D o. . .Loop 구문을 사용한다. D o... L o o p 문은 조건에 따라 D o

W h i l e. . .L o o p와Do Until. . .Loop 문을사용할수있다. W h i l e은조건이참인동안, U n t i l

은조건이거짓인동안소스코드를반복실행한다. D o. . .L o o p 문의형식은다음과같다.

D o. . .Loop 문의동작원리를알아보기위해HTML 테이블에행을추가하는예제를살펴보자.

DoLoop.asp 작성하기

Do...Loop 문은구문형식은다르지만, For 문에서실습한[예제2 - 5 ]와 동일한기능을하는반복문예제

다. DoLoop.asp를작성한후웹 서버의ch2 디렉터리로업로드한다.

7 6

▶ 1부. 준비학습: ASP 기본문법

[그림2-9] ForEach.asp의실행결과

Do Loop 문을이용해서HTML 테이블에행 추가하기따라하기

1

Do While 조건문........

Loop

실행결과확인하기

웹 브라우저에서h t t p : / / l o c a l h o s t / c h 2 / D o L o o p . a s p를 입력하고실행결과를확인한다. [그림2 - 1 0 ]과 같

은 화면이출력되었다면제대로작성한것이다.

7 7

2장. ASP 기본구조◀

[예제2-7] D o L o o p . a s p

01 <%OPTION EXPLICIT%>

02 <HTML>

03 <BODY>

04 <table width="300" border="1">

05 <tr bgcolor="yellow" align="center">

06 <td>이름</td>

07 <td>제목</td>

08 <td>이메일</td>

09 </tr>

10 <%

11 Dim count

12 count = 0

13

14 Do While count < 5

15 %>

16 <tr>

17 <td>&nbsp;</td>

18 <td>&nbsp;</td>

19 <td>&nbsp;</td>

20 </tr>

21 <%

22 count = count + 1

23 Loop

24 %>

25 </BODY>

26 </HTML>

2

(4) Exit 문

제어문을실행하는도중에특정한조건에따라제어문을빠져나가야하는경우가있다. 이

런경우 Exit 문을사용하면실행을멈추고, 바로제어구조를탈출할수있다. Exit 문은반

복문인F o r. . .Next 문이나D o. . .Loop 문과같이사용할수있다. 다음은Exit 문구조다.

일반적으로Exit 문은반복문중간에넣어특정조건을만족하면반복문을탈출하게한다.

앞에서살펴본D o. . .Loop 문예제인D o L o o p . a s p에Exit 문을적용한예제를살펴보자.

7 8

▶ 1부. 준비학습: ASP 기본문법

[그림2-10] DoLoop.asp의실행결과

F o r 카운터= 시작값T o 종료값 [S t e p 증가값]

[실행구문블럭]

[Exit For] [실행구문블럭]

Next

D o [ {While | Until} 조건문]

[실행구문블럭]

[Exit Do] [실행구문블럭]

Loop

D o L o o p . s a p에Exit 문추가하기

D o L o o p . a s p를열고 다음에서굵게나타난부분을추가한후 웹서버의ch2 디렉터리로업로드한다.

<%Do While count < 5%><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>

</tr><%If count >= 2 Then

Exit DoEnd ifcount = count + 1Loop%>

실행결과확인하기

D o L o o p . a s p는 변수count 값이2 이상이면반복문에서탈출하도록수정되었다. count는0부터시작해

서 구문을한 번 반복할때마다1씩증가하기때문에HTML 테이블의행이3줄추가된후 반복문이멈춘

다. DoLoop.asp를수정하고실행한결과는[그림2 - 1 1 ]과같다.

7 9

2장. ASP 기본구조◀

[그림2-11] Exit 문이적용된D o L o o p . a s p

의실행 결과

Do...Loop 문에Exit 적용하기따라하기

1

2

응용프로그램을개발하다보면동일한코드를여러곳에서사용할필요를느끼게된다. 동

일한코드가여러지점에서사용될 경우 반복해서코딩하기보다함수나 서브 프로시저로

소스코드를한번작성한후별명을붙여나중에재사용할수있다. 여기에서는 ASP 서브

프로시저와함수구조를살펴보도록하자.

서브프로시저

서브프로시저(Sub Procedure)는값을반환하지는않지만, 특정영역에서call 키워드로

프로시저를호출하여실행될수 있는이름이있는코드덩어리를뜻한다. 서브프로시저는

세 부분으로구성되는데, ①Sub 키워드와프로시저명그리고서브프로시저를호출하면

서함께전송하는인수②프로시저가실행시키게될소스코드③서브프로시저의끝을알

리는종료문으로구성되어있다. 서브프로시저의구문형식은다음과같다.

프로시저는이름과실행 코드를가지고있으며, call 키워드로프로시저를호출할때마다

프로시저에있는실행코드를실행한다.

함수

함수(function)는프로시저와비슷한방법으로작성되지만, 실행결과를함수를통해반환

받을수 있다. 함수의구문형식도세 부분으로나뉘는데, ①Function 키워드와함수명

8 0

서브프로시저와함수

S e c t i o n

1

2

Sub 프로시저명(인수)....실행코드............

End Sub

그리고인수로구성된첫번째부분과②함수가호출되면소스코드가실행될실행코드부

분③함수의선언종료를알리는종료문으로이루어져있다.

ASP는 특성상실행구조가한 페이지로한정된다. 만일여러 번 사용할목적으로함수나

서브프로시저를작성했다고하더라도웹 사이트전체에서사용하려면특정 기능을 하는

함수를별도의페이지로만들어야한다. 그리고별도페이지로만들어진함수를함수가필

요한페이지에#include 문장을이용하여SSI(Server Side Include) 방식으로삽입해야

한다.

가장범용적으로사용되는소스코드재사용은반복적으로복잡한단계를거치는데이터베

이스접속기능을함수화해서사용하는것이다. 이방법은데이터베이스프로그래밍을다

룬후자주쓰게될것이며, 앞으로나올RDB 연동프로그래밍에서자세히다룰것이다.

8 1

2장. ASP 기본구조◀

Function 함수명(인수)....실행코드............

End Function

ASP에서는 신속하고 편리한 웹 사이트 개발을 지원하는 다양한 내장 함수를 제공한다.

ASP 내장함수는VB 스크립트내장함수와동일하므로비주얼베이직프로그래밍에서대

부분사용할수있다. ASP 내장함수인문자열서식함수, 문자열처리함수, 날짜함수, 수

학함수, 진위함수등의구조와용법을살펴보자.

프로그래밍을처음접하는독자에게많은분량의복잡한표로이루어진함수설명이이해

하기쉽지않을것이다. 하나하나자세히이해하려고하기보다대략훑어본후 실제웹 사

이트를개발할때참조하면좋을것이다.

문자열서식함수

문자열관련함수는ASP 프로그래밍을할때매우자주사용하는함수다. 문자열에서원하

는 내용을검색하거나문자를합치거나나누는등의작업을수행한다. 문자열관련함수는

크게문자열서식변환 함수와문자열처리 함수로나뉜다. 다음은자주 사용되는문자열

함수를정리한것이다.

[표2-4] 문자열서식함수

함수 설명

F o r m a t C u r r e n c y 통화기호를사용하는통화값으로지정된식을반환하는함수

F o r m a t D a t e T i m e 날짜와시간을여러가지형식으로반환하는함수

F o r m a t N u m b e r 지정된숫자를서식화된식으로반환하는함수

F o r m a t P e r c e n t 끝에% 문자가있고, 100으로곱해진백분율로형식이지정된식을 반환하는함수

8 2

유용한ASP 내장함수

S e c t i o n

1

(1) Fo r m a t C u r re n c y

FormatCurrency 함수는컴퓨터의제어판에정의된통화기호를사용하는형식화된식

을 반환하는함수로, 용법은다음과같다. 이함수는주로인터넷쇼핑몰에서상품가격을

출력할때쓰인다.

FormatCurrency 함수는다섯가지의인수를사용하며, 각기능은다음과같다.

•Expression : 필수적인요소. 형식이지정되는식이다.

•NumDigitsAfterDecimal: 선택적인요소. 소수점이하의자릿수를나타내는숫자값이

다. 기본값은-1로컴퓨터의국가별설정사용을나타낸다.

• IncludeLeadingDigit: 선택적인요소. 소수점이하의유효숫자앞에0을표시할지여

부를설정한다. [표2-5]의Tristate 상수를사용한다.

•UseParensForNegativeNumbers: 선택적인요소. 음수값을괄호안에 넣을지 여부

를설정한다. [표2-5]의Tristate 상수를사용한다.

•GroupDigits : 선택적인요소. 컴퓨터의국가별설정에서지정한그룹구분기호로숫

자를구분할지여부를설정한다. [표2-5]의Tristate 상수를사용한다.

[표2-5] Tristate 상수

상수 값 설명

T r i s t a t e T r u e - 1 참

T r i s t a t e F a l s e 0 거짓

T r i s t a t e U s e D e f a u l t - 2 컴퓨터의국가별설정값 사용

8 3

2장. ASP 기본구조◀

[예제2-8] F o r m a t C u r r e n c y . a s p

01 상품명: LG 동글이청소기<br>

02 상품코드 : DGI-900<br>

03 상품가격 : <%=FormatCurrency("127000")%>

FormatCurrency ( Expression [ , NumDigitsAfterDecimal [ , IncludeLeadingDigit [ ,UseParensForNegative Numbers [ , GroupDigits ] ] ] ] )

[예제2-8]을실행한결과는[그림2-12]와같다.

(2) Fo r m a t D a t eT i m e

FormatDateTime 함수는날짜와시간을여러 가지형식으로반환하며, 구문형식은다

음과같다.

•Date: 필수적인요소. 보통문자열로날짜식을지정한다.

•NamedFormat: 선택적인요소. 사용한날짜/시간형식을나타내는숫자값이다.

[표2-6]의상수나상수값을사용할수있다.

[표2-6] N a m e d F o r m a t의 상수

상수 값 설명

v b G e n e r a l D a t e 0 기본값. 날짜부분이있으면날짜형식으로날짜를간단하게표시하며, 시간

부분이있으면시간형식으로시간을 자세하게표시한다. 날짜와시간이같이

있으면두부분을 모두표시한다.

v b L o n g D a t e 1 컴퓨터의국가별설정에서지정한날짜형식으로날짜를자세하게표시한다.

v b S h o r t D a t e 2 컴퓨터의국가별설정에서지정한날짜형식으로날짜를간단하게표시한다.

v b L o n g T i m e 3 컴퓨터의국가별설정에서지정한시간형식으로시간을표시한다.

v b S h o r t T i m e 4 2 4시간형식( h h : m m )으로시간을표시한다.

일반적으로FormatDateTime 함수는데이터베이스같은곳에 저장된게시물등록이나

상품 등록일과 같은 날짜, 시간 정보를 지정된 양식에 따라 출력한다. [예제2-9]는

FormatDateTime 함수를이용하여현재시간을여러양식으로출력하는예다.

8 4

▶ 1부. 준비학습: ASP 기본문법

[그림2-12] FormatCurrency.asp의실행결과

FormatDateTime(Date[, NamedFormat])

[예제2-9]의실행결과는[그림2-13]과같다.

(3) Fo r m a t N u m b e r

FormatNumber 함수는숫자로서식화된식을반환하는역할을수행하며, 구문형식은

다음과같다.

FormatNumber 함수는Expression에 지정된숫자를서식화된식으로반환하는형식

이 F o rm a t C u r rency 함수와 흡사하고, 사용되는 상수 또한 F o rm a t N u m b e r와 같이

Tristate 상수를사용한다.

8 5

2장. ASP 기본구조◀

[예제2-9] F o r m a t D a t e T i m e . a s p

<h3>현재시각을여러가지방법으로출력하기<hr noshade></h3>

<p>FormatDateTime(now(), 0) : <%=FormatDateTime(now(), 0)%></p>

<p>FormatDateTime(now(), 1) : <%=FormatDateTime(now(), 1)%></p>

<p>FormatDateTime(now(), 2) : <%=FormatDateTime(now(), 2)%></p>

<p>FormatDateTime(now(), 3) : <%=FormatDateTime(now(), 3)%></p>

<p>FormatDateTime(now(), 4) : <%=FormatDateTime(now(), 4)%></p>

[그림2-13] FormatCurrency.asp의실행결과

FormatNumber ( Expression [ , NumDigitsAfterDecimal [ ,IncludeLeadingDigit[ , UseParensForNegativeNumbers [ , GroupDigits ] ] ] ] )

[예제2-10]의실행결과는[그림2-14]와같다.

(4) Fo r m a t Pe rc e n t

FormatPercent 함수는끝에% 문자가있고, 100으로곱해진백분율형식이지정된식을

반환한다. 구문형식은다음과같다.

FormatPercent 함수는입력내용을백분율로출력하는것 말고는FormatCurrency와

용법이거의같다.

문자열처리함수

문자열처리함수는주로문자열에서특정문자열을검색하거나문자열로부터특정부분을

8 6

▶ 1부. 준비학습: ASP 기본문법

[예제2-10] F o r m a t N u m b e r . a s p

<h3>FormatNumber 함수로숫자를여러형식으로나타내기<hr noshade></h3>

<p>FormatNumber(1234567) : <%= FormatNumber(1234567)%></p>

<p>FormatNumber(1234567,0) : <%= FormatNumber(1234567,0)%></p>

<p>FormatNumber(1234567,5) : <%= FormatNumber(1234567,5)%></p>

<p>FormatNumber(-1234567, , , -1) : <%= FormatNumber(-1234567,,,-1)%></p>

[그림2-14] FormatNumber.asp의실행결과

2

FormatPercent(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit[,UseParensForNegativeNumbers [,GroupDigits]]]])

분리하거나문자열의길이를판별하거나문자열의일부또는전체의내용을변경하는작업

을수행한다.

문자열처리함수의용법과사용예는[표2-6]과같다.

[표2-6] 문자열처리함수

함수 설명

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

A s c B는 해당문자의첫바이트를반환한다.

A s c W는유니 코드를위한함수다.

예) Asc("A"): 65 반환

Asc("a"): 97 반환

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

예) Chr(13): 줄바꿈부호반환

Chr(65): A 반환

F i l t e r 지정한필터 기준에따라문자열배열의부분집합인 배열을반환한다.

InStr, InStrB, InStrRev 문자열내에 포함된특정문자열의위치를반환한다.

8 7

2장. ASP 기본구조◀

Filter(InputStrings, Value[, Include[, Compare]])

InStr([start, ]string1, string2[, compare])

•InputStrings: 필수. 검색할문자열의1차원배열이다.

•IValue: 필수. 검색할문자열이다.

•Include: 선택. Value를포함하거나 제외한 하위 문자열의 반환 여부를 나타내

는 부울값. True인경우Filter 함수는V a l u e에 해당하는배열의부분집합을하

위 문자열로반환한다. False인경우Filter 함수는V a l u e에 해당하지않는배열

의 부분집합을하위 문자열로반환한다.

•Compare: 선택. 사용할비교형식을나타내는숫자값이다,

0: 이진비교. 1: 텍스트비교

예) MyArray(0) = "일요일"

MyArray(1) = "월요일"

MyArray(2) = "화요일"

MyIndex = Filter(MyArray, "월")

' M y I n d e x ( 0 )에 "월요일"이반환된다.

•start: 선택. 각검색을 시작할위치를 지정하는 수식으로, 생략하면첫째 문자부

터 검색한다. compare를지정하려면start 인수가필요하다.

•string1: 필수. 찾을문자열이다.

•string2: 필수. 찾기대상이되는문자열이다.

Join 배열에포함되어있는여러하위문자열을결합하여만든문자열을반환한다.

Len, LenB 문자열의문자개수 또는변수를저장하는데필요한바이트 수를반환한다.

LCase, UCase 주어진문자열을소문자나대문자로변환한다.

Left, LeftB 주어진문자열을왼쪽에서부터지정된수만큼자른후반환한다. LeftB는바이트단위

로 자른다.

Mid, MidB 문자열에서지정한개수의문자를반환한다.

Right, RightB 주어진문자열을오른쪽에서부터지정된수만큼자른 후 반환한다. Left 함수와반대다.

8 8

▶ 1부. 준비학습: ASP 기본문법

•compare: 선택. 비교형식을나타내는숫자값이다.

0: 이진비교 1: 텍스트비교

예) strA = "동해물과백두산이마르고닳도록하느님이보우하사"

strSearch = "이"

I n s t r(strA, strSearch): 9

I n s t r B(strA, strSearch): 17

I n s t r R e v(strA, strSearch): 22

Join(list[, delimiter])

예) Dim strTest

Dim arrTest(3)

arrTest(0) = "홍"

arrTest(1) = "길"

arrTest(2) = "동"

arrTest(3) = "님"

strTest = Join(arrTest) 'strTest에는홍길동님이저장됨

예) strTest = "홍"

Len(strTest): 1 반환

LenB(strTest): 2 반환

예) strTest = "hello"

UCase(strTest): HELLO 반환

예) Dim MyString, LeftString

MyString = "VBSCript"

LeftString = Left(MyString, 3): "VBS" 반환

Mid(string, start[, length])

예) strA = "동해물과백두산이마르고닳도록하느님이보우하사"

strB = Mid(strA, 6, 4): "백두산이" 반환

Replace 지정한하위문자열을, 지정한횟수만큼다른하위문자열로바꾼뒤문자열을반환한다.

Space 지정된수만큼의공백이 들어있는문자열을반환한다.

Split 문자열을지정된구분자로자른후 배열로반환한다.

StrComp 문자열을비교한결과값을반환한다.

String 지정한길이만큼반복한 문자열을반환한다.

StrReverse 지정한문자열의순서를 거꾸로하여반환한다.

LTrim, RTrim, Trim 지정된문자열의공백을 제거한다.

날짜계산함수

날짜계산함수는기준시간과평가시간사이의차이를계산하거나기준시간에특정시간

8 9

2장. ASP 기본구조◀

Replace(expression, find, replacewith[, start[, count[, compare]]])

예) strA = "동해물과백두산이마르고닳도록하느님이보우하사"

strB = Replace(strA, "백두산", "한라산" )

예) space(10): 공백1 0개 만큼의빈문자열 생성

예) String(10, "+"): "++++++++++" 반환

예) StrReverse("ABCD"): "DCBA" 반환

Split(exepression [, delimiter [, number [, compare]]])

예) strTest = "홍길동, 고길동, 강길동"

arrTest = Split(strTest, ","): 세개의원소를가진배열로저장

StrComp(str1, str2 [, compare])

•-1: str1이s t r 2보다작은 경우

•0: str1이s t r 2와 같은경우

•1: str1이s t r 2보다큰 경우

•Null: str1이나s t r 2가 N u l l인 경우

예) Dim MyStr1, MyStr2, MyComp

MyStr1 = "ABCD"

MyStr2 = "abcd"

MyComp = StrComp(MyStr1, MyStr2, 1): 0 반환

\MyComp = StrComp(MyStr1, MyStr2, 0): -1 반환

MyComp = StrComp(MyStr2, MyStr1): 1 반환

3

을더하거나뺀값을반환하는등의작업을수행한다. 날짜계산함수는출고한지1년이내

의신상품표시, 특정상품의유효기간검사등에서사용할수있는아주유용한함수다.

[표2-7] 날짜/시간관련함수

함수 설명

C D a t a 형식에맞는주어진문자열을Date 형으로변환한다.

예) strDate = "2002년1 2월 9일"

strDate2 = CDate(strDate): Date 형으로형변환

Now, Date, Time 현재시스템의날짜와시간또는날짜 또는시간을출력한다.

예) Response.Write Now: "2002-12-09 오후10:55:39" 출력

Response.Write Date: "2002-12-9" 출력

Response.Write time: "오후10:56:09" 출력

지정된시간값에서함수명에해당하는값을반환한다.

예) strDate = "2002년1 2월 9일"

strDate2 = CDate(strDate): Date 형으로형변환

Response.Write MonthName(strDate2): "월요일" 출력

T i m e r 자정이후경과한시간을초로나타내는Single 값을반환한다.

T i m e S e r i a l 지정한년, 월, 일로Date 형의Variant 값을반환한다.

예) Response.Write TimeSerial(22, 9, 11): "오후10:09:11" 반환

T i m e V a l u e 시간을포함하는Date 형의Variant 값을반환한다.

(1) DateAd d

DateAdd 함수는 지정된날짜에 시간을추가하거나뺀 새로운 날짜를반환한다. 용법은

다음과같다.

•interval: 필수. 추가할시간의종류를확인한다. 예를들어, interval에“d”를 입력하면

며칠을더하겠다는뜻이다. interval에적용할수있는인수는[표 2-8]과같다.

9 0

▶ 1부. 준비학습: ASP 기본문법

Year, Month, Day, Hour,

Minute, Second, Month

Name, WeekDay, WeekD

a y N a m e

DateAdd(interval, number, date)

[표2-8] interval 인수의설정값

인수 설명 인수 설명

y y y y 년 W 요일

q 분기 W w 주(일년기준)

m 월 H 시

y 일(일년기준) N 분

d 일 s 초

•number: 필수. 추가할시간간격으로, 양수는미래, 음수는과거다.

•date: 필수. 기준날짜다.

다음예를통해DateAdd 함수의사용법을알아보자. 다음달1일에서 하루를빼서이 달

의마지막날을구한다.

DateAdd("d", -1, "2004-1-1")

(2) DateDiff

DateDiff 함수는인수로주어진두날짜의간격을반환한다. 용법은다음과같다.

DateDiff 함수는 용법과 인수 interval에 사용되는인수값이DateAdd 함수와 비슷하

다. 다음예를통해DateDiff 함수의사용법을알아보자. 1980년 5월 18일부터현재까지

의날짜간격을구한다.

DateDiff("d", "1980-5-18", Date)

(3) DatePa rt

DatePart 함수는인수로주어진날짜중에서지정된부분을반환한다. 용법은다음과같다.

DatePart 함수는용법과인수의사용이DateDiff와비슷하다. 다음예를통해DatePart

9 1

2장. ASP 기본구조◀

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

DatePart(interval, date [, firstdayofweek [, firstdayofyear]])

함수의사용법을알아보자. 현재날짜에서분기값을출력한다.

DatePart("q", now) '현재날짜가 04-12-9일이면 4/4분기이므로 4가출력된다.

수학계산함수

수학계산함수는여러가지수학계산과 관련된값을쉽게반환해주는기능을가진함수들

의 모음이다. 자주쓰이지는않지만 사인, 코사인, 탄젠트값을계산해주는함수가있는가

하면, 매우빈번하게이용되는반올림함수인Round 함수나임의의값을생성해주는Rnd

함수등이그것이다. [표2-9]는수학계산함수를정리한것이다. 사용빈도가높은Round

함수와Rnd 함수의용법을주의깊게살펴보자.

[표2-9] 수학계산함수

함수 설명

A b s 수의절대값을반환한다.

A t n 수의아크탄젠트값을반환한다.

예) Dim pi

pi = 4 * a t n ( 1 )

C o s 각의코사인값을반환한다.

S i n 각도의사인값을반환한다.

T a n 각도의탄젠트값을반환한다.

E x p 승수로거듭제곱하는자연 로그의밑인e를반환한다.

L o g 수의자연 로그를반환한다.

S q r 숫자의제곱근을반환한다.

R a n d o m i z e 난수발생기를초기화하고새로운시드값을설정한다.

R n d 난수를발생시킨다.

주어진범위의무작위정수를 만들려면아래공식을사용하면된다.

u p p e r b o u n d는 범위의가장큰 수, lowerbound는범위에서가장작은수다.

I n t 숫자의정수부분을 반환한다.

소수점아래의값은 모두버린다.

정수로반환하면서반올림을수행하는함수는C i n t다.

9 2

▶ 1부. 준비학습: ASP 기본문법

4

Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

F i x 숫자의정수 부분을반환한다.

Int 함수와Fix 함수의차이점은n u m b e r가 음수일경우, Int 함수는n u m b e r보다작거나

같은첫번째음의정수를반환하지만, Fix 함수는n u m b e r보다크거나같은첫번째음의

정수를반환한다. 예를들어, Int 함수는- 8 . 4를 - 9로, Fix 함수는- 8 . 4를 - 8로 변환한다.

R o u n d 지정한소수점자리에서반올림한 수를반환한다.

S g n 수의부호를 나타내는정수를반환한다.

진위함수

진위함수는검증대상이해당형식에부합하는지를확인하고, 그결과를불린값으로반환

하는함수다. 자주쓰이는불린함수로는IsTrue와 IsNull, IsNotNull 등이있다.

[표2-10] 진위함수

함수 설명

I s A r r a y 대상개체가배열인지를확인한결과를불린값(true, false)으로나타낸다.

I s D a t e 대상개체가날짜로변환 가능한지를불린값으로나타낸다.

I s E m p t y 대상개체가초기화되어있는지확인한결과를불린값으로나타낸다.

I s N u l l 대상개체가N U L L인지확인한결과를불린값으로나타낸다.

I s N u m e r i c 대상개체가숫자인지확인한결과를불린값으로나타낸다.

I s O b j e c t 대상개체가A c t i v e X나 OLE 객체인지확인하여불린값으로나타낸다.

I s T r u e 진위판별대상이참인지 확인하여불린값으로나타낸다.

T y p e N a m e ASP 변수의하위형명을반환한다.

V a r T y p e ASP 변수의하위형을나타내는숫자를반환한다.

9 3

2장. ASP 기본구조◀

Round(expression[, numdecimalplaces])

예) Dim MyVar, pi

pi = 3.14159

MyVar = Round(pi, 2): 소수점이하두 자리로반올림한다.

5

9 4

A S P는마이크로소프트사의웹서버인I I S에서동작하는서버측스크립트환경으로, 해석기인a s p . d l l에의

해작동된다. ASP는기본적으로*.asp 파일로작성해야만정상적으로작동된다.

A S P는 HTML, 자바스크립트(클라이언트측스크립트), VB 스크립트(서버측스크립트)가웹 페이지하나

에동시에섞여있는하이브리드코드형식을따른다.

A S P에서는변수선언을 하지않아도변수를임의로지정하여사용할수 있으나, 성능의저하를방지하기

위해서반드시변수를선언하고사용해야한다. 변수를선언하지않아발생하는오류를막기위해O P T I O N

EXPLICIT 키워드를ASP 페이지의문두에사용하는것이좋다.

ASP 변수는자료형을지원하지는않지만, 성능의저하를막기위해서변수하나에는한가지형태의데이

터만저장하는편이좋다.

ASP 배열은크기를지정하지않고도정의할수있지만, 배열에 값을저장하기위해서는반드시배열선언

시점에크기를지정하거나Redim 키워드를이용하여배열의크기를재지정해줘야한다.

ASP 배열의크기를재지정하면기존에저장된데이터는모두소실된다. 이를막으려면Preserve 키워드

를사용하면된다.

For...Next 문과Do...Loop 문은비슷한구조의반복문이다. 반복문을실행하는도중일정한조건에따라

반복을정지시키기위해서는Exit 문을사용하면된다.

반복적으로사용되는특정한기능은함수나서브프로시저로따로작성한후계속사용할수있다.

A S P는 페이지단위로실행되기때문에함수나 서브프로시저를작성하였더라도전체웹사이트에적용하

기위해서는함수나프로시저를별도의페이지로작성한후웹사이트내각각의웹페이지에 #include 명

령어를삽입하여야한다.

VB 스크립트의 많은 함수는 A S P에서 그대로 사용할 수 있다. VB 스크립트에 대한 자세한 용법은

h t t p : / / w w w . m i c r o s o f t . c o m / k o r e a / s c r i p t i n g에서확인할수있다.

요약✲

1

2

3

4

5

6

7

8

9

10

9 5

연습문제✲

크기가4인배열 a r r C a r t를 생성하고, 아래의4개의제품을저장한후, 배열에저장된값의소실없이2개

의제품을추가하기위해배열의크기를늘리는ASP 코드를작성하라.

•구입제품: 냉장고, 세탁기, 컴퓨터, TV

•추가할제품: 비디오, 오디오

항목이몇 개나들어있는지알 수 없는배열( a r r C a r t )에 저장된내용을브라우저로일일이 출력하는A S P

코드를작성하라.

For 문이나 Do...Loop 문을 이용하여 7열 6행의 HTML 테이블로 이루어진 이 달의 달력을 생성하는

ASP 코드를작성하라.

1

2

3

9 6

▶ 1부. 준비학습: ASP 기본문법