렉시

Rexx
렉시
Rexx-img-lg.png
패러다임멀티파라다임: 절차, 구조화
설계자마이크 코울리쇼
개발자Mike Cowlishaw, IBM
처음 등장한1979년; 43년 전 (1979년)
안정된 릴리스
ANSI X3.274 / 1996, 26년 전(1996년)
타이핑 분야역학
파일 이름 확장자.cmd, .bat, .exec, .rex, .rex, EXEC
주요 구현
VM/SP R3, TSO/E V2, SAAREXX, ARexx, BREXX, 레지나,[1] 퍼스널 REXX, REXX/imc
사투리
NetRexx, 객체 REXX, 현재 OOREXX, KEXX
영향을 받다
PL/I, ALGOL, EXEC, EXEC 2
영향받은
NetRexx, 객체 REXX

Rexx(Reconstructured Extended Executor)는 해석 또는 컴파일 가능한 프로그래밍 언어입니다.그것은 IBM에서 Mike Cowlishaw[2][3]의해 개발되었다.이것은 학습과 읽기가 쉽도록 설계된 구조화된 고급 프로그래밍 언어입니다.독점 및 오픈 [4]소스 Rexx 인터프리터는 다양한 컴퓨팅 플랫폼용으로 존재하며, 컴파일러IBM 메인프레임 컴퓨터용으로 존재합니다.

Rexx는 스크립트, 매크로 언어 및 응용 프로그램 개발 언어로 사용할 수 있는 완전한 언어입니다.이 명령어는 데이터 및 텍스트 처리 및 보고서 생성에 자주 사용됩니다.Perl과의 이러한 유사성은 Rexx가 Common Gateway Interface(CGI; 공통 게이트웨이 인터페이스) 프로그래밍에서 잘 작동하며 실제로 이 목적으로 사용됩니다.Rexx는 OS/2, MVS, VM, AmigaOS 의 일부 운영체제에서 주요 스크립트 언어이며 SPF/PC, KEDIT, THEZOC 터미널 에뮬레이터 등의 다른 소프트웨어에서도 내부 매크로 언어로 사용됩니다.또한 Rexx 엔진 중 하나가 설치되어 있는 경우 Windows Scripting Host ActiveX 스크립트엔진 언어(VBScript 및 JScript 등)를 사용하는 모든 프로그램에서 스크립팅 및 매크로에 Rexx 언어를 사용할 수 있습니다.

Rexx는 VM/SP Release 3, TSO/E 버전 2, OS/2(1.3 이후, 프로시저 언어/2로 정식 명칭 지정), Amiga와 함께 제공됩니다.OS 버전 2, PC DOS(7.0 또는 2000), ArcaOS [5]및 Windows NT 4.0(Resource Kit: Regina).CMS용 REXX 스크립트는 EXEC 및 EXEC2와 파일 형식 EXEC를 공유하며 스크립트의 첫 번째 행은 사용할 인터프리터를 지정합니다.MVS용[a] REXX 스크립트는 하위 수식자 EXEC에 의해 인식되거나 컨텍스트[b] 및 첫 번째 행에 의해 인식될 수 있습니다.OS/2용 REXX 스크립트는 파일 확장자 .cmd를 다른 스크립트 언어와 공유하며 스크립트의 첫 번째 행은 사용하는 인터프리터를 지정합니다.REXX 인식 애플리케이션의 REXX 매크로는, 애플리케이션에 의해서 결정된 확장을 사용합니다.1980년대 후반, Rexx는 IBM Systems Application Architecture의 일반적인 스크립트 언어가 되었고, 여기서 "SAA Procedure Language REXX"로 이름이 변경되었습니다.

Rexx 스크립트 또는 명령어는 CP/CMS 및 VM/370 ~z/VM 상의 EXEC,[6] EXEC[7] 2 및 REXX 스크립트에 사용되는 CMS 파일 형식에 대한 노드에서는 EXEC라고 불리기도 합니다.

특징들

