{{위키데이터 속성 추적}}
{{소프트웨어 정보
| 이름               = 비주얼 폭스프로
| 개발자             = [[마이크로소프트]]
| 최근 버전          = v9.0 SP2<ref>{{웹 인용|title=Visual FoxPro 9.0 Updates|url=http://www.microsoft.com/en-us/download/details.aspx?id=13959|work=Visual FoxPro Developer Center|publisher=Microsoft|access-date=7 June 2013}}</ref>
| 최근 버전 출시일   = {{시작 날짜와 나이|2007|10|16|df=no}}<ref>{{웹 인용|title=Download Microsoft Visual FoxPro 9.0 Service Pack 2.0|url=http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=13959|work=Download Center|publisher=Microsoft|access-date=7 June 2013|date=October 16, 2007}}</ref>
| 운영체제           = [[마이크로소프트 윈도우]]
| 플랫폼             = [[80x86|x86]]
| 종류               = [[데이터베이스]], [[프로그래밍 언어]]
| 라이선스           = [[사유 소프트웨어|사유]]（마이크로소프트 EULA）
| 웹사이트           = {{url|https://msdn.microsoft.com/vfoxpro}}
}}

'''비주얼 폭스프로'''(Visual FoxPro, VFP)는 [[마이크로소프트]]가 개발 판매했던 데이터 중심 [[객체 지향 프로그래밍]] 및 [[절차적 프로그래밍]] 언어이다. 1984년에 [[폭스 소프트웨어]]가 개발한 폭스프로(원래 명칭은 FoxBASE)에서 발전된 제품이다, ([[폭스 소프트웨어]]는 1992년에 [[마이크로소프트]]에 합병되었다.)

== 역사 ==
=== 폭스프로 ===
'''폭스프로'''(FoxPro)는 텍스트 기반 [[절차적 프로그래밍|절차적]] [[프로그래밍 언어]]이고 [[데이타베이스 관리 시스템|DBMS]]이다. 당초 폭스 소프트웨어가 개발 판매하고 나중에 [[마이크로소프트]]에 인수되었다. 지원되는 플랫폼은 [[도스]], [[마이크로소프트 윈도우]], [[맥킨토시]], [[유닉스]] 등이 있었다.

'''폭스프로'''는 일반적으로 [[XBase|"xBase"]] 언어의 일종이며, 그 문법은 [[DBASE|dBase]] 프로그래밍 언어를 기반으로 한다. xBase 언어로 하는 것에는 다른 [[클리퍼 (프로그래밍 언어)|클리퍼]]가 있다. (xBase 언어의 초기 역사에 대해서는 [[dBASE]]를 참고)

'''폭스프로'''는 [[데이터베이스 관리 시스템]]이지만, 테이블 간의 관계를 지원하지 않는다. 즉, [[관계형 데이터베이스]]는 아니고, [[트랜잭션 처리]] 능력도 없다.

최종 버전은 '''폭스프로''' 2.6이다. 그 이후는 비주얼 폭스프로에 인수되었다. 이미 단종되어 [[마이크로소프트]]도 지원하고 있지 않지만, 폭스프로 사용자 커뮤니티는 현재도 활동 중이다. '''폭스프로''' 2.6 for UNIX (FPU26)는 Intel Binary Compatibility Standard (ibcs2) 지원 라이브러리를 사용하여 [[리눅스]]와 [[FreeBSD]]에 설치 가능하다.

'''폭스프로''' 2에서 "Rushmore"라는 최적화 엔진을 탑재하여 데이터 검색 및 업데이트 속도가 빨라진다. Rushmore는 모든 데이터 관계 문장을 찾으 필터 식을 찾아낸다. 필터 표현식을 사용하면 동일한 표현식에 일치하는 인덱스를 찾는다. 또한 '''폭스프로''' 2는 당초 WatCOM C++로 작성되었으며, 여기에는 자기 부담의 메모리 확장 (당시의 최신 기술)이 있었다. '''폭스프로''' 2는 확장 메모리에 액세스하고 DOS에서 관리 가능한 거의 모든 메모리를 사용할 수 있었다. HIMEM.SYS가 로드되지 않는 경우, '''폭스프로''' 2는 자기 부담의 확장 계획을 시작하도록 되어 있었다.

=== 비주얼 폭스프로 ===
비주얼 폭스프로의 첫 번째 버전은 3.0에서 해당 플랫폼은 맥킨도시와 윈도에만 한정되며, 또한 이후 버전에서는 윈도에만 한정되었다. 현재 비주얼 폭스프로는 [[COM]]기반이며 [[마이크로소프트]]는 [[마이크로소프트 닷넷]] 버전을 개발할 예정은 없다고 하고 있다.

비주얼 폭스프로는 [[관계형 데이터베이스]] 엔진과 밀접하게 결합되어 있다. 이 관계 데이터베이스 폭스프로의 xBase 기능을 확장하여 [[SQL]]쿼리, 데이터 작업을 추가 지원하고있다. 많은 [[데이터베이스 관리 시스템]]과는 달리 비주얼 폭스프로는 전체의 [[동적 프로그래밍 언어]]이며, 추가 범용 프로그래밍 환경을 필요로하지 않는다. [[팻 클라이언트]]의 응용 프로그램 개발뿐 아니라 [[미들웨어]]나 [[웹 응용 프로그램]]도 개발 가능하다.

=== 최근 동향 ===
2002년 말, 비주얼 폭스프로를 [[와인 (소프트웨어)|와인]]을 사용하여 [[리눅스]]에서 사용할 수 있는 것이 나타났다. 2003년, 이에 따라 마이크로소프트는 윈도 이외에서 비주얼 폭스프로를 동작시키는 것은 라이선스 계약을 위반하고 있다고 지적했다.<ref>[http://fox.wikis.com/wc.dll?Wiki~VFPandLinux VFP and Linux - Visual FoxPro Wiki]</ref>

2005년 12월, TIOBE의 [http://www.tiobe.com/tiobe_index/index.htm Programming Community Index] {{웨이백|url=http://www.tiobe.com/tiobe_index/index.htm |date=20080705093752 }}에 VFP(정확하게는 FoxPro/xBase)가 처음으로 상위 20위 권에 들었다. 2007년 3월에는 19위, 2007년 8월에는 22위, 2008년 4월 17위를 들었다.

2007년 3월, 마이크로소프트는 비주얼 폭스프로 10은 개발되지 않는 것을 발표했다<ref name="eolannouncement">{{웹 인용 |url=http://msdn2.microsoft.com/en-us/vfoxpro/bb308952.aspx |제목=A Message to the Community |확인날짜=2011-03-10 |보존url=https://web.archive.org/web/20080206101622/http://msdn2.microsoft.com/en-us/vfoxpro/bb308952.aspx |보존날짜=2008-02-06 |url-status=dead }}</ref>. 따라서 [[2004년]] [[12월 17일]]에 출시된 VFP 9가 마지막 상용 버전이다. VFP 9 지원 [[서비스 팩]] 형식으로 이루어지고 있다.(2005년 12월과 2007년 10월 출시)

그 발표와 동시에 개발되어 차기 버전 Sedna (코드명)가 발표되었다. 이것은 VFP 9에 대한 추가 기능이며, [[마이크로소프트 SQL 서버]] 2005 [[닷넷 프레임워크]], [[윈도우 비스타]], [[마이크로소프트 오피스 2007]], Windows Search, Team Foundation Server (TFS) 등과의 연계 기능 을 지원하고있다. 마이크로소프트는 이것을 [[소스 공유]] 라이선스 [[코드플렉스]]에서 선보였다. 그러나 비주얼 폭스프로의 핵심 부분은 여전히 닫힌 소스이다. Sedna 릴리스는 2008년 1월 25일 열렸다.<ref>[http://www.microsoft.com/downloads/details.aspx?FamilyId=C04BCF8C-0944-49F0-AC2B-563518CE1D70&displaylang=en Microsoft SEDNA download]</ref> 2008년 3월 현재 VFP 9 SP2 (Sedna 포함) XBase 구성 요소는 모두 [[코드플렉스]]에서 개발용으로 사용할 수 있다.

2007년 3월 폭스프로 스페인어 커뮤니티 [http://www.masfoxpro.com MasFoxPro]에서 [[풀뿌리 운동]]이 시작하며, 마이크로소프트의 비주얼 폭스프로의 개발을 요구하고 또는 전체 소스를 [[오픈 소스]]로 배포를 요구하는 활동을 전개했다. 2007년 4월 3일, 이 운동은 업계 미디어에서 보도된<ref>[http://blogs.zdnet.com/microsoft/?p=361 Developers petition Microsoft to reconsider FoxPro phase out] {{웨이백|url=http://blogs.zdnet.com/microsoft/?p=361 |date=20080228145747 }} ZDNet.com 2007년 4월 3일</ref>. 이에 대해 마이크로소프트는 2007년 4월 3일에 성명을 발표하며, 새로운 버전은 개발하지 않고 2015년까지 지원을 계속한다고 밝혔다. 또한 오픈 소스화에 대해서는 최선의 선택하고 있지만, 핵심 부품의 오픈 소스화의 구체적인 계획은 발표되고 있지 않다.

== 버전 정보 ==
=== 폭스프로 ===
{| class="wikitable" align="center"
|+'''운영 체제별 버전'''

|-
!버전
!FP 2.0
!FP 2.5
!FP 2.6

|-
| style="background:#FFFF99; font-weight: bold" | MS-DOS
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예

|-
| style="background:#FFFF99; font-weight: bold" | 윈도 3.1 ~ XP
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예

|-
| style="background:#FFFF99; font-weight: bold" | 매킨토시
| style="background:#FFCCCC" align="center" | 아니오
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예

|-
| style="background:#FFFF99; font-weight: bold" | SCO 유닉스
| style="background:#FFCCCC" align="center" | 아니오
| style="background:#FFCCCC" align="center" | 아니오
| style="background:#99FF99" align="center" | 예

|-
| style="background:#FFFF99; font-weight: bold" | 리눅스 & FreeBSD
| style="background:#FFCCCC" align="center" | 아니오
| style="background:#FFCCCC" align="center" | 아니오
| style="background:#99FF99" align="center" | 예<ref>[[SourceForge.net]]에서 Linux ABI 프로젝트에서 IBCS 파일을 사용한다.</ref>

|-
| style="background:#FFFF99; font-weight: bold" | 윈도우 2000
| style="background:#FFCCCC" align="center" | 아니오
| style="background:#FFCCCC" align="center" | 아니오
| style="background:#99FF99" align="center" | 예

|}

=== 비주얼 폭스프로 ===
{| class="wikitable" align="center"
|+'''윈도를 지원하는 버전'''

|-
!버전
!VFP 3.0
!VFP 5.0
!VFP 6.0
!VFP 7.0
!VFP 8.0
!VFP 9.0

|-
| style="background:#FFFF99; font-weight: bold" | 윈도 3.x
| style="background:#99FF99" align="center" | 예
| style="background:#FFCCCC" align="center" | 아니오
| style="background:#FFCCCC" align="center" | 아니오
| style="background:#FFCCCC" align="center" | 아니오
| style="background:#FFCCCC" align="center" | 아니오
| style="background:#FFCCCC" align="center" | 아니오

|-
| style="background:#FFFF99; font-weight: bold" | 윈도 NT 4.0
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#FFCCCC" align="center" | 아니오<ref>-VFP8 응용 프로그램은 지원되지 않지만, Windows NT 4.0에서 작동한다.</ref>
| style="background:#FFCCCC" align="center" | 아니오<ref>- German FoxPro User Group (dFPUG) 가 개발했던 패치가 있다.[http://portal.dfpug.de/dFPUG/Dokumente/Freeware/]。Microsoft에 의하면, VFP 9.0 SP1에서 해결될 것.</ref>

|-
| style="background:#FFFF99; font-weight: bold" | 윈도우 95
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#FFCCFF" align="center" | 실행시에만
| style="background:#FFCCCC" align="center" | 아니오<ref>- 윈도우 95 에서는 두 번째 수준의 메뉴가 작동하지 않는다.</ref>
| style="background:#FFCCCC" align="center" | 아니오

|-
| style="background:#FFFF99; font-weight: bold" | 윈도우 98
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#FFCCFF" align="center" | 실행시에만
| style="background:#FFCCFF" align="center" | 실행시에만

|-
| style="background:#FFFF99; font-weight: bold" | 윈도 Me
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#FFCCFF" align="center" | 실행시에만
| style="background:#FFCCFF" align="center" | 실행시에만

|-
| style="background:#FFFF99; font-weight: bold" | 윈도우 2000
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예

|-
| style="background:#FFFF99; font-weight: bold" | 윈도우 XP
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예

|-
| style="background:#FFFF99; font-weight: bold" | 윈도 서버 2003
| style="background:#EEEEEE" align="center" | ?
| style="background:#EEEEEE" align="center" | ?
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예

|-
| style="background:#FFFF99; font-weight: bold" | 윈도우 비스타
| style="background:#EEEEEE" align="center" | ?
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예
| style="background:#99FF99" align="center" | 예

|}

== 예제 소스 ==
Hello World 의 예제:
<syntaxhighlight lang="visualfoxpro">
MESSAGEBOX("Hello World")
</syntaxhighlight>

=== 객체 ===
<syntaxhighlight lang="visualfoxpro">
loForm = CREATEOBJECT("HiForm")
loForm.Show(1)

DEFINE CLASS HiForm AS Form
  AutoCenter = .T.
  Caption = "Hello, World"

  ADD OBJECT lblHi as Label WITH ;
    Caption = "Hello, World!"
ENDDEFINE
</syntaxhighlight>

<syntaxhighlight lang="visualfoxpro">
loMine = CREATEOBJECT("MyClass")
? loMine.cProp1 && 그것은 작동한다. ('&'가 2 개로 줄 끝까지 주석)
? loMine.cProp2 && 프로그래밍 오류: Property CPROP2 is not found.

? loMine.MyMethod1() && 그것은 작동한다.
? loMine.MyMethod2() && 프로그램 오류: Property MYMETHOD2 is not found.

DEFINE CLASS MyClass AS Custom
  cProp1 = "My Property"    && 퍼블릭 속성
  HIDDEN cProp2     && 프라이빗 속성

  PROCEDURE Init()    && 클래스 생성자
    This.cProp2 = "This is a hidden property."
  ENDPROC

  PROCEDURE MyMethod1()
    * This is a public method, calling a hidden method that returns
    * the value of a hidden property.
    RETURN This.MyMethod2()
  ENDPROC

  HIDDEN PROCEDURE MyMethod2()  && 프라이빗 메서드
    RETURN This.cProp2
  ENDPROC
ENDDEFINE
</syntaxhighlight>

=== 데이터 처리(Data Handling) ===
<syntaxhighlight lang="visualfoxpro">
&& 테이블 생성
CREATE TABLE randData (iData I)

&& xBase 및 SQL DML 명령을 사용하여 임의의 데이터를 저장
FOR i = 1 TO 50
    APPEND BLANK
    REPLACE iData WITH (RAND() * 100)

    INSERT INTO randData (iData) VALUES (RAND() * 100)
ENDFOR

&& 데이터에 구조 인덱스를 배치
INDEX ON iData TAG iData
CLOSE ALL

&& xBase風명령에서 정렬된 데이터를 표시
USE randData
SET ORDER TO iData
GO TOP
LIST NEXT 10 && First 10
SKIP 81
LIST NEXT 10 && Last 10
CLOSE ALL

&& SQL DML 명령에서 정렬된 데이터를 검색
SELECT * ;
  FROM randData ;
  ORDER BY iData DESCENDING
</syntaxhighlight>

=== SQL Pass Through를 사용한 ODBC액세스 ===
<syntaxhighlight lang="visualfoxpro">
&& ODBC데이터 소스에 접속
LOCAL nHnd
nHnd = SQLCONNECT ("ODBCDSN", "user", "pwd")

&& SQL 커맨드를 실행
LOCAL nResult
nResult = SQLEXEC (nHnd, "USE master")
IF nResult < 0
  MESSAGEBOX ("MASTER database does not exist!")
  RETURN
ENDIF

&& 원격 서버에서 데이터를 검색
&& 로컬 데이터 커서 그것을 저장
nResult = SQLEXEC (nHnd, "SELECT * FROM authors", "QAUTHORS")

&& 원격 테이블에 있는 레코드를 갱신
LOCAL cAuthorID, cAuthorName
cAuthorID = "1001"
cAuthorName = "New name"
nResult = SQLEXEC (nHnd, "UPDATE authors SET auth_name = ?cAuthorName WHERE auth_id = ?cAuthorID")

&& 끊기
SQLDISCONNECT(nHnd)
</syntaxhighlight>

== 각주 ==
<references/>

== 외부 링크 ==
=== 마이크로소프트 ===
* [http://msdn.microsoft.com/vfoxpro/ Main Visual FoxPro Microsoft page]
* [https://web.archive.org/web/20060709230740/http://forums.microsoft.com/msdn/showforum.aspx?forumid=60&siteid=1 MSDN FoxPro support board]
* [https://web.archive.org/web/20080424141431/http://msdn2.microsoft.com/en-us/library/ms950411.aspx VFP's online help file]
* [https://web.archive.org/web/20080409222937/http://support.microsoft.com/vfp9 Microsoft VFP 9 support]
* [http://msdn2.microsoft.com/ja-jp/vfoxpro/bb190232(en-us).aspx Visual FoxPro Essential Downloads page]{{깨진 링크|url=http://msdn2.microsoft.com/ja-jp/vfoxpro/bb190232(en-us).aspx }}

=== 기타 ===
* [http://fox.wikis.com/ Visual FoxPro Wiki]
* [http://www.foxprohistory.org/ A site devoted to the history of FoxPro]
** [http://www.foxprohistory.org/foxprotimeline.htm History of FoxPro - Timeline]
* [https://web.archive.org/web/20110121092632/http://www.news2news.com/vfp/ Using Win32 (WinAPI) functions in Visual FoxPro]
* [http://www.universalthread.com/Report.aspx?Session=6633617A53617371576A493D20476E7430355250344D4843734336516C30675231585253714C555579344A5955 User-defined functions Visual FoxPro (written in C)]
* [http://www.codeplex.com/Wiki/View.aspx?ProjectName=VFPx VFPx] VFP 9.0의 오픈 소스 기능을 개발하려고하는 커뮤니티
* [https://web.archive.org/web/20080513112246/http://leafe.com/profox/faq ProFox] VFP 관련 메일링리스트
* [http://www.vfug.org/ Virtual FoxPro User Group]
* [https://web.archive.org/web/20110406074227/http://www.tek-tips.com/threadminder.cfm?pid=182 Microsoft: FoxPro (old versions 1 to 2.6) Forum]
* [https://web.archive.org/web/20080224050139/http://www.intergate.com/~dallen24/ FoxPro FAQs]

{{마이크로소프트 개발 도구}}

{{전거 통제}}

[[분류:4세대 프로그래밍 언어]]
[[분류:객체 지향 프로그래밍 언어]]
[[분류:절차적 프로그래밍 언어]]
[[분류:마이크로소프트 개발 도구]]
[[분류:마이크로소프트 데이터베이스 소프트웨어]]
[[분류:1984년 개발된 프로그래밍 언어]]
[[분류:다중 패러다임 프로그래밍 언어]]
[[분류:데이터 중심 프로그래밍 언어]]
[[분류:중단된 마이크로소프트 소프트웨어]]
[[분류:마이크로소프트의 프로그래밍 언어]]
[[분류:고급 프로그래밍 언어]]