SDS 베이직
SDS BASIC패러다임 | 필수적 |
---|---|
처음 등장한 | 전 ( |
OS | 여러명 |
영향을 받다 | |
다트머스 바스IC | |
영향받은 | |
HP Time-Sharing BASIC, SCELBAL 기타 다수 |
SDS BASIC은 버전에 따라 CP-V BASIC, Batch BASIC 또는 Sigma BASIC이라고도 하며, 1967년에 처음 출시된 Scientific Data Systems(SDS) Sigma 시리즈 메인프레임 컴퓨터용 베이직 프로그래밍 언어 컴파일러입니다.Xerox는 1969년에 SDS를 구입하여 Xerox Data Systems로 브랜드를 변경하였고, 그 후 Xerox BASIC으로 알려지게 되었습니다.
원래 버전에는 문자열 변수의 지원이 포함되어 있지 않습니다.단, 1971년 CP-V 운영체제시스템에서 실행되고 있는 버전에는 문자열 변수가 추가되어 있습니다.문자열 라이브러리에서는 HP Time-Shared BASIC 및 Integer BASIC 및 Atari BASIC과 같은 다수의 마이크로컴퓨터 BASIC에 있는 시스템과 마찬가지로 배열 슬라이싱 구문을 사용하여 문자열을 조작할 수 있습니다.
이 스타일의 문자열 조작은 문자열 함수를 사용한 DEC의 BASIC-PLUS에서 도입된 모델과 다릅니다.Altair BASIC은 BASIC-PLUS에서 패턴화되었으며, 이 스타일은 가정용 컴퓨터 시대에 크로스 플랫폼 버전인 Microsoft BASIC이 거의 보편화된 이후 사실상의 표준이 되었다.따라서 SDS에서 현대 방언으로 변환하는 것이 다소 어렵습니다.
SDS BASIC은 1971년 [1]여름 Star Trek의 오리지널 컴퓨터 게임이 작성된 플랫폼으로 역사적으로 유명하다.
구문
원래 Dartmouth BASIC 모델과 대부분의 메인프레임 기반 BASIC과 마찬가지로 SDS BASIC은 인터프리터가 아닌 컴파일러였으며 편집 및 실행을 위해 별도로 긴밀하게 통합된 도구를 사용했습니다.이 에디터는 BASIC 전용으로 행이 입력되면 올바른 구문이 분석되어 토큰화된 형식으로 저장됩니다.선두에 번호가 있는 행을 입력하면 해당 번호를 기준으로 프로그램 내의 적절한 위치에 배치되며 번호가 없는 행은 즉시 처리되어 잊어버립니다.SDS 에서는, 1 [2]~99999 의 회선 번호를 사용할 수 있습니다.간단한 예는 다음과 같습니다.
10 인쇄하다 "안녕 월드"
많은 버전의 BASIC과 마찬가지로 SDS는 코드 한 줄에 여러 개의 문을 포함할 수 있도록 했습니다.대부분의 방언에서 이는 콜론을 사용하여 표시되지만 SDS는 백슬래시 중 하나를 사용합니다.\
또는 앰퍼샌드,&
SDS의 동등한 행은 다음과 같습니다.[3]
10 인쇄하다 "안녕하세요" \ 인쇄하다 "세계"
SDS는 컴파일러로 사용자의 소스 코드가 별도로 저장되었기 때문에 코드 내의 선두 공간을 보존했습니다.이들은 [4]루프 구조를 보다 명확하게 나타내기 위해 이를 사용할 것을 제안했습니다.
10 허락하다 J=0, K=1 20 위해서 I=K 로. 8 30 인쇄하다 J 40 M=J, J=K, K=K+1 50 다음 분. I
이 예에는 행 10과 행 40에 나타나 있듯이 단일 LET 문으로 여러 값을 설정하는 기능도 포함되어 있습니다.이 기능은 HP BASIC에서도 볼 수 있습니다.BASIC의 대부분의 버전과 마찬가지로 키워드는LET
는 옵션이며 40행에서 제외됩니다.또한 40행은 다수의 초기 BASIC에서 볼 수 있는 대체 할당 형식을 나타냅니다.여기서 여러 개의 할당을 콤마로 [5]구분할 수 있습니다.
일반적인 수학적 연산 포함+
,-
,*
그리고./
,사용.^
또는**
지수를 [2]위한 것입니다.HP와 마찬가지로 논리적인 비교는 임의의 순서로 작성할 수 있기 때문에<=
와 동등했다.=<
,그리고.><
와 같았습니다<>
. 대부분의 방언은 두 경우 모두 이후 구문만 허용합니다.[3]HP BASIC과 달리 SDS에는 해시를 사용하는 기능이 포함되어 있지 않습니다.#
의 대체 형식으로서<>
.
SDS는 ON을 사용하여 계산된 GOTO를 지원하지만 줄의 앞부분이 아닌 끝에 ON을 사용하여 대체 구문을 사용할 수도 있습니다.
에 가다 140,160,180 온 Y
렘의 또 다른 형태는 주연급 스타였다.*
MS에서 파생된 BASIC에서 볼 수 있는 짧은 형식과 용도가 비슷합니다.[6]단일 인용구는'
를 클릭합니다.[7]
문자열 처리
SDS BASIC의 초기 버전(일명 Batch BASIC 또는 BTM BASIC)은 문자열 변수를 지원하지 않았습니다.단, 숫자 변수에 문자열 값을 할당할 수 있습니다. 숫자 변수는 6자를 EBCDIC 숫자 [8]값으로 저장할 수 있습니다.최신 CP-V BASIC에서는 최대 132자를 포함하는 true 문자열 변수가 추가되어 후행 달러 기호로 나타낼 수 있습니다.$
(또는 보통이 아닌 선행 $-A$
그리고.$A
동등합니다.매뉴얼에서는 A00 [9][a]BASIC과의 호환성을 위해 후자 형식이 추가되었음을 알 수 있습니다.
내부적으로 CP-V는 런타임에 크기를 변경할 수 없는 바이트 배열로 구성된 고정 길이 문자열 레이아웃을 사용했습니다.이는 HP 및 Atari와 같이 슬라이싱 표기법을 사용한 다른 BASIC과 유사합니다.이는 히프에 스트링이 동적으로 할당되는 DEC/Microsoft 스타일과 대조됩니다.다른 고정 길이의 BASIC 사투리와 달리 문자열 변수를 사용하기 전에 DIMmed할 필요가 없습니다.대신 모든 문자열은 최대 72자로 기본 설정됩니다.이것은 메모리를 보다 작은 값으로 설정하거나 최대 132자의 긴 문자열을 허용함으로써 메모리를 보다 효율적으로 관리하도록 변경할 수 있는 글로벌 설정입니다.이것은, 다음의 방법으로 실현되었습니다.{{{1}}}
DIM [10]스테이트먼트에 변수를 사용할 수 있도록 하는 전혀 관련성이 없는 태스크에도 SET가 사용되었습니다.
CP-V의 문자열은 문자 배열로 공개되지 않았기 때문에 슬라이싱 구문은 배열 구문을 기반으로 하지 않았습니다.이는 CP-V가 문자열 배열의 구성을 허용한다는 것을 의미합니다. HP나 Atari와 같은 방언은 슬라이싱에 배열 표기법을 사용했기 때문에 부족했습니다.따라서 [9]DIM을 사용하여 문자열 매트릭스를 만들 수 있습니다.
10 DIM A$(5,10)
는, 합계 50개의 72 문자의 문자열을 포함한 행렬을, 5 x 10 행렬로 정의합니다.시스템이 어레이를 지원했기 때문에 슬라이싱 구문은 다른 버전에서 볼 수 있는 시스템보다 다소 복잡했습니다.예를 들어 다음과 같습니다.[9]
A$(1)
는 문자열 배열의 첫 번째 문자열을 선택합니다.단, 다음과 같습니다.
A$(1,5)
는 2D 배열(매트릭스)의 위치 1.5에서 문자열을 선택합니다.슬라이스는 파렌스 안에 [9]대장을 추가하여 처리했습니다.
A$(:4)
4번째 문자의 모든 내용을 다음 날짜에 반환:
A$(:4,5)
는 네 번째 문자로 시작하는5글자를 선택합니다.
A$(1,5:4,5)
는 2D [9]배열의 위치 1.5에 있는 문자열의 네 번째 문자로 시작하는5 문자를 선택합니다.
문자열 상수는 단일 따옴표 또는 이중 따옴표로 구분하여 줄 안에 따옴표를 쉽게 묶을 수 있습니다.유효한 예는 다음과 같습니다.[11]
인쇄하다 '이것은 문자열 리터럴입니다.' 인쇄하다 '이건 또 다른 거야' 인쇄하다 '그리고 이건 '제3의'입니다' 인쇄하다 "그리고 'A FORTH'"
CP-V에는 Dartmouth BASIC의 CHANGE 명령도 포함되어 있습니다.이 명령어는 문자열을 일련의 EBCDIC 수치로 변환하여 숫자 [12]배열에 배치합니다.
10 DIM B(6) 20 바꾸다 ABCDEF 로. B
B에는 각 [12]문자의 EBCDIC 값에 대응하는 일련의 숫자가 포함됩니다.
입력/출력
SDS에는 PRINT 및 INPUT 문장에서 지정할 수 있는 "스트림" 숫자를 기반으로 한 강력한 입출력 시스템이 포함되어 있습니다.예를 들어, 다음과 같은 방법으로 파일에서 데이터를 읽을 수 있습니다.
10 열다. 'FILE1'에서 :1, 입력 20 입력 :1,A
첫 번째 줄은 "FILE1"이라는 이름의 디스크 파일을 열고 스트림 1에 할당하고 입력에 사용할 것임을 나타냅니다.두 번째 행은 스트림1에서 다음 데이터(이 경우 첫 번째 값)를 읽고 결과 데이터를 변수 A에 할당합니다.또한 이 시스템에는 데이터에 번호를 매긴 후 무작위로 액세스할 수 있는 고유한 "키" 시스템도 포함되어 있었습니다.이것은 세미콜론 뒤에 키 번호를 추가함으로써 실현되었습니다.
입력 :1;9999,A
는 레코드 9999의 읽기를 시도합니다.유효한 키의 범위는 .001 ~9999.999 입니다.파일 내에 키가 할당되지 않은 경우 행에는 1.000, 2.000 등의 번호가 할당됩니다.파일에서 가장 높은 값을 가진 키는 [13]다음을 사용하여 읽을 수 있습니다.
열쇠(1)
여기서 1은 스트림 [13]번호입니다.구조화되지 않은 바이너리 데이터는 GET 및 PUT을 사용하여 한 번에 바이트 단위로 읽고 쓸 수 있습니다.[14]
MAT 명령어
Dartmouth BASIC의 최신 버전에는 다음과 같은 제품군이 포함되어 있습니다.MAT
하나의 스테이트먼트로 전체 어레이에 대한 작업을 가능하게 하는 명령어입니다.이러한 기능은 SDS BASIC에서도 사용할 수 있습니다.가장 간단한 형태로는MAT
의 대체 형식처럼 사용됩니다.LET
배열 내의 모든 요소에 식을 적용합니다.예:
100 DIM A(20),B(20) ... 200 매트. A=A+B
다음과 같은 방법으로 B의 모든 값을 A의 모든 엔트리에 추가합니다.
100 DIM A(20),B(20) ... 200 위해서 I=1 로. 20 210 A(I)=A(I)+B(I) 220 다음 분. I
이러한 명령어는 코드를 더 짧고 명확하게 만들 뿐만 아니라 FOR/NEXT를 [15]쉽게 능가하는 고도로 최적화된다는 이점도 있습니다.추가 함수 및 문장이 수정됨PRINT
그리고.INPUT
, 어레이 반전 및 빌드 ID 매트릭스 등을 하나의 스테이트먼트로 정리합니다.{[16]
메모들
- ^ A00은 Batch BASIC의 다른 이름으로 보입니다.여기서 선행 $는 값을 EBCDIC로 변환하기 위한 매크로입니다.
레퍼런스
인용문
- ^ Markowitz, Maury; Mayfield, Mike (2000). "Star Trek". Games of Fame. Archived from the original on 2018-11-06. Retrieved 2018-11-27.
- ^ a b 제록스 1974, 페이지 2
- ^ a b 제록스 1974, 19페이지
- ^ 제록스 1974, 페이지 3
- ^ 제록스 1974, 9페이지
- ^ 제록스 1974, 17페이지
- ^ "REM Statement (Visual Basic)". Microsoft. 20 July 2015.
- ^ 제록스 1974, 23페이지
- ^ a b c d e 제록스 1974, 페이지 21
- ^ 제록스 1974, 페이지 40
- ^ 제록스 1974, 8페이지
- ^ a b 제록스 1974, 페이지 25
- ^ a b 제록스 1974, 페이지 26
- ^ 제록스 1974, 29페이지
- ^ 참조 1976, 페이지 11-50. 오류: :
- ^ 제록스 1974, 페이지 34
참고 문헌
- Xerox BASIC: Language and Operations Reference Manual (PDF). Xerox. August 1974.