Rexx에는 다음과 같은 특징과 기능이 있습니다.

  • 간단한 구문
  • 명령어를 여러 환경에 라우팅할 수
  • 특정 호출 환경과 관련된 기능, 절차 및 명령을 지원하는 기능.
  • 호스트 스택과 상호 운용할 수 있는 내장 스택(있는 경우).
  • 24개의 명령어만 포함된 작은 명령어 세트
  • 자유형 구문
  • 변수 이름을 포함하여 대소문자를 구분하지 않는 토큰
  • 문자열 기준
  • 동적 데이터 입력, 선언 없음
  • 로컬 컨텍스트를 제외하고 예약된 키워드는 없습니다.
  • 파일 퍼실리티 포함 안 함
  • 임의 수치 정밀도
  • 소수점 산술, 부동 소수점
  • 풍부한 내장 기능, 특히 문자열과 워드 프로세싱 선택 가능
  • 자동 스토리지 관리
  • 크래시 프로텍션
  • 콘텐츠 주소 지정 가능 데이터 구조
  • 어소시에이션 어레이
  • 시스템 명령 및 설비에 대한 간단한 접근
  • 간단한 오류 처리, 내장 트레이스 및 디버거
  • 인위적인 제한이 거의 없음
  • 심플한 I/O 설비
  • 통상적이지 않은 오퍼레이터
  • 특정 구현을 제외하고 Unix 스타일의 명령줄 매개 변수 일부만 지원
  • 특정 구현 이외에는 기본적인 터미널 제어 기능을 언어의 일부로 제공하지 않습니다.
  • 특정 구현을 제외하고 외부 라이브러리의 함수 및 서브루틴을 포함하는 일반적인 방법을 제공하지 않습니다.

