A-Shell Development Guide
General Information
Legal Notices
MicroSabio License Agreement
OpenSSL Project License
SSLeay License
A-Shell Doc Overview
Using This Document
Available Docs
Organization
File Types
CHM Files
Updates
Locations
Feedback
Introduction
A-Shell as a CGI Engine
UNIX Version
Windows Version
A-Shell CGI Command Line
A-Shell CMD / RUN
Testing / Debugging CGI
Web Servers
Apache on Windows Example
A-Shell/FAX
Command Format
Command Listing
Supported AlphaFAX Commands
Additional Informational Commands
Cover Page Commands
Unsupported AlphaFAX Commands
Document Formatting Codes
Sample Document
Defining the Fax Printer
GUI Development
Definition
Overview
Planning for GUI
Text message tokenization
Using OPTIONS=GUI_SPC_IND
Spacious Screen Layouts
Use of INFLD
Upper and Lower Case
Parameterized Programs or Templates
Catalog Your Fields
Decide on Environments
Using the Mouse
Analyze, Organize Display Logic
Steps to GUI
Configure the Display
Define the Color Palette
Adjust Leading to Relieve Crowding
Remove Status Lines
Adjust the Font
Activate INFLD GUI Mode
INFLD-Related Display Settings
Fixed Pitch Font
Standard Colors In Edit Boxes
Edit Boxes Use Leading Space
Edit Box Height
Activate GUI Version of PCKLST
Application Adjustments
Buttons
Yes/No Fields and Checkboxes
Groupboxes
Anachronisms
INFLD
Subroutines for Each Field
Parameterized Field Attributes
Main Menu
Printing With GDI
Dialogs
Event-driven Procedural Programming
Further Improvements
GUI Tools
Text Attribute Manipulator
Control Dump
BASIC Extensions
PLUS Extensions
AMOS
CMDLIN
DEFINE
DIVIDE’BY’0
DO {WHILE / UNTIL} ...LOOP
EDIT$
FILL$
FOR...NEXT
GETKEY
Hex, Octal, ASCII Values
I (Integer) variable type
ODTIM
OPEN for APPEND
READ’ONLY
REPEAT
SWITCH
A-Shell Extensions
DIMX
Referencing DIMX Variables
DIMX and Structures
INPUT CSV
PAD
REDIMX
RETURN (<expression>)
XGETARG, XGETARGS, XPUTARG
WRITECD
XFUNC
INCLUDE Nesting
Dot Variables
ARGCNT
Dot Functions
EXTENT
TRACE and DEBUG Statements
User-defined Functions
Function Name and Type
Invoking A Function
Parameter Passing (In)
Parameter Passing (Out)
Local Variables
Global/External Variables
AUTO_EXTERN
EXTERN Statements
Return Expression
Error Trapping
RESUME ENDFUNCTION
Exit Label $EXIT
Parameter Type AS
Examples
Procedures
MAP Statement Extensions
ERR(#)
XREAD and XWRITE
Defined Structures
INSTR()
ELSEIF Clauses
Dynamically-Sized S and X Variables
Dynamic Overlays
Compiler Directives
PRAGMAs
FORCE_FSPEC
Conditional Compilation Statements
IF <constant expression>
MESSAGE
ERROR
Subroutine Name Length
Shortcut Operators
d/BASIC Extensions
Environment Variables
ASHCLIENTIP
ASHFTPDEBUG
ASHTMP
ATE
ATECACHE
ATEPERMCACHE
ATEEXE
ATELICMODE
ATELOCALDIR
ATEVER
FORCEATE
HOME
MIAME
PERMCACHE
REMOTEHOST
TERM
XTREERAW
GDI Printing
Writing GDI Printing Directives
Parameters: Symbols vs. Values
Line (Vertical) Spacing
GDI Printing Directives
Totpages (%#)
BIN
DUPLEX
ELLIPSE
ESCAPE
FTP
IMAGE
LINETO
META
METAFILE
MOVETO
PAPERSIZE
PASSTHROUGH
PDFX
POLYGON
RECTANGLE
RESETLPP
SETBKCOLOR
SETBRUSH
SETFONT
SETMAPMODE
SETPEN
SETPENEX
SETTEXTALIGN
SETTEXTCOLOR
SETVMI
TEXTCENTER
TEXTINDENT
TEXTRIGHT
TEXTOUT
TEXTRECTANGLE
XMDATA and XMFIELDS
XOFFSET, YOFFSET
XORIGIN, YORIGIN
XTEXT
ISAM Performance
ISAM Performance Enhancements
ISMBLD.LIT Switches
ISMBLD.LIT Verbose Mode
ISMDMP.LIT Verbose Mode
ISMBLD.SBX
ISMROK.SBR
ISAM-A
Specifications & Features
ISAM-A Comparisons
ISAM-A vs. ISAM
ISAM-A Pros and Cons
Locking
File Structure
File Access Statement Syntax Ambiguity
File Administration Utilities
Converting Files to ISAM-A
Converting Programs to ISAM-A
ISAM-A vs. Other Indexing Schemes
A-Shell ISAM-A vs. AMOS ISAMPLUS
Language Reference
OPEN
CLOSE
GET, GET’LOCKED, GET’READ’ONLY
GET'NEXT Statements
GET'PREV Statements
FIND Statements
UPDATE’RECORD
DELETE’RECORD
CREATE’RECORD
RELEASE Statements
ALLOCATE'INDEXED
INDEXED'STATS
ISAM'PUSH and ISAM'POP
TRANSACTION'LOG Statements
TRANSACTION Statements
General Topics
File Size Limits
Auto-Expansion
ISMUTL VERIFY
ISMCHK
CVTISM
Compressed Indexes
Compressed/variable length data
Transactions and Logging
Recovery
External Data Access Tools
BASIC Error Codes
Performance
Peer-to-Peer Issues
QFLOCK.SYS in Memory
Local Copies
Memory Mapping
Read-Only Mode
Accessing Files in the MEM: Device
Pre-load Frequently Used Programs
Temporary Files
Local Print Files (Windows)
Number of Files per Directory
XCALL SERCH Optimization
Optimizing File Sorting
Use Span'Blocks
Use Larger Record Sizes
Socket Programming
Listening vs. Connection Sockets
Socket Subroutines
Scenarios and Issues
Simple, Blocking, Iterative Server
Non-Blocking, Checking Without Waiting
Packet Fragmentation and Consolidation
Serving Multiple Concurrent Connections
Sample Programs
Interfacing to External Services
Tab() Functions
Set Foreground Color
Set Number of Rows
Set Number of Columns
Tab(-10,x) Functions
Tab(-10,x) Function Listing
Set Minimized Window Title
Set Normal Window Title
Display OK / Cancel Message Box
Set Beveling Flags
Define Colors
Reset Window
Display Standard Message Dialog
Edit GUI Control
Edit Menu Control
Execute Windows Command Line
Shell Execute
Call SBX as a Function
Associate A-Shell and Windows Colors
Show Window
Flash Window
Set FTP Login / Password
Get File Stats
Make Directory
Event Wait
Enable / Disable Status Lines
Display Wallpaper
Save / Restore Screen with ID
ATE Disconnect
Get ATE Environment Variable
Display Standard Open/Save File Dialog
Password for Disconnect
FTP Sync
Auxiliary Port Control
Display printer selection dialog
Enable/Disable Wrap
Change RGB Value
Retrieve ATE Date and Time
Get OS Info
Perform Clipboard Operations
Change Underline Attribute
Set/retrieve OPTIONS for ATE
Select Windows Folder
Retrieve Windows Path
Create A Shortcut
Get / Set / Load / Save Settings
Check ATE network state
Clear/Set/Query ATE Trace Flags
Set Environment Variable
Set/Retrieve Timeout Period
Send Keyboard Characters
Test for Foreground Status
Three-D Print Tab
SBX Subroutines
BASIC or C?
Subroutines vs. BASIC Programs
Development Steps
PROGRAM statement
include (++) xcall.bsi
Retrieve Individual Parameters
Return Individual Parameters
Ending Routines
Return with Function Value
Compile, Rename to SBX
Memory
Nesting of Subroutines
File Handling
Accessing Open Files
File Open Persistence
File Channel Conflicts
Persistant Variable Storage
Calling Variably-Named Routines
External (XFUNC) Functions
Performance Notes
Memory Usage
Loading and Cacheing
Miscellaneous Topics
Event Tracing
Opening the Message Window
Using the Message Window
Properties
EVTWIN.SBR
ASHLOG.LOG File
Debugging Resources
Background Jobs
Job Terminations
Disconnects and Program Terminations
Trapping Timeouts and Closed Windows
Security
Accessing Serial Ports
Windows Serial I/O
UNIX Serial I/O
Controlling Access
Locking Users Out
File Access Privileges
Determining Your Platform
Files and Directories
File Sizes
Opening Native Files
Transcending Filename Size Limit
Creating a Native Directory
Scanning Native Directories
GUI Extensions
Mouse Interaction
Mouse Cursor
Mouse Hot Spots
Mouse Cursor Reporting
AutoMouse Translations
GUI Controls
Proportional Font Text Objects
Alignment Problems with Text
Clipboard
XP Themes
Beveling
Imaging
Adding Custom Menu Items
Keyboard String Menus
Command Line Menus
Registry (or Shell Execute) Menus
Playing a Sound File
Using the Registry
Using File Associations
Displaying a File Open/Save Dialog
PPN Numbering
Rounding of Floating Point Variables
FPROUND
MIAMEX MX_GETROUND
Screen and Display Issues
Pop-Up Utilities
Screen Capture
Setting the Window Title
HOWTO: RTF Printing
Appendix
Residuum
ISAM 7 Statements
ASHINC Include Files
ZTERM Escape Sequences
Serial Passthrough
Extended Example
Row and Column Codes
Virtual Key Symbolic Names
VK_x{r,d}F###
Tab(-1,x) Functions
Basic
Line Draw Characters
Special Characters
Mode-style Monochrome Attributes
AM70-Style Colors
All Others
Flush Screen Output Buffer
Numeric List (all)
Pre-Defined Functions
Numeric Functions
Trigonometric Functions
String Functions
System Functions
File-Related Functions
Input Functions
Unary Operators
Binary Arithmetic and Logical Operators
Logical versus Arithmetic Operators
Limits and Capacities