S3(프로그래밍 언어)
S3 (programming language)| 패러다임 | 구조화, 필수 |
|---|---|
| 개발자 | International Computers Limited |
| 영향을 받다 | |
| 알골 68 | |
S3는 구조화된 필수 고급 컴퓨터 프로그래밍 [1]언어입니다.2900 시리즈 메인프레임용으로 영국 기업 ICL(International Computers Limited)이 개발했습니다.ALGOL 68의 영향을 받는 구문을 가진 시스템 프로그래밍 언어이지만 데이터 유형과 연산자는 2900 시리즈가 제공하는 것과 일치합니다.이는 운영체제 VME의 구현 언어였습니다.
주석이 달린 예
퍼블릭 도메인에서 이용할 수 있는 S3 프로그램의 드문 예로는 사우스웨스트 대학 지역 컴퓨터 센터에서 개발된 Kermit 구현이 있으며, Kermit [2]구현의 컬럼비아 대학 아카이브에 보관되어 있습니다.다음 예시는 메인 모듈(kmt_main_module)의 하이라이트입니다.
이 프로그램은 모듈 식별과 저자에 대한 감사의 표시로 인용하는 코멘트로 시작합니다.
모듈 KMT_MAIN_MODULE; @ 버전 1.01 @-----------------------------------------------------------------------------------------------------@@@ @ @ @ -----SW U R C V M E K E R M I T ----- @ @ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------@ @ @ Version 1.00 ( 1986년 2월)@ @ @ 작성자: Richard Andrews 와 David Lord,@ 사우스웨스트 대학 지역 컴퓨터 센터, @ Claverton Down, Bath BA2 7AY, 영국 @ @ @ @ @ @ @ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @ @ @ 버전 1.01 (1986년 10월)@@ 수정자 : SWURCC Dave Allum과 David Lord. @ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
다음으로, 몇개의 「모드 선언」을 실시합니다.모드는 유형을 나타내는 Algol 68 용어입니다.
MODE KMT_BUFFER IS (96)BYTE, MODE KMT_STRING은 REF()바이트, MODE KMT_WORD는 REF()바이트, MODE KMT_MTM_VALUES는 임의(긴 워드 LW_VALUE, 긴 INT LW_VALUE, RW_VALUE, INT RW_VALUE, INT REF_VALUE)입니다._PACKET_STATISTICS_S는 구조(INT INPUT_TOTAL, OUTPUT_TOTAL);
첫 번째 유형은 96바이트 배열입니다.다음 2개는 바이트 배열에 대한 참조(포인트)입니다.KMT_MTM_VALUES는 다양한 유형을 표시할 수 있는 유니언 유형입니다.WORD는 32비트 부호 없는 정수, INT는 32비트 부호 있는 정수, LONG은 64비트가 됩니다.유니언의 마지막 옵션은 REF()REF()BYTE로 표시됩니다.이는 멤버가 바이트 배열에 대한 포인터임을 의미합니다.
여기서 선언되는 마지막 유형은 STRUCT, 특히 두 개의 정수를 포함하는 튜플입니다.
모듈이 의존하는 외부 절차를 선언하는 것으로 프로그램이 계속됩니다.RESPENSE는 오류 정보가 포함된 반환 값을 나타냅니다.
EXT PROC (RESPONSE) KMT_UI, EXT PROC (REF INT, INT, RESPONSE) KMT_PROC (REF INT, RESPONSE) KMT_PP_GET_PACET, PROC (INT, INT, INT, INT, RESPOLL, RESPONSPONSPONSPONSPONSE) KM_SENCE, RESPONSPONSPENSPENSEXP)TA;
또한 다음과 같은 외부 변수도 있습니다.
EXT REF() 바이트 KMT_VERSION; EXT REF() KMT_MTM_VALUES KMT_MTM_AREA; EXT REF() 바이트 MTM_TEXT; EXT REF INT MTM_TEXT_REF()TA;
프로그램의 나머지 부분은 여러 절차 정의로 구성됩니다.프로그램의 시작점을 실제로 정의하는 다음 중 하나가 여기에 재현됩니다.
GLOBALSTATIC(<>STATUS 이렇게 5PSPACE 10001, TEMPLATE>.)제안된 작전 운영 요구 능력 KERMIT_THE_FROG는 엄연한((<>LIT"COMMAND">.)REF()BYTE OPTION, REF()BYTE VME_FILE(<>LIT"">),(<>LIT"">)REF()BYTE REM_FILE,(<>키 연구, 우식 N'RESULT>.)연구 RESULT):BEGIN. ()BYTE JSV_NAME:)"공대지 사격"; @ ASG_ROUTE bool @ CTM_JS_READ(JSV_NAME, NIL, NIL, ASG_ROUTE, RC_IGNORED)의 값을 가져옵니다.RC_INGED NE 0이면 ASG_ROUTE : = false FI의 파라미터가 나중에 검증됩니다.E는 모드 REF() 바이트여야 하며, ZLR일 수 있으며, NIL @ REM_FILE은 모드 REF() 바이트일 수 없으며, ZLR일 수 있으며, NIL @ IFF(VERIFY OPTION AND VALIDR OPTION) 및 (VERIFICY VME_FILE 및 VRME 파일 확인)이어야 합니다.)그 @ 잘못된 매개 변수 참조 @ RESULT:=10002 ARCH_INACCESSIBLE_PARAMETER @ @ ELSF CTM_JS_BEGIN(RESULT)@ 리소스 블록을 만드@, RESULT<>= 0그 @ 자원입니다. block는 LONG LONG WORD KERMIT_RESULT로 작성되었습니다.ANY(3)긴 WORD AS_LW, (6) WORD AS_W) 파라암, 파라암.AS_LW:=(BDESC OPTION,BDESC VME_FILE,BDESC REM_FILE);@ IFKMT_EH_INFORM_PE_CONTINGENCY(RESULT)@ 프로그램 오류 처리기를 집합;RESULT>0그 @ 스킵 ELSF CTM_JS_CALL(국민 소득 @ 오류 처리기를 설정하지 못 했다.L,P설명: KERMIT_SUpport, PARAMSAS_W,KERMIT_RESULT,RESULT),@ create firewall @ RESULT <= 0 그 후 @ 정상적으로 종료되거나 CTM_STOP @ RESULT := IF (S'KERMIT_RESULT)를 통해 @ 경고 무시합니다.ELSE 52000 @ 에러에 의해 공통 결과 코드가 FI 로 반환됩니다.CTM_JS_END(RC_RC_무시됨) @ 엔드 리소스 블록 @ FI END
여기서 주목해야 할 기능은 다음과 같습니다.
- 이 프로시저의 선언은 명령행 구문을 정의하는 주석으로 장식되어 있습니다.이것에 의해, SCL 로부터 프로그램을 호출하거나, 디폴트 파라미터 값의 입력을 요구하는 인터랙티브셸로부터 프로그램을 사용할 수 있습니다.
- CTM 프리픽스 호출은 VME 운영시스템에서 제공되는 API인 "컴파일러 타깃 머신"에 대한 호출입니다.
- "JSV"는 "작업 공간 변수"를 의미하며 VME는 환경 변수를 의미하며 CTM_JS_READ 상의 콜은 변수 값을 읽습니다.
- INSF는 "만약 그렇지 않다면"을 의미하며, ELSF는 "만약 그렇지 않다면"을 의미합니다.
- LONG LONG WORD는 128비트 정수를 선언합니다.이것은 2900 아키텍처에서 지원되는 네이티브 타입입니다.
- 처리의 대부분은 같은 모듈에 있는 다른 절차인 KERMIT_SUPORT에 위임됩니다.이는 운영체제시스템 CTM_JS_CALL을 통해 간접적으로 호출됩니다.이는 UNIX 시스템의 exec() 호출과 유사합니다.이를 통해 치명적인 오류가 발생했을 때 모든 리소스를 깔끔하게 처리하고 정리할 수 있습니다.PDESC 키워드는 '프로시저 디스크립터'를 구축합니다.기본적으로 KERMIT_SUPPORT를 다른 함수에 인수로서 전달할 수 있는 퍼스트 클래스 함수로 취급하기 때문에 CTM_JS_CALL은 제공된 인수를 적절한 오류 처리로 호출하는 상위 함수로 간주됩니다.
레퍼런스
- ^ Hünke, Horst (1981). Software engineering environments (illustrated ed.). North-Holland Pub. Co. p. 83. ISBN 978-0-444-86133-7.
- ^ "Kermit Software Source Code Archive". Columbia University's Kermit Project. 22 August 2011. Retrieved 1 March 2013.