Rexx의 명령어는 23개뿐입니다.대부분 자명합니다(예:call,parse,그리고.select구두점 및 포맷 요건을 최소한으로 억제합니다.이는 기본적으로 하나의 데이터 유형(문자열)만을 포함하는 거의 자유로운 형식의 언어입니다. 이 철학은 모든 데이터가 표시되며(심볼릭) 디버깅과 트레이스가 단순하다는 것을 의미합니다.

Rexx의 구문은 PL/I와 비슷하지만 표기법이 적기 때문에 (프로그램별로) 해석하기는 어렵지만 PL/I 습관이 예기치 않은 결과를 초래할 수 있는 경우를 제외하고는 사용하기 쉽습니다.REXX의 설계 목표 중 하나는 [8]놀라움을 최소화하는 원칙이었습니다.

역사

1990년 이전

Rexx는 1979년 3월 20일부터 1982년 중반 사이에 IBM의 Mike Cowlishaw에 의해 어셈블리 언어로 설계되어 최초로 구현되었습니다.원래는 EXEC 및 EXEC [2]2 언어를 대체하는 스크립트 프로그래밍 언어였습니다.모든 시스템에서 매크로 또는 스크립팅 언어가 되도록 설계되었습니다.따라서 Rexx는 Tcl과 Python의 선구자로 여겨진다.또한 Rexx는 PL/I 프로그래밍 언어를 단순하고 쉽게 학습할 수 있도록 제작되었습니다.다만, PL/I와의 몇 가지 차이점이 있어, 부주의로 인한 트러블이 발생할 수 있습니다.

1981년 [9]텍사스 휴스턴에서 열린 SHARE 56 컨퍼런스에서 처음 공개되었으며, SLAC의 Ted Johnston이 옹호한 고객 반응으로 1982년 IBM 제품으로 출시되었습니다.

수년간 IBM은 거의 모든 운영 체제(VM/CMS, MVS TSO/E, IBM i, VSE/ESA, AIX, PC DOS 및 OS/2)에 Rexx를 포함했으며 Novell NetWare, Windows, JavaLinux용 버전을 제공했습니다.

최초의 비 IBM 버전은 1984/5년[3] 찰스 데이니에 의해 PC DOS용으로 작성되었으며 맨스필드 소프트웨어 그룹([2]1986년 케빈 J. 카니에 의해 설립됨)에 의해 출시되었습니다.최초의 컴파일러 버전은 1987년에 Lundin과 Woodruff에 [10]의해 CMS용으로 작성되었다.다른 버전도 Atari, AmigaOS, Unix(다양한 변종), Solaris, DEC, Windows CE, Pocket PC, DOS, Palm OS, QNX, OS/2, Linux, BeOS, EPOC32/Symbian, AtherOS, OpenVMS,[11]: p.305 Mac용으로 개발되었습니다.

Arexx라고 불리는 Armiga 버전의 Rexx는 Amiga에 포함되어 있습니다.OS 2 이후로는 스크립팅 및 응용 프로그램 제어에 널리 사용되었습니다.많은 Amiga 어플리케이션에는 Rexx에서 어플리케이션을 제어할 수 있는 "ARexx 포트"가 내장되어 있습니다.1개의 Rexx 스크립트로 실행 중인 여러 응용 프로그램을 제어하기 위해 서로 다른 Rexx 포트 간에 전환할 수도 있습니다.

1990년부터 현재까지

1990년, SLAC의 Cathie Dager는 최초의 독립된 Rexx 심포지엄을 조직하여 Rexx 언어 협회의 결성을 이끌었다.심포지엄은 매년 개최되고 있다.

가지 프리웨어 버전의 Rexx를 사용할 수 있습니다.1992년에는 가장 널리 사용되는2개의 오픈소스 포트가 등장했습니다.Ian Collier의 Unix용 REXX/imc와 Anders Christensen의 Regina[1](나중에 Mark Hessling에 의해 채택됨)는 Windows 및 Unix용입니다.BREXX는 WinCE 및 Pocket PC 플랫폼으로 잘 알려져 있으며 VM/370 및 MVS로 "백포트"되어 있습니다.

OS/2에는 Watcom VX-REXX의 비주얼 개발 시스템이 있습니다.또 다른 사투리는 Hockware의 VisPro REXX입니다.

Portable Rexx by Kwatt와 Personal Rexx by Quercus는 DOS용으로 설계된 2개의 Rexx 인터프리터이며 명령 프롬프트를 사용하여 Windows에서도 실행할 수 있습니다.1990년대 중반 이후 두 가지 새로운 렉스 버전이 등장했습니다.

  • NetRexx: Java 소스 코드를 통해 Java 바이트 코드로 컴파일합니다.이것은 전혀 예약된 키워드가 없으며 Java 객체 모델을 사용하기 때문에 일반적으로 '클래식' Rexx와 상위 호환성이 없습니다.
  • 오브젝트 REXX: 일반적으로 상위 호환성이 있는 오브젝트 지향 버전의 Rexx.

1996년 ANSI(American National Standards Institute)는 Rexx의 표준을 발표했다: ANSI X3.274–1996 "정보 기술 – 프로그래밍 언어 REXX"[13]렉스에 관한 24권 이상의 책이 1985년부터 출판되었다.

Rexx는 2004년 3월 20일에 25주년을 맞이하여 2004년 5월에 독일 뵐링겐에서 열린 REXX 언어 협회의 제15회 국제 REXX 심포지엄에서 축하를 받았습니다.

2004년 10월 12일, IBM은 Object REXX 구현의 소스를 Common Public License에 따라 출시할 계획을 발표했습니다.오브젝트 REXX의 최신 릴리스에는 이 버전의 Rexx 언어를 구현하는 ActiveX Windows Scripting Host(WSH) 스크립트엔진이 포함되어 있습니다.

2005년 2월 22일 Open Object Rexx(oRexx)의 첫 번째 공개 릴리스가 발표되었습니다.이 제품에는 기본 WSH 설치 Perl, Tcl, Python 서드파티 스크립트엔진에 의해 Visual Basic 및 JScript가 구현되는 과 동일한 방식으로 Rexx를 사용하여 Windows 운영 체제 및 응용 프로그램을 프로그래밍할 수 있는 WSH 스크립트엔진이 포함되어 있습니다.

2017년 1월 현재 REXX는 상위 50개 언어에 속하지 [14]않는 상위 100개 언어 중 하나로 TIOBE 인덱스에 등재되어 있다.

2019년 제30회 렉스어학회 심포지엄이 렉스어학회 창립 40주년을 맞았다.이 심포지엄은 영국 허슬리에서 열렸으며, 렉스는 그곳에서 처음 설계되고 [15]구현되었다.

툴킷

Rexx/Tk는 Tcl/Tk와 같은 방식으로 Rexx 프로그램에서 사용되는 그래픽 툴킷입니다.

Rexx IDE(RxxEd)는 [11]Windows용으로 개발되어 있습니다.네트워크 통신용 RxSock 및 Regina Rexx의 기타 애드온 및 구현용 Rxsock이 개발되었으며, Windows 명령줄용 Rexx 인터프리터는 다양한 버전의 Windows용 대부분의 리소스 키트에 포함되어 있으며 DOS뿐만 아니라 이들 모든 버전에서 작동합니다.

철자 및 대문자

원래 이 언어는 Rex(Removed Executor)라고 불렸습니다.다른 제품 이름과 충돌을 피하기 위해 추가 "X"가 추가되었습니다.REX는 메인프레임 코드가 대문자였기 때문에 원래 모두 대문자였습니다.그 당시의 스타일은 모두 대문자로 된 이름을 사용하는 것이었는데, 그 당시에는 거의 모든 코드가 모두 대문자로 되어 있었기 때문이기도 했다.이 제품의 경우 REXX가 되었고, Mike Cowlishaw의 책 두 판 모두 올캡을 사용합니다.1984년 [8]시스템 제품에 REXTended eXecutor로의 확장이 사용되었습니다.

구문

루프

Rexx의 루프 제어 구조는DO마지막은 ''로 끝납니다.END여러 가지 종류가 있습니다.NetRexx 는, 다음의 키워드를 사용합니다.LOOP대신DOoRexx가 처리되는 동안,LOOP그리고.DO루핑 시 동등하게 됩니다.

조건부 루프

Rexx는 (이전) 조건을 테스트하면서 기존의 다양한 구조화 프로그래밍 루프를 지원합니다.do while( ) 또는 그 후 ( )do until) 명령 목록이 실행됩니다.

 [조건부]가 끝나기 전에 하다
 까지 하다

반복 루프

대부분의 언어와 마찬가지로 Rexx는 인덱스 변수를 증가시키면서 루프할 수 있으며 제한에 도달하면 정지할 수 있습니다.

 do index = start [ to limit ][ increment ][ count ][ restions ]

증분값을 생략하고 기본값 1로 설정할 수 있습니다.제한도 생략할 수 있기 때문에 루프가 영원히 계속됩니다.

rexx에서는 카운트된 루프가 허용됩니다.루프 시작 시 식이 계산되어 루프 내의 명령이 여러 번 실행됩니다.

 표현[표현]을 끝내다

Rexx는 프로그램이 종료될 때까지 루프할 수도 있습니다.

 영원히[추상] 끝나다

프로그램은 현재 루프를 끊을 수 있습니다.leave명령(일반적인 종료 방법)do forever루프를 하거나, 또는 를 사용해 쇼트 할 수 있습니다.iterate설명.

복합 루프

Rexx는 PL/I와 마찬가지로 조건 요소와 반복 요소를 모두 동일한 [16]루프에서 결합할 수 있습니다.

 do index = start [ to limit ][ increment ][ count ][ while condition ][ resistions ]
 표현[조건][조건]이 끝날 때까지]하다

조건

테스트 조건IF:

 조건부 하면 이다, 그렇지 않으면 이다.

ELSE절은 옵션입니다.

단일 명령의 경우,DO그리고.END생략할 수도 있습니다.

 만약[조건부]라면[지시]그렇지 않으면[지시]

들여쓰기는 선택 사항이지만 가독성을 향상시키는 데 도움이 됩니다.

여러 조건에 대한 테스트

SELECTRexx의 CASE 구조는 PL/I에서 파생된 다른 많은 구성 요소와 같습니다.다른 동적 언어의 CASE 구성 구현과 마찬가지로 Rexx의WHEN절은 완전한 조건을 지정합니다.이러한 조건들은 서로 관련지을 필요가 없습니다.그런 점에서, 그것들은 캐스케이드된 세트의IF-THEN-ELSEIF-THEN-...-ELSEC 또는 Java와 같은 코드보다 더 많은 코드switch진술.

 [condition] [condition]일 때 [instruction]또는 NOP를 선택하고 [condition]일 때 [instructions]또는 [instructions]일 때 NOP를 선택합니다.

NOPinstruction은 "no operation"을 수행하며 프로그래머가 하나 이상의 명령이 필요한 장소에서 아무것도 하지 않으려 할 때 사용됩니다.

OTHERY 절은 옵션입니다.생략하고 WHEN 조건이 충족되지 않으면 SYNATS 조건이 발생합니다.

단순 변수

Rexx의 변수는 유형이 없으며 처음에는 이름으로 평가됩니다(대문자).따라서 변수 유형은 프로그램에서의 사용에 따라 달라질 수 있습니다.

 say hello /* = > HELLO * / = 25 say hello / * > 25 * / hello = " say 5 + 3 " say hello / * > 5 + 3 * / 해석 /* = > 8 * / drop hello / * > HELLO * /

복합 변수

다른 많은 프로그래밍 언어들과 달리, 클래식한 Rexx는 숫자 인덱스로 처리되는 변수 배열에 대한 직접적인 지원은 없습니다.대신 복합 [17]변수를 제공합니다.복합 변수는 줄기와 꼬리로 구성됩니다..(점)은 줄기를 꼬리에 연결하는 데 사용됩니다.사용된 꼬리가 숫자이면 배열과 동일한 효과를 내기 쉽습니다.

 i = 1~10 스템.i = 10 - i end

그 후 다음 값을 가진 변수가 존재합니다.stem.1 = 9, stem.2 = 8, stem.3 = 7...

배열과 달리 스템 변수의 인덱스는 정수 값을 가질 필요가 없습니다.예를 들어, 다음 코드가 유효합니다.

 i = '월요일' 스템.i = 2

Rexx에서는 스템의 기본값을 설정할 수도 있습니다.

 줄기. = '수 없는' 줄기.1 = 'USA' 스템.44 = '영국' 스템.33 = '프랑스'

이러한 할당 후 용어stem.3생산하다'Unknown'.

DROP 문을 사용하여 전체 스템을 지울 수도 있습니다.

 줄기 떨어뜨리다 

이것에 의해, 이전에 설정한 디폴트치가 삭제되는 효과도 있습니다.

관례에 따라 (언어의 일부가 아닌) 복합어stem.0는 종종 스템에 있는 항목의 수를 추적하기 위해 사용됩니다.예를 들어, 리스트에 단어를 추가하는 절차는 다음과 같이 코드화될 수 있습니다.

 add_word: 사전 노출 프로시저. 구문 분석 arg w n = dictionary.0 + 1 dictionary.n = w dictionary.0 = n 반환

복합 변수 끝에 여러 요소를 포함할 수도 있습니다.예를 들어 다음과 같습니다.

 m = '7월' d = 15 y = 2005 day.y.m.d = '금요일'

복수의 숫자 테일 요소를 사용하여 다차원 배열의 효과를 제공할 수 있습니다.

Rexx 복합 변수와 유사한 기능은 다른 많은 언어(AWK연관 배열, Perl의 해시, Java의 해시 테이블 포함)에서 볼 수 있습니다.이러한 언어의 대부분은 이러한 구성의 모든 키(또는 Rexx 용어로 뒷면)에 대해 반복 명령을 제공하지만, 이는 고전적인 Rexx에는 없습니다.대신 필요에 따라 테일 값의 보조 목록을 보관해야 합니다.예를 들어, 단어를 세는 프로그램에서 다음 절차를 사용하여 단어의 각 발생을 기록할 수 있습니다.

 add_word: 프로시저 exposure count.word_list parse arg.count.w = count.w + 1 /* 카운트를 가정합니다. count.w = 1이면 word_list = word_list wreturn으로 설정되어 있습니다.

그 후:

 do i = 1 to words(word_list) w = word(word_list,i) say w count.w end

어느 정도 명확성을 희생하면서 이러한 기술을 하나의 스템으로 결합할 수 있습니다.

 add_word: 사전 노출 프로시저.arg w . dictionary . w = dictionary . w = 1 / *인 경우 arg w . dictionary . w + 1 입니다. = 0 * / 그럼 n = dictionary.0+1 dictionary.n = w dictionary.0 = n end return

이후:

 do i = 1 to dictionary . 0 w = dictionary . w end

Rexx는 여기서 안전망을 제공하지 않습니다.그래서 만약 어떤 단어가 다음 값보다 작은 정수일 경우dictionary.0이 기술은 불가사의하게 실패할 것이다.

IBM의 Object REXX 및 oRexx와 같은 오픈 소스 구현을 포함한 Rexx의 최근 구현에는 스템의 값이나 배열, 테이블 또는 목록과 같은 다른 컬렉션 개체에 대한 반복을 단순화하는 새로운 언어 구조가 포함됩니다.

 스템 넘다. say i '-->' system.i end

키워드 명령

해석

PARSE명령어는 특히 강력하며 유용한 문자열 처리 기능을 결합합니다.구문은 다음과 같습니다.

 원점[상위]해석하다

여기서 origin은 소스를 지정합니다.

  • arg(커맨드 라인의 최상위 테일)
  • linein(표준 입력(키보드 등)
  • pull(Rexx 데이터 큐 또는 표준 입력)
  • source(프로그램 실행 방법에 대한 정보)
  • value(표현)with: 키워드with표현식이 끝나는 곳을 나타내기 위해 필요합니다.
  • var(변수)
  • version(버전/릴리스 번호)

템플릿은 다음과 같습니다.

  • 변수 목록
  • 열 번호 구분 기호
  • 문자 구분 기호

upper는 옵션입니다.지정된 경우 데이터는 구문 분석 전에 대문자로 변환됩니다.

예:

변수 목록을 템플릿으로 사용

 myVar = "John Smith" 구문 분석 myVar firstName lastName say "first name is:" firstName say "Last name is:" lastName

는 다음과 같이 표시됩니다.

이름: 존 성: 스미스

구분 기호를 템플릿으로 사용:

 myVar = "Smith, John" parse var myVar LastName", "FirstName" "FirstName" "FirstName" "Last Name is:" lastName"으로 발음

에는 다음 내용도 표시됩니다.

이름: 존 성: 스미스

열 번호 구분 기호 사용:

 myVar = "123-1234" parse var MyVar 2 AreaCode 5 7 SubNumber say "Area Code is:" AreaCode say "SubNumber is:" SubNumber

는 다음과 같이 표시됩니다.

지역번호 : 202 가입자번호 : 123-1234

템플릿은 변수, 리터럴 구분자 및 열 번호 구분자의 조합을 사용할 수 있습니다.

해석하다

INTERFACT 명령어는 인수를 평가하고 그 값을 Rexx 문으로 취급합니다.인터프리트가 작업을 수행하는 가장 명확한 방법인 경우도 있지만, 다음과 같이 보다 명확한 코드를 사용할 수 있는 경우에 자주 사용됩니다.value().

인터프리트의 다른 용도는 Rexx의 (10진수) 임의 정밀 산술(퍼지 비교 포함), 프로그래밍 템플릿, 스템 배열 및 스파스 [how?]배열과 함께 PARS 문을 사용하는 것입니다.

 /* 정사각형(4) => 16 */ X = '제곱'사용하여 해석하는 해석 'say' X '(4); exit' SQUARE: return arg(1)*2시연합니다.

16 이 표시되고 종료됩니다.Rexx의 변수 내용은 지수 및 전체 프로그램을 포함하는 문자열이기 때문에, Rexx는 문자열을 평가된 식으로서 해석할 수 있습니다.

이 기능을 사용하여 SIN 또는 COS를 적분 계산 절차로 전달하는 등 함수를 함수 파라미터로 전달할 수 있습니다.

Rexx는 ABS, DIGITS, MAX, MIN, SIGN, RANDOM과 같은 기본적인 산술 함수 및 비트 연산을 포함한 전체 16진수 + 이진수 변환 세트를 제공합니다.SIN과 같은 보다 복잡한 기능은 처음부터 구현되거나 서드파티 외부 라이브러리에서 취득되었습니다.일부 외부 라이브러리(일반적으로 기존 언어로 구현된 라이브러리)는 확장된 정밀도를 지원하지 않았습니다.

최신 버전(비클래식) 지원CALL variable구성.내장 기능과 함께VALUE, CALL은 많은 경우에 사용할 수 있습니다.INTERPRET이것은 고전적인 프로그램입니다.

 /* 입력 "displicate" 또는 유사한 입력 */로 끝납니다.  하다 영원히. ; 해석하다 라인인() ; 끝. 

조금 더 정교한 "Rexx Calculator":

 X = 'input BYE to quit' X = 'BYE'까지 수행, 'say' X를 해석하고 X를 당깁니다.

PULL의 줄임말이다parse upper pull.저도 마찬가지예요.ARG의 줄임말이다parse upper arg.

인터프리터 명령의 위력은 다른 용도로도 사용되었습니다.Valour 소프트웨어 패키지는 OOP 환경을 구현하기 위한 Rexx의 해석 능력에 의존했습니다. 다른 용도는 치명적인 오류 후에 완전히 회복할 수 있었던 타임머신이라고 불리는 미공개 웨스팅하우스 제품에서 발견되었다.

숫자

;90SCIENTIFIC*/999999999+1 및 =&gt이라고 말한다. 1.000000000E+9*/ 숫자 숫자 10/*만 사용 가능한 메모리 */에 제한되어;1000000000 */ 0.9999999999=1 및 => 말한다 999999999+1 및 =&gt이라고 말한다. 0(거짓)*/ 숫자는 희미하게 3;1(진정한)*/ 0.99999999==1 및 =&gt이라고 말한다. 0(거짓)*/ 100*123456 말한다 0.99999999=1 및 => 말한다 digits()fuzz()form()및 =>.789년 및 =>, 1.23456789E+10 */ 숫자 폼엔지니어링: 100*123456789 /* => 12.3457890E+9 */ 53 // 7 /* => 4 (나머지 분할)*/
계산 22 e를 계산합니다.
코드
 숫자 숫자 50 n=2 r=1은 영원히 /* Newton의 메서드 */rr=(n/r+r)/2가 r=rr이면 r=r  "rn rt" n ' =' r을 남깁니다.
 숫자 숫자 50 e=2.5 f=0.5 do n=3 f=f/n e=e+f e=e=e인 경우 e=ee end에서 "e =" e로 발음합니다.
산출량 sqrt 2 = 1.414213562373095048801688724209698078569671875377 e = 2.7182818284590452353602874713526624977572470936998

신호.

시그널 명령은 제어 흐름의 비정상적인 변화를 위한 것입니다(다음 절 참조).그러나 다른 언어에서 볼 수 있는 GOTO 문처럼 잘못 사용되어 취급될 수 있습니다(루프 및 기타 구조를 종료하기 때문에 엄밀하게 동등하지는 않습니다).이로 인해 읽기 어려운 코드가 생성될 수 있습니다.

오류 처리 및 예외

Rexx에서는 SIGNAL 명령을 사용하여 오류 및 기타 예외를 대행 수신 및 처리할 수 있습니다.시스템 조건에는 ERROR, FAILURE, HALT, NOVALUE, NOTREADY, LOSTDIGITS 및 SYNTAX의 7가지가 있습니다.필요에 따라서, 소스코드에서 각 조작을 온/오프 할 수 있습니다.

사용자가 종료할 때까지 다음 프로그램이 실행됩니다.

 정지 신호; a = 1do 100000 /* a do 100000 /* a do a delay */ end end stop: "The program was stoped by the user" exit?

A signal on novaluestatement는 정의되지 않은 변수의 사용을 가로채고, 그렇지 않으면 자체(대문자) 이름을 값으로 가져옵니다.의 상태에 관계없이NOVALUE조건, 변수의 상태는 항상 내장된 함수로 확인할 수 있습니다.SYMBOL정의된 변수에 대한 VAR을 반환합니다.

VALUE함수를 사용하여 변수를 트리거하지 않고 변수 값을 가져올 수 있습니다.NOVALUEPOSIX와 마찬가지로 환경변수를 읽고 설정하는 것이 주된 목적입니다. getenv그리고.putenv.

조건들

ERROR
시스템 명령어로부터의 긍정 RC
FAILURE
시스템 명령에 대한 부정적인 RC(예: 명령이 존재하지 않음)
HALT
비정상 종료
NOVALUE
설정되지 않은 변수가 참조되었습니다.
NOTREADY
입력 또는 출력 오류(예: 파일 끝 이외의 읽기 시도)
SYNTAX
잘못된 프로그램 구문 또는 기타 오류 조건
LOSTDIGITS
유효 자릿수가 소실된다(ANSI Rexx, TRL 제2판이 아니다).

조건이 처리되는 경우SIGNAL ON,그SIGL그리고.RC시스템 변수를 분석하여 상황을 파악할 수 있습니다.RC에는 Rexx 오류 코드가 포함되어 있으며 SIGL에는 오류가 발생한 회선 번호가 포함되어 있습니다.

Rexx 버전4부터는 이름을 취득할 수 있습니다.또한CALL ON건설하다.이는 외부 기능이 반드시 존재하지 않는 경우에 편리합니다.

 ChangeCodePage: 절차 /* 구문 이름 ChangeCodePage의 시그널 설정 */ 신호를 보호합니다.트랩이 SysQueryProcessCodePage() ChangeCodePage를 반환합니다.트랩: OS/2에서 1004 /* Windows-1252를 반환한다*/

「 」를 참조해 주세요.

메모들

  1. ^ 정규화되지 않은 데이터 세트 이름을 가진 TSO EXEC 명령에서는 CLIST 옵션과 EXEC 옵션이 모두 하위 수준 한정자 또는 EXEC을 검사합니다.
  2. ^ SYPSROC에서 Import된 스크립트의 첫 번째 행이 REXX를 포함하는 코멘트일 경우 CLIST가 아닌 REXX로 취급됩니다.SYSEC에서 Import된 스크립트는 REXX여야 합니다.

레퍼런스

  1. ^ a b Mark Hessling (October 25, 2012). "Regina Rexx Interpreter". SourceForge project regina-rexx. Retrieved February 10, 2014.
  2. ^ a b c M. F. Cowlishaw. "IBM REXX Brief History". IBM. Retrieved August 15, 2006.
  3. ^ a b Melinda Varian. "REXX Symposium, May 1995".
  4. ^ "Catalog of All Documents (filter=rexx)". IBM library server. 2005. Retrieved February 10, 2014.
  5. ^ "Does ArcaOS include REXX support?". Retrieved September 3, 2020.
  6. ^ IBM Virtual Machine Facility /370: EXEC User's Guide (PDF) (Second ed.). International Business Machines Corporation. April 1975. GC20-1812-1.
  7. ^ EXEC 2 Reference (PDF) (Second ed.). International Business Machines Corporation. April 1982. p. 92. SC24-5219-1.
  8. ^ a b M. F. Cowlishaw (1984). "The design of the REXX language" (PDF). IBM Systems Journal (PDF). IBM Research. 23 (4): 333. doi:10.1147/sj.234.0326. Retrieved January 23, 2014. Could there be a high astonishment factor associated with the new feature? If a feature is accidentally misapplied by the user and causes what appears to him to be an unpredictable result, that feature has a high astonishment factor and is therefore undesirable. If a necessary feature has a high astonishment factor, it may be necessary to redesign the feature.
  9. ^ M. F. Cowlishaw (February 18, 1981). "REX -- A Command Programming Language". SHARE. Retrieved August 15, 2006.
  10. ^ Lundin, Leigh; Woodruff, Mark (April 23, 1987). "T/REXX, a REXX compiler for CMS". U.S. Copyright Office. Washington, DC: Independent Intelligence Incorporated (TXu000295377).
  11. ^ a b Howard Fosdick (2005). Rexx Programmer's Reference. Wiley Publishing. p. 390. ISBN 0-7645-7996-7.
  12. ^ "Rexx Implementations". RexxLA. Archived from the original on September 24, 2006. Retrieved August 15, 2006.
  13. ^ ANSI INCITS 274-1996/AMD1-2000(R2001) 및 ANSI INCITS 274-1996(R2007)은 유료이지만 무료 초안을 다운로드할 수 있습니다.
  14. ^ "The Next 50 Programming Languages". TIOBE index. tiobe.com. 2017. Archived from the original on January 19, 2017. Retrieved January 10, 2017.
  15. ^ "RexxLA - Symposium Schedule".
  16. ^ M. F. Cowlishaw (1990). The Rexx Language - A Practical Approach to Programming (2nd ed.). Prentice Hall. ISBN 0-13-780651-5.
  17. ^ "Six Rules of Thumb for Rexx".

추가 정보

  • 콜어웨이, 메릴ARexx 요리책: 코모도어 아미가 퍼스널 컴퓨터의 ARexx 언어 튜토리얼 가이드.1992년 화이트스톤ISBN 978-0963277305.
  • 콜어웨이, 메릴Rexx Cookbook: IBM 퍼스널 컴퓨터의 OS/2 & Warp의 Rexx 언어 튜토리얼 가이드.화이트스톤, 1995년ISBN 0-9632773-4-0.
  • 카울리소, 마이클Rexx 언어: 프로그래밍에 대한 실용적인 접근법.프렌티스 홀, 1990년ISBN 0-13-780651-5.
  • 카울리소, 마이클NetRexx 언어프렌티스 홀, 1997년ISBN 0-13-806332-X.
  • 데이니, 찰스REXX에서의 프로그래밍맥그로힐, 텍사스, 1990년ISBN 0-07-015305-1.
  • 엔더, 톰.Rexx를 사용한 객체 지향 프로그래밍John Wiley & Sons, 1997년ISBN 0-471-11844-3.
  • 포스딕, 하워드Rexx Programmer's Reference.Wiley/Wrox, 2005.ISBN 0-7645-7996-7.
  • 가르줄로, 가브리엘OS/2, TSO 및 CMS 기능을 갖춘 REXX.MVS Training, 1999년 (제3판 2004년)ISBN 1-892559-03-X.
  • 골드버그, 가브리엘과 스미스, 필립 H.렉스 핸드북 맥그로힐, 1992년ISBN 0-07-023682-8.
  • Goran, Richard K. REXX 참조 요약 핸드북.CFS Nevada, Inc., 1997ISBN 0-9639854-3-4.
  • IBM Redbooks.Sdsf에서 Rexx 지원 구현Vervante, 2007.ISBN 0-7384-8914-X.
  • 키젤, 피터 CRexx: 프로그래머를 위한 고급 기술.1992년, 텍사스 주 맥그로힐ISBN 0-07-034600-3.
  • Marco, 경험이 풍부한 프로그래머를 위한 Lou ISPF/REXX 개발.CBM Books, 1995.ISBN 1-878956-50-7
  • 오하라, 로버트 P. 그리고 곰버그, 데이비드 루스.Rexx를 사용한 최신 프로그래밍프렌티스 홀, 1988년ISBN 0-13-597329-5.
  • 러드, 앤서니 S. 'TSO REXX의 실제 사용'CreateSpace, 2012.ISBN 978-1475097559.
  • 쉰들러, 윌리엄지구 렉스까지.Perfect Nice Software, 2000.ISBN 0-9677590-0-5.

외부 링크