OpenVMS용 VSI BASIC
VSI BASIC for OpenVMS![]() |
패러다임 | 필수적 |
---|---|
개발자 | 디지털 이그니션 코퍼레이션 |
OS | 오픈VMS |
VSI BASIC for OpenVMS는 DEC(Digital Equipment Corporation)가 작성하고 현재 VSI(VMS Software Incorporated)가 소유하고 있는 베이직 프로그래밍 언어의 최신 이름입니다.1970년대에 PDP-11 미니컴퓨터의 RSTS-11 운영체제용으로 BASIC-PLUS로 개발되었습니다.나중에 OpenVMS로 포팅되었습니다.처음에는 VAX에서, 그 다음에는 Alpha에서, 그리고 가장 최근에는 Integrity로 포팅되었습니다.
이전 제품명으로는 BASIC-PLUS, BASIC-Plus 2(BP2 또는 BASIC-Plus-2), VAX BASIC, DEC BASIC, Compaq BASIC for OpenVMS 등이 있습니다.하드웨어 플랫폼(VAX, Alpha Server 등)을 나타내는 다양한 타이틀도 있습니다.
특장점
VSI BASIC에는 FORTRAN과 같은 확장기능이 다수 있으며 원래의 Dartmouth BASIC 매트릭스 연산자를 지원합니다.
라인 번호는 "ERL" 기능이 없는 한 옵션입니다.이를 통해 보호된 문 주위에 "WHEN ERROR" 오류 핸들러를 쓸 수 있습니다.좀 더 전통적이지만 덜 우아한 "ON ERROR" 문장은 이러한 컨텍스트나 범위가 없습니다.
VSI BASIC의 주목할 만한 기능 중 하나는 OpenVMS의 강력한 RMS(Record Management Services)를 기본적으로 지원하는 것입니다.VAX BASIC 릴리스 이전에는 네이티브 RMS 지원은 DEC의 COBOL 컴파일러에서만 사용 가능했습니다.
역사
VSI BASIC for OpenVMS 제품 내역은 30년 이상 지속되며, 이 기간 동안 이름과 소유권이 많이 변경되었습니다.또한 DEC, Compaq, HP 및 VSI에 의해 개발된 일련의 새로운 플랫폼에도 이식되었습니다.회사 및/또는 플랫폼 이름이 제품 이름에 포함된 경우가 많아 이름이 급증하는 원인이 되고 있습니다.
기본 플러스
VSI BASIC은 RSTS-11 운영체제 및 PDP-11 미니컴퓨터를 위해 DEC에서 작성한 BASIC-PLUS로 시작되었습니다.프로그래밍 언어문은 명령어인터프리터에 직접 입력하거나 텍스트에디터에 입력하여 파일에 저장한 후 파일에서 명령어인터프리터에 로드할 수 있습니다.회선 입력 직후, 소스 코드의 에러가 유저에게 보고되었습니다.
프로그램은 로 저장되었습니다."SAVE" 명령을 사용하여 BAS 소스 파일을 만듭니다.편집 불가능한 바이너리로 컴파일할 수 있습니다.BAC 파일, "COMPILE" 명령을 사용합니다.이 명령어는 진정한 기계어 프로그램을 생성하지 않고 "tokens"라고 불리는 바이트 코드를 생성했습니다.토큰은 실행 시 보다 현대적인 Java와 유사한 방식으로 해석되었습니다.
명령어 인터프리터에 1 ~32767의 정수로 시작하는 프로그램이 입력되었습니다.회선 피드 문자를 사용하여 회선을 여러 회선으로 연속할 수 있습니다.소스 파일의 외부 편집을 용이하게 하기 위해서, BASIC-PLUS 의 최신 버전에서는 & 문자를 행의 계속 문자로 사용할 수도 있습니다.다음과 같이 한 줄에 여러 문장을 배치할 수 있습니다.\
문 구분 기호로 지정합니다.
Virtual Memory(RSTS/E; 가상 메모리)를 갖춘 PDP-11 시스템의 경우 주소 공간은 약 64KB로 제한되었습니다.BASIC-PLUS에서는 이 중 절반 정도가 명령어 인터프리터와 런타임 라이브러리의 조합으로 사용되었습니다.이것에 의해, 유저의 프로그램은 약 32 KB 의 메모리로 제한됩니다.구식 RSTS-11 시스템에는 가상 메모리가 부족했기 때문에 RSTS와 BASIC-PLUS가 점유율을 차지하면 사용자 프로그램은 물리 메모리의 잔량에 맞춰야 했습니다.예를 들어 32K의 물리 메모리를 탑재하여 RSTS-11 V04B-17을 실행하고 있는PDP-11/35에서는 사용자 프로그램은 7KB로 제한되었습니다.CHANE 명령을 사용하면 대형 프로그램을 여러 조각으로 분할할 수 있습니다.프로그램은 세컨더리 프로그램의 특정 회선 번호에 체인 접속할 수 있습니다.코어 공통이라고 불리는 공유 메모리 섹션을 사용하면 프로그램 간에 필요에 따라 데이터를 전달할 수 있습니다. 디스크 파일도 사용할 수 있지만 속도가 느렸습니다.
인터프리터에는 문자열 데이터와 바이트 코드 모두에 사용되는 가비지 수집 메모리 매니저가 포함되어 있습니다.실행 중인 프로그램을 중단하고 변수를 검사 및 수정한 다음 다시 시작할 수 있습니다.WHILE과 WILL을 포함한 다른 고급 언어에 사용되는 제어 구조의 대부분은 BASIC-PLUS에 존재했습니다.이 언어는 또한 한 줄에 조건부 수식자를 사용할 수 있도록 지원했습니다.예를 들어, " 행은 다음과 같습니다.PRINT I UNLESS I < 10
"는 내가 10세 미만일 경우를 제외하고 "I"의 값을 인쇄합니다.
베이직 플러스 2
Basic Plus 2(BP2 또는 BASIC-Plus-2)는 나중에 DEC에 의해 추가 기능과 성능 향상을 위해 개발되었습니다.진정한 컴파일을 사용하여 스레드 코드로 변환하고 출력을 기계어 객체 파일에 씁니다.이것들은 시스템의 다른 오브젝트 파일과 호환성이 있어 라이브러리로 조립할 수 있습니다.그런 다음 링커(TKB 태스크빌더)가 이 링커에서 실행 파일을 생성합니다.TKB는 오버레이도 지원했습니다.이를 통해 필요에 따라 개별 루틴을 메인 메모리 공간으로 스왑할 수 있습니다.
BP2 프로그램은 RSX-11 또는 RSTS/E의 RSX 런타임 시스템에서 실행되었습니다.이 RTS는 사용자의 주소 공간 중 8KB(나중에 2KB)만을 차지하여 사용자의 프로그램용으로 56KB를 남겨두었습니다.이러한 두 가지 요인에 의해 개별 BP2 프로그램이 BASIC-PLUS 프로그램보다 훨씬 더 커질 수 있었고, 많은 경우 체인 접속이 필요하지 않았습니다.BASIC-PLUS(RSTS-11에서만 사용 가능)와는 달리 BP2는 RSX-11 운영 체제에서도 사용할 수 있었습니다.
VAX BASIC 및 DEC BASIC
VAX 미니컴퓨터의 작성으로 DEC는 새로운 VMS 운영체제로 BASIC-PLUS-2를 포팅하여 VAX BASIC이라고 불렀습니다.VAX BASIC은 표준 VMS 호출 표준을 사용했기 때문에 VAX BASIC에서 생성된 객체 코드를 다른 VMS 언어에서 생성된 객체 코드와 연결할 수 있었습니다.BASIC Plus 2의 소스 코드는 보통 VAX BASIC에서 큰 변경 없이 실행됩니다.
DEC가 Alpha 마이크로프로세서를 만들었을 때 VMS는 Alpha로 포팅되어 OpenVMS로 이름이 변경되었습니다.VAX BASIC도 마찬가지로 Alpha로 포팅되어 DEC BASIC으로 이름이 변경되었습니다.이 시점에서 BASIC 인터프리터는 영구적으로 폐기되었습니다.즉, DEC BASIC 프로그램은 OpenVMS 실행 파일로만 실행할 수 있으며 컴파일과 링크에 의해 생성됩니다.
Compaq, HP 및 VSI
1997/98년에 Compaq가 DEC를 구입했을 때, OpenVMS VAX의 경우 Compaq BASIC, OpenVMS Alpha의 경우 Compaq BASIC으로 이름이 변경되었습니다.
마찬가지로 Compaq가 2001/02년에 HP와 합병했을 때 제품은 VAX에서는 HP BASIC for OpenVMS, AlphaServer에서는 HP BASIC for OpenVMS로 이름이 변경되었습니다.HP는 나중에 인텔의 Itanium 프로세서를 기반으로 한 Integrity 서버 플랫폼용 HP BASIC for OpenVMS를 출시했습니다.
2014년 중반 HP는 OpenVMS [1]생태계 전체를 VSI에 매각하고 VSI BASIC for OpenVMS라는 제품명을 변경했습니다.
샘플코드
VSI BASIC은 BASIC의 구조화된 변형으로 회선번호는 옵션이며 언어는 SUB와 FUNTION을 모두 지원합니다.
안녕 세계
인쇄하다 "안녕, 세상아!"
섭씨/화씨 변환
기능. 진짜 섭씨 0도(진짜 섭씨) 섭씨 0도 = (섭씨 * 1.8) + 32 끝. 기능. 외부의 진짜 기능. 섭씨 0도(진짜) 선언하다 진짜 temp_temp 언제 에러 입력 인쇄하다 "온도(섭씨) 입력"; 입력 X temp_temp = 진짜(X) 사용하다 인쇄하다 "오류: 올바른 숫자 값을 입력하십시오." 끝. 언제 인쇄하다 "화씨로 환산하면"; 섭씨 0도(temp_temp) 끝.
레퍼런스
- ^ "VSI BASIC for OpenVMS User Manual" (PDF). 2018.