Regina Rexx Manual

  1. Homebrew’s package index.
  2. Also available as OS/2 Rexx, Regina Rexx and VBScript scripts. BootIni.bat: 1.00: Change boot menu timeout value in BOOT.INI to 5 seconds: NT: 2001-03-06: Incorrect changes to BOOT.INI may result in a system that won't boot anymore. Use entirely at your own risk! BootIni2.bat: 2.01: Add /NoSerialMice switch to Operating Systems keys in BOOT.

Patrick McPhee's Mathematical Bumper Pack for Regina Rexx. Lionel Dyck's Rexx e-mail package for OS/390 and z/OS. Mike Cowlishaw's decNumber extended Rexx arithmetic package. InnerAccess Technologies' Rexx Server Pages Connector for z/OS and OS/390. Mark Zelden's MVS Utilities site (REXX & TSO CLISTs, ISPF Edit Macros, Sample JOBs.

  • Rexx Tutorial
  • Rexx Useful Resources
  • Selected Reading

Regina is another Rexx interpreter available to compile and run Rexx programs. The official site for Regina is − www.regina-rexx.sourceforge.net/

Some of the advantages of using Regina are as follows −

  • Regina can run on any platform whether it be Windows, Linux or the Mac OS.

  • Regina works as per all available standards.

  • Regina has a big community following and hence there are a lot of forums and learning material available for Regina.

  • Regina has a lot of tools available for writing and testing Rexx programs.

  • In Regina, you can run commands which are not possible in the default Rexx Interpreter. For example, if you include certain configuration settings, you can actually run basic system level commands, which is not possible in Rexx.

When you install Rexx via the installation documented in Chapter 2 – Rexx Environment, the Regina interpreter gets installed along with it.

Regina

Now let’s see some of the common methods available when using Regina. These functions are the extended functions which are not available via normal use.

To make use of the extended functions, you need to include the following line of code. This enables the use of Regina extended functions.

Secondly while running all Rexx programs, use the following command.

Where,

  • regina − This is the interpreter used for Rexx programs.

  • main.rexx − Your Rexx program.

We will now discuss in detail the various functions of Regina Rexx Interpreter.

Sr.No.Functions of Regina Rexx Interpreter
1b2c

This method is used to convert a binary value to a string value.

2bitcomp

The method is used to compare 2 bit strings, bit by bit.

3bittst

This method is used to indicate the state of the specified bit in the bit string.

4find

This method is used to search for the first occurrence of a string in another string.

5getenv

This method returns the value of an environment variable on the system.

6getpid

This method is used to get the value of the current running process id.

7hash

This method returns the hash attribute of a string as a decimal number. It also updates the internal hash value of the string.

8justify

This method is used to add justify or trim the value of a string based on the length value.

9putenv

This method is used to set the value of an environment variable.

10directory

This method gets the value of the current directory on the system.

11chdir

This method changes the value of the current working directory on the system.

12randu

This method returns a pseudo-random number between 0 and 1.


An embedded scripting language

pawn is a simple, typeless, 32-bit extension language with a C-like syntax.A pawn 'source' program is compiled to a binary file for optimal executionspeed. The pawn compiler outputs P-code (or bytecode) that subsequently runson an abstract machine. Execution speed, stability, simplicity and a smallfootprint were essential design criteria for both the language and theabstract machine.

Regina Rexx Manual

At a glance


Current version4.0.5749 (2020-04-03)
View the history of recent changes.
DownloadsMicrosoft Windows:a self-extracting setup.
Source code:stable source archive orthe latest files on the GitHub project.
LicenseApache License 2.0,plus an exception clause to explicitlypermit static linking of the library to commercial applications.
InstallationMicrosoft Windows: download the self-extractingsetup and run it.
Linux & other: download a source archive asa ZIP file and read theREADME.TXT file after unpacking. (See also the'Getting started' section below).
Supportpawn is hosted on GitHub.The project has an issue tracker.
For support on a commercial basis, pleasecontact us by e-mail.We can build speed-optimized versions of the abstract machine (alsoknown as 'virtual machine' or VM) or JITs, add special languageconstructs, port the product to different microcontrollers,and write native function libraries for particular tasks.
DocumentationAll documentation is in 'Adobe Acrobat'format (PDF). The main two books are the 'Language Guide' and the'Implementer's Guide'. Several extension modules are documentedseparately.
Screen shotspawn is a compiler and an abstract machine. The compiler isa console utility (i.e. you run it in a 'DOS box' or a terminal),and the abstract machine is basically a library. As such, thereisn't really something like a representative a screen shot.I have tried a few anyway... (Click on the pictures for a detailed view.)

Pawn IDE (for Windows and Linux)

Documentation extracted generated by the compiler

Pawn Blocks Designer (visual programming)

Pawn console debugger
ProjectsA list of projects and products that use pawn as a scriptinglanguage is on the pageWhere is pawn used?.

For any information not in this list, please browse through this page. Hopefullyyou will find what you are looking for.

Rexx

Introduction

Regina Rexx Documentation

An introduction to the pawn language and abstract machine from aprogrammer's perspective was published in the October 1999 issue ofDr. Dobb's Journal —but at the time, thelanguage was called Small. More verbose than the article, and more appropriatefor non-expert programmers, is the manual. The manual contains a brief (tutorial)overview of the language, a language reference, programming notes on the abstractmachine, casual notes about the why and how of many language features, andreference material.

  • pawn is a simple, C-like, language.
  • pawn is a robust languagewith a compiler that performs a maximum of static checks, and an abstractmachine with (static) P-code verification and dynamic checks.
  • For porting purposes, pawn is written in ANSI C as much as possible; Big Endianversus Little Endian is handled.
  • To suit internationalization and localization, pawn supports Unicode/UCS-4and UTF-8, as well as codepages. The compiler can convert source code enteredin a particular codepage to Unicode; it also supports source code files inUTF-8 format.
  • pawn is quick (especially with Marc Peter's assembler implementation and/or his 'just-in-time' compiler)
  • pawn is small. It has been fitted on an Atmel ATmega128 microcontroller,Philips LPC2138 and LPC2106 microcontrollers (ARM7TDMI core with 32 KiB RAM),as well as on a Texas Instrument's MSP430F1611 (MSP430 core with 10 KiB RAMand 48 KiB Flash ROM). Using code overlays that are loaded on demand,pawn is able to run large scripts in little memory.
  • Documenting the source code can be done with 'documentation comments'; thepawn compiler extracts those comments, combines them with information itdeduces from the source code and writes an XML file that is immediatelyviewable (and printable) with a web browser.
  • pawn supports states and automatons in the language,including state-local variables.
  • pawn is free and it is published under theApache License 2.0,plus an exception clause to explicitly permitstatic linking of the library to commercial applications.
  • More features... see the separate 'feature page'

Why pawn now that there is Java, Lua, REXX, and countless others? Well,when I needed a language toolkit whose executable code can be embedded inresource files or animation file formats, that had a good interface to nativefunctions, that added little overhead to the main application and could run onplatforms and microcontrollers with (very) little RAM, and that was pretty fast,I could not really find an existing toolkit that fitted my needs. See alsoa list of language features.

Unlike many languages, pawn is not intended to write complete full-scaleapplications in. pawn's purpose is to script the functionalityprovided by an application or by a device. It is in purpose similar toMicrosoft's 'Visual Basic for Applications', only quicker and smaller (andwithout the installation hassle).

pawn has been publicly available since 1998, and it has been steadilyimproving: more error checking, several bugs slashed, new features, and anincrease in performance. There are still regular updates andpatches: to fix bugs, to add features, or simply to enhance the ease-of-use.

Regina rexx manuals

A couple of other points are worth mentioning:

  • pawn is provided as is.I offer support and I value feedback, but there is no warranty or implied liability.
  • The pawn toolkit consists of a compiler and an abstract machine (or'virtual machine'). In the default setup, the abstract machine is embedded inan application (for easy interfacing with the application's objects and forbest performance), while the compiler is a separate executable that theapplication launches as an external process.
    When embedding the compiler into an application,please note that the main function of the compiler, pc_compile(), isnot re-entrant. In other words, compile only one script at a time.

Getting started


The first question is: what do you need? If you are using Microsoft Windows,download the pawn toolkit as a self-extracting setup file;this gives everything that you need to get started:

  • binaries for Win32
  • the editor and development environment (Quincy IDE)
  • full source of all tools/libraries
  • all documentation (Adobe Acrobat format)

Linux users must build the toolkit from the source code. You can get the sourcecode from the GitHub project.The 'README.TXT' file (in the GitHub project) contains a section for buildingbinaries from the source code, by using theCMake makefile generator.You should also download the two documentation files'Language Guide' and 'Implementer's guide'. The 'Implementers Guide' will informyou about the options and configurations that you have in building the binaries,and the 'Language guide' will teach you the pawn language. If you are new toprogramming, the thin guide 'A Gentle Introduction to Programming' aims at helpingyou with the first steps.

Assuming that you have obtained (somehow) an executable version of the pawncompiler and the pawn run-time, you should put it in a directory. However,the pawn compiler also needs to locate 'include files'. On many operatingsystems, the pawn compiler is able to automatically read these header filesfrom the directory 'include' that is below the directory that the compiler isin itself. Thus, if the pawn compiler is in directory 'C:WhatEverPawn', Isuggest that you also create directory 'C:WhatEverPawninclude' and copy the'.inc' files there. If your operating system is not compatible with Win32 orLinux, the pawn compiler may not know how to locate the 'include' directoryand you have to specify it yourself with the '-i' command line option (whenrunning the compiler).

That behind your back, locate one of the example scripts (e.g. 'hello.p') andcompile it with:

This should produce 'hello.amx', which you can then run with:

Many applications that use pawn, run the pawn compiler as a child process;that is, the pawn compiler is often a separate, self-contained program. Theabstract machine, however, is almost never a separate process: typically youwant the abstract machine to be integrated in the application so that scriptscan call into the application. In other words, you might be using 'pawncc' as is,but you won't be using 'pawnrun' as is. This is why pawnrun is kept short and dumb,'pawnrun' is a program that is mostly developed in the pawn manual to show youwhat you should do at a minimum to embed pawn into a program.

Support


Please visit the GitHub projectfor support of pawn. Note, however, that pawn is usually embedded inanother product —an application or a device. In that case, you may need toask support on the site or forum of that product. (See also the pageWhere is pawn used?).

pawn is a free product that is maintained primarily in spare time. We make nomoney from the product, neither from the software, nor from the manual, nor fromsupport. I therefore need to ask you for patience when we are slow in respondingto your questions or. Obviously, if you really need support or a customversion of pawn, you can always hire us.

Downloads


If you want to find out more, you will need to download at least one orboth manuals. The book 'The Language' contains the syntax of the pawn language,and 'Implementer's Guide' covers the interface functions of the abstractmachine and various reference materials. If you are new to programming, firstread the 'Introduction to Programming' booklet (just 12 pages).You need to be able to view or print Adobe Acrobat ('PDF') files for example viaAcrobat Reader.
Full install, Microsoft Windows
  • The pawn toolkit for Microsoft Windows in a self-extracting setup,version 4.0.5749 (7.7 MiB;2020-04-03).
    This setup puts the tools in the appropriate directories.
    It includes precompiled binaries, the Quincy IDE, all documentation, allsource code, codepage files and the AMX DLLs.
Source code archives
  • You can get the latest (non-stable) source code from theGitHub project for pawn.You can either 'check-out' the source code with git or subversion, or downloadit as ZIP file.
  • Download the archived release 4.0.5749 of thepawn toolkit (669 KiB; 2020-04-03)
  • Download the archived release 3.3.4288 of thepawn toolkit (617 KiB; 2020-04-03)
  • Download the archived release 2.7.3 of theSmall toolkit (418 KiB; 2020-04-03)
    This archived release is the last version of the software when it was still calledSmall. You may want to use it if Small is integrated in your product andyou need full compatibility.
  • Download the archived release 1.8.4 of theSmall toolkit (189 KiB; 2020-04-03)
    This archived release is uploaded on request. Versions 2.0 and later use a differentfile format for the executable P-code, which is incompatible with the previousrelease.
Documentation
The documentation for pawn is in PDF format. You can download individual documentsfrom the GitHub project.Alternatively, all documents are also contained in self-extractingsetup for Microsoft Windows.
Regression test
  • A regression test suite for the pawn compilerand the abstract machine is available(31 KiB; 2020-04-03).
    The test suite requires a 'REXX' interpreter to run. The test script works onMicrosoft Windows systems, and it probably works on other systems with onlyminor modifications (I am using the Regina REXX interpreter,which runs on many platforms).You may want to run your compiler/abstract machine through this if you havemodified anything.

Regina Rexx Manual 2019

Exception clause to the Apache License version 2.0


As a special exception to the Apache License 2.0(and referring to the definitions in Section 1 of that license), you may link,statically or dynamically, the 'Work' to other modules to produce an executablefile containing portions of the 'Work', and distribute that executable file in'Object' form under the terms of your choice, without any of the additionalrequirements listed in Section 4 of the Apache License 2.0. This exception appliesonly to redistributions in 'Object' form (not 'Source' form) and only if nomodifications have been made to the 'Work'.

Help requested


Regina Rexx Manual Transmission

  1. As I said, my first priority is getting the bugs out. If you come acrossbad code generation problems or other errors, send me the shortest programthat illustrates the bug. I will be grateful for it.
  2. pawn is reported to run under Microsoft DOS, all versions of MicrosoftWindows (including Windows CE), Linux, MacOS, FreeBSD, XBox, PlayStation,FreeRTOS (on an ARM7-architecture), and µC/OS-II.If you have been able to port pawn to other environments, please send me thechanges. Others will be grateful for it.
  3. The documentation is getting better, I think, but I am not a good critic ofmy own work. Comments on my writing (especially errors and obscure paragraphs)are appreciated.

To contact me, send e-mail tothiadmer @ compuphase.com.Note, however, that I am regularly abroad and sometimes need 8 days to answer ane-mail.