OpenQM
Introduction to the QM Database
What is a Multivalue Database?
Installation
Startup and Shutdown of QM
Deinstallation
Accounts
Entering QM
The Login Process
Command Scripts
The Command Environment
The Command Stack
The Command Editor
Interrupting Commands
Output Pagination
The VOC File
VOC D-type records - Data items
VOC F-type records - File definitions
VOC K-type records - Keywords
VOC M-type records - Menu definitions
VOC PA-type records - Paragraphs
VOC PH-type records - Phrases
VOC PQ-type records - PROCs
VOC Q-type records - Remote file pointers
VOC R-type records - Remote pointers
VOC S-type records - Sentences
VOC V-type records - Verbs
VOC X-type records - Miscellaneous storage
Security subroutines
Inline Prompts
Pattern Matching
Printing
User Management and System Security
The QM File System
Creating and Deleting Files
Directory Files
Dynamic Files
QMNet Network File Access
The Virtual File System
Database Records and Mark Characters
Creating and Modifying Data
Dictionaries
Dictionary A and S-type records
Correlatives
A-Correlatives
F-Correlatives
Dictionary C-type records
Dictionary D-type records
Dictionary I-type records
Dictionary L-type records
Dictionary PH-type records
Dictionary X-type records
Associations
I-type expressions
Conversion Codes
Base 64 Conversion (B64)
Boolean conversion (B)
Concatenation conversion (C)
Date conversion (D)
Group conversion (G)
Integer conversion (IS, IL)
Length conversion (L)
Character conversion (MCx)
Masked decimal conversion (MD, ML, MR)
Time conversion (MT)
Radix conversion (MB, MO, MX)
Radix conversion (MCDX, MCXD)
Field extraction (<f,v,s>)
Pattern matching conversion (P)
Range Check Conversion (R)
Substitution conversion (S)
File translation conversion
Text substring conversion
User defined conversions
Format Specifications
Locks
Alternate Key Indices
Triggers
Data Encryption
Transactions
Select Lists
QM Commands
* (Comment)
$ECHO
ABORT
ACCOUNT.RESTORE
ACCOUNT.SAVE
ADMIN.USER
ALIAS
ANALYSE.FILE
AUTOLOGOUT
BASIC
BELL
BLOCK.PRINT and BLOCK.TERM
BREAK command
BUILD.INDEX
CATALOGUE
CLEAN.ACCOUNT
CLEAR.ABORT
CLEAR.DATA
CLEAR.FILE
CLEAR.INPUT
CLEAR.LOCKS
CLEAR.PROMPTS
CLEAR.SELECT
CLEAR.STACK
CLR
CNAME
COMO
COMPILE.DICT
CONFIG
CONFIGURE.FILE
COPY
COPYP
COPY.LIST
CREATE.ACCOUNT
CREATE.FILE
CREATE.INDEX
CREATE.KEY
CREATE.USER
CT
DATA
DATE
DATE.FORMAT
DEBUG
DELETE
DELETE.ACCOUNT
DELETE.CATALOGUE
DELETE.COMMON
DELETE.FILE
DELETE.INDEX
DELETE.KEY
DELETE.LIST
DELETE.USER
DISPLAY
DUMP
ECHO
ED
EDIT.LIST
ENCRYPT.FILE
FILE.SAVE
FIND.ACCOUNT
FORMAT
FORM.LIST
FSTAT
GENERATE
GET.LIST
GET.STACK
GO
GRANT.KEY
HELP
HSM
HUSH
IF
LIST.COMMON
LIST.DIFF
LIST.FILES
LIST.INDEX
LIST.INTER
LIST.KEYS
LIST.LOCKS
LIST.READU
LIST.UNION
LIST.USERS
LIST.VARS
LISTF
LISTFL
LISTFR
LISTK
LISTM
LISTPA
LISTPH
LISTPQ
LISTQ
LISTR
LISTS
LISTU
LISTV
LOCK
LOGIN.PORT
LOGMSG
LOGOUT
LOGTO
LOOP / REPEAT
MAKE.INDEX
MAP
MED
MERGE.LIST
MESSAGE
MODIFY
NLS
NSELECT
OPTION
PASSWORD
PAUSE
PDEBUG
PDUMP
PHANTOM
PRINTER
PSTAT
PTERM
QSELECT
QUIT
RELEASE
REPORT.SRC
REPORT.STYLE
RESET.MASTER.KEY
RESTORE.ACCOUNTS
REVOKE.KEY
RUN
SAVE.LIST
SAVE.STACK
SCRB
SECURITY
SED
SED - Records, buffers and windows
SED - Standard key bindings
SED - Standard key bindings quick reference
SED - Cursor movement functions
SED - Data insertion
SED - Copying, deleting and restoring data
SED - Working with multivalued data
SED - Functions that operate of a block of data
SED - Changing text
SED - Macros
SED - File handling
SED - Repeating functions
SED - Miscellaneous functions
SED - Commands
SED - Setting up default modes
SED - Source control
SED - Dynamic key bindings
SED - Extension Programming
SED Extensions - Variables, constants and functions
SED Extensions - Standard variables and functions
SED Extensions - Argument Passing
SED Extensions - An example of a complex extension
SED Extensions - Local procedures and functions
SEL.RESTORE
SET
SET.DATE
SET.DEVICE
SET.ENCRYPTION.KEY.NAME
SET.EXIT.STATUS
SET.FILE
SET.QUEUE
SET.TRIGGER
SETPORT
SETPTR
SH
SLEEP
SP.ASSIGN
SP.OPEN, SP.CLOSE
SP.VIEW
SPOOL
STATUS
STOP
T.DUMP
T.LOAD
T.DET, T.EOD, T.FWD, T.RDLBL, T.READ, T.REW, T.STAT, T.WEOF
TERM
TIME
UNLOCK
UPDATE.ACCOUNT
UPDATE.LICENCE
UPDATE.RECORD
UPDATE.RECORD batch mode
UPDATE.RECORD visual mode
WHO
WHERE
Query Processing
The Selection Clause
The Sort Clause
The Display Clause
SELECT and SSELECT
SEARCH
LIST and SORT
LIST.ITEM and SORT.ITEM
LIST.LABEL and SORT.LABEL
REFORMAT
COUNT
SUM
SHOW
Query processor keywords
ABSENT.NULL
ALL.MATCH
AND
AS
ASSOC
ASSOC.WITH
AVERAGE
BETWEEN
BOXED
BREAK.ON
BREAK.SUP
BY
BY.DSND
BY.EXP
BY.EXP.DSND
CALC
COL.HDG
COL.HDG.ID
COL.HDR.SUPP
COL.SPACES
CONV
COUNT.SUP
COL.SUP
CSV
CUMULATIVE
DBL.SPC
DELIMITER
DET.SUP
DISPLAY.LIKE
ENUMERATE
EQ
EVAL
FMT
FOOTING
FORCE
FROM
GE
GRAND.TOTAL
GT
HDR.SUP
HEADING
ID.ONLY
ID.SUP
LABEL
LE
LIKE
LOCKING
LPTR
LT
MARGIN
MAX
MIN
MULTI.VALUE
NE
NEW.PAGE
NO
NO.CASE
NO.GRAND.TOTAL
NO.INDEX
NO.MATCH
NO.NULLS
NO.PAGE
NO.SPLIT
OR
OVERLAY
PAGESEQ
PAN
PERCENTAGE
REQUIRE.INDEX
REQUIRE.SELECT
REPEATING
SAID
SAMPLE
SAMPLED
SAVING { UNIQUE}
SCROLL
SINGLE.VALUE
STYLE
TO (Selection verbs)
TO (REFORMAT)
TO (Delimited reports)
TOTAL
UNLIKE
USING
VERTICALLY
WHEN
WITH
WITHOUT
QMBasic
QMBasic overview
QMBasic - Variable names and values
QMBasic - Scalars, matrices and dynamic arrays
QMBasic - Common blocks
QMBasic - Labels
QMBasic - Expressions and operators
QMBasic - Assignment statements
QMBasic - Type conversion
File Processing
Matrix File I/O
Sequential File I/O
Multivalue Functions
Object Oriented Programming
QMBasic - Compiler Directives
$CATALOGUE compiler directive
$DEBUG compiler directive
$DEFINE compiler directive
$EXECUTE compiler directive
$IFDEF and $IFNDEF compiler directives
$INCLUDE compiler directive
$LIST compiler directive
$MODE compiler directive
$NO.CATALOGUE compiler directive
$NOCASE.STRINGS compiler directive
$QMCALL compiler directive
QMBasic Limits
QMBasic Statements and Functions by Type
QMBasic Statements and Functions by Name
@(x,y) Function
ABORT
ABS()
ACCEPT.SOCKET.CONNECTION()
ACOS()
ALPHA()
ANDS()
ARG ()
ARG.COUNT()
ASCII()
ASIN()
ASSIGNED()
ATAN()
BEGIN TRANSACTION
BINDKEY()
BITAND()
BITNOT()
BITOR()
BITRESET()
BITSET()
BITTEST()
BITXOR()
BREAK
CALL, ENTER
CASE
CATALOGUED()
CATS()
CHAIN
CHANGE()
CHAR()
CLASS
CLEAR
CLEARCOMMON
CLEARDATA
CLEARFILE
CLEARINPUT
CLEARSELECT
CLOSE
CLOSESEQ
CLOSE.SOCKET
COL1()
COL2()
COMMON
COMPARE()
CONFIG()
CONNECT.PORT()
CONTINUE
CONVERT
COS()
COUNT()
CREATE
CREATE.FILE
CREATE.SERVER.SOCKET
CROP()
CSVDQ()
DATA
DATE()
DCOUNT()
DEBUG
DECRYPT()
DEFFUN
DEL
DELETE
DELETELIST
DELETESEQ
DIMENSION
DISINHERIT
DISPLAY
DIR()
DIV()
DOWNCASE()
DPARSE and DPARSE.CSV
DTX()
EBCDIC()
ECHO
ENCRYPT()
END
ENV()
EQS()
EQUATE
ERRMSG
EXECUTE
EXIT
EXP()
EXTRACT()
FIELD()
FIELDSTORE()
FILE
FILEINFO()
FILELOCK
FILEUNLOCK
FIND
FINDSTR
FLUSH
FMT()
FOLD() and FOLDS()
FOOTING
FOR / NEXT
FORMLIST
FUNCTION
GES()
GETLIST
GET.MESSAGES()
GETNLS()
GET.PORT.PARAMS()
GETPU()
GETREM()
GOSUB
GOTO
GTS()
HEADING
HUSH
ICONV()
IDIV()
IF /THEN / ELSE
IFS()
IN
INDEX()
INDICES()
INHERIT
INMAT()
INPUT
INPUT @
INPUTCSV
INPUTFIELD
INS
INT()
ITYPE()
KEYCODE()
KEYEDIT
KEYEXIT
KEYIN()
KEYREADY()
KEYTRAP
LEN()
LES()
LISTINDEX()
LN()
LOCAL
LOCATE
LOCK
LOGMSG
LOOP / REPEAT
LOWER()
LTS()
MARK.MAPPING
MAT
MATBUILD
MATCHFIELD
MATPARSE
MATREAD
MATREADCSV
MATWRITE
MAX()
MAXIMUM()
MIN()
MINIMUM()
MOD()
NAP
NEG()
NES()
NOBUF
NOT()
NULL
NUM()
OBJECT()
OBJINFO()
OCONV()
ON GOSUB
ON GOTO
OPEN
OPENPATH
OPENSEQ
OPEN.SOCKET()
ORS()
OS.ERROR()
OS.EXECUTE
OUTERJOIN()
PAGE
PAUSE
PRECISION
PRINT
PRINTCSV
PRINTER CLOSE
PRINTER DISPLAY
PRINTER FILE
PRINTER NAME
PRINTER
PRINTER RESET
PRINTER SETTING
PRINTER.SETTING()
PRINTERR
PRIVATE
PROCREAD
PROCWRITE
PROGRAM
PROMPT
PUBLIC
PWR()
QUOTE()
RAISE()
RANDOMIZE
RDIV()
READ
READBLK
READCSV
READL
READLIST
READNEXT
READSEQ
READ.SOCKET()
READU
READV
READVL
RECORDLOCKED()
RECORDLOCKL
RELEASE
REM()
REMARK
REMOVE
REPLACE()
RESTORE.SCREEN
RETURN
REUSE()
RND()
SAVE.SCREEN()
SAVELIST
SEEK
SELECT
SELECTE
SELECTINDEX
SELECTINFO()
SELECTLEFT and SELECTRIGHT
SENTENCE()
SEQ()
SERVER.ADDR()
SET.ARG
SET.EXIT.STATUS
SET.PORT.PARAMS()
SET.SOCKET.MODE()
SETLEFT and SETRIGHT
SETNLS
SETPU
SETREM
SHIFT()
SIN()
SLEEP
SOCKET.INFO()
SOUNDEX()
SPACE()
SPLICE()
SQRT()
SQUOTE()
SSELECT
STATUS()
STATUS
STOP
STR()
SUBR()
SUBROUTINE
SUBSTITUTE()
SUBSTRINGS()
SUM()
SUMMATION()
SWAPCASE(0
SYSTEM()
TAN()
TCLREAD
TERMINFO()
TIME()
TIMEDATE()
TIMEOUT
TOTAL()
TRANS(), RTRANS(), XLATE()
TRANSACTION ABORT, TRANSACTION COMMIT, TRANSACTION START
TRIM()
TRIMB()
TRIMF()
TRIMS()
TTYGET()
TTYSET
UNASSIGNED()
UNLOCK
UNTIL
UPCASE()
VSLICE()
VOID
WAKE
WEOFSEQ
WHILE
WRITE
WRITEBLK
WRITECSV
WRITESEQ
WRITE.SOCKET()
WRITEV
XTD()
Character Values for Terminal Input
@-Variables
Standard Subroutines
!ABSPATH()
!ATVAR()
!ERRTEXT()
!GETPU()
!PARSER()
!PATHTKN()
!PCL()
!PICK()
!PICKLIST()
!QMCLIENT
!SCREEN()
!SETPU()
!SETVAR()
!SORT()
!USERNAME()
!USERNO()
!VOCREC()
QMBasic Debugger
Process Dump Files
Error Numbers
Building a Self-Installing Application
Building a Web Server Application
QMClient API
Security Issues of the QMClient API
QMCall
QMChange()
QMClearselect
QMClose
QMConnect()
QMConnected()
QMConnectLocal()
QMDcount()
QMDel()
QMDelete()
QMDeleteu()
QMDisconnect
QMDisconnectAll
QMEndCommand
QMError()
QMExecute()
QMExtract()
QMField()
QMFree()
QMGetSession()
QMIns()
QMLocate()
QMLogto()
QMMarkMapping
QMMatch()
QMMatchfield()
QMOpen()
QMRead()
QMReadl()
QMReadList()
QMReadNext()
QMReadu()
QMRecordlock
QMRelease
QMReplace()
QMRespond()
QMSelect
QMSelectIndex
QMSelectLeft and QMSelectRight
QMSetLeft and QMSetRight
QMSetSession()
QMStatus()
QMWrite
QMWriteu
System Administration
Configuration parameters
The Terminfo Database
The qmtic Utility
Application Level Security
Permissions
Backup and Restore
Monitoring the System
Multi-Language Applications
Error Logging
QM Command Options
The qmfix Utility
The qmidx Utility
System Limits
Glossary of Terms

Copyright Ladybridge Systems, 2007