Contact Us
- Sales: sales@todaysystems.com
- Support: support@todaysystems.com
TB0006 - Tips when Changing ISAM Applications to run on Oracle
Number: TB0006
Availability: As of BuildPro 8.00
Introduction
Some changes are required when converting an existing ISAM application to run with Oracle. This document attempts to identify some of these requirements.
Problems
Access to Oracle via Background Processes. For every process which is run in background, insert a database logon routine as the first statement You will need to scan the logic (functions/processes) list for the BACKGRND statement. This list may contain actual process names and/or soft names. For soft names, further scanning will be needed to establish the actual process names.
FILE *NEXT locking: Scan the logic list for FILE *NEXT. Using this list, mark the places where *NEXT is repeatedly tried, if a record is locked. For every such place, set *LOCKTRY to a non zero value when interfaced to Oracle, just before the *NEXT, and reset it to zero after the *NEXT command. NOTE: On Oracle, a non zero *LOCKTRY value means that a locked record will be tried until successful.
INTERNAL file builds. Scan the logic list for INTERNAL data_manager and INTERNAL file_build statements. Insert a database login routine just after the internal data_manager statement. Also add the ‘-l *ENV("USER_ORACLE") to *PASS assignment. This should only be performed when using Oracle. If the application caters for more than one database, this can be validated by using the statement "IF *DEFDBASE = M-Oracle_db THEN".
All Tables (Files) used across a suite of applications must be defined consistently.
FILE *PRVIOUS, *LAST & *UNLOCK. These file operations must be removed as these operations are not supported under a relational database.
FILE I/Os involving alternate record layouts. All File I/Os using alternate record layouts must be changed to use the default record layout.
External Names. External Names of files, indexes and field names should not conflict with the databases reserved work list. A list of reserved words is supplied in this document (see Oracle documentation up-to-date list).
Reserved Word List
The reserved words in this list originate from Oracle, and SQL Server.
ABS
ABSOLUTE
ACCESS
ACOS
ACTION ADA ADD ADDDATE ADDTIME
ALL
ALLOCATE
ALPHA
ALPHANUMERIC ALTER AND ANY ARE
ARRAYLEN
AS
ASC
ASCII
ASSERTION
ASIN
AT
ATAN
ATAN2
AUDIT
AUTHORIZATION
AUTOINCREMENT AVG BEGIN BETWEEN BINARY
BIT
BOOLEAN
BOTH
BREAK
BROWSE
BULK
BY
BYTE
CALL
CASCADE
CASCADED
CASE
CAST
CATALOG
CEIL
CEILING
CHAR
CHARACTER
CHARACTER_LENGTH
CHAR_CONVERT
CHAR_LENGTH
CHECK
CHECKPOINT
CHR
CLOSE
CLUSTER
CLUSTERED
COALESCE
COBOL
COLLATE
COLLATION
COLUMN
COMMENT
COMMIT
COMMITTED
COMPRESS
COMPUTE
CONCAT
CONFIRM
CONNECT CONNECTED CONNECTION CONSTRAINT CONSTRAINTS
CONTINUE
CONTROLROW
CONVERT
CORRESPONDING
COS
COSH
COT
COUNT COUNTER CREATE CROSS CURDATE
CURRENCY
CURRENT
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_USER
CURSOR
CURTIME
DATABASE
DATE
DATEDIFF
DATETIME
DAY
DAYNAME
DAYOFMONTH
DAYOFWEEK DAYOFYEAR DBA DBCC DBSPACE
DBYTE
DEALLOCATE
DEC
DECIMAL DECLARE DECODE DEFAULT DEFERRABLE
DEFERRED
DEGREES
DELETE
DESC
DESCRIBE
DESCRIPTOR
DIAGNOSTICS
DIGITS
DIRECT
DISALLOW
DISCONNECT
DISK DISTINCT DISTINCTROW DO DOMAIN
DOUBLE
DROP
DUMMY
DUMP
EBCDIC
ELSE
ELSEIF
ENCRYPTED
END
ENDIF
END_EXEC
EQV
ERRLVL
ERROREXIT
ESCAPE
EXCEPT
EXCEPTION
EXCLUSIVE
EXEC
EXECUTE
EXISTS
EXIT
EXP
EXPAND
EXPIREDATE
EXTERNAL
EXTRACT
FALSE
FETCH
FILE
FILLFACTOR
FIRST
FIXED
FLOAT
FLOAT4
FLOAT8 FLOOR FLOPPY FOR FOREIGN
FORTRAN
FOUND
FROM
FULL
GENERAL
GET
GLOBAL
GO
GOTO
GRANT
GRAPHIC
GREATEST
GROUP
GUID
HAVING
HEX HEXTORAW HOLDLOCK HOUR IDENTIFIED
IDENTITY
IDENTITYCOL
IDENTITY_INSERT
IEEEDOUBLE
IEEESINGLE
IF
IFNULL
IGNORE
IMMEDIATE
IMP
IN
INCREMENT
INDEX
INDICATOR
INITCAP
INITIAL
INITIALLY
INNER
INOUT
INPUT
INSENSITIVE
INSERT
INSTEAD
INT
INTEGER
INTEGER1
INTEGER2
INTEGER4
INTERNAL
INTERSECT
INTERVAL
INTO IS ISOLATION JOIN KEY
KILL
LANGUAGE
LAST
LCASE
LEADING
LEAST
LEFT
LENGTH
LEVEL
LFILL
LIKE
LINENO LINK LIST LN LOAD
LOCAL
LOCALSYSDBA
LOCATE
LOCK LOG LOG10 LOGICAL LOGICAL1
LONG
LONGBINARY
LONGFILE
LONGTEXT LOWER LPAD LTRIM MAKEDATE MAKETIME MAPCHAR MATCH MAX
MAXEXTENTS
MBCS
MEMBERSHIP
MEMO
MESSAGE
MICROSEC
MIN
MINUS MINUTE MIRROREXIT MOD MODE
MODIFY
MODULE
MONEY
MONTH
MONTHNAME
NAMED
NAMES
NATIONAL
NATURAL
NCHAR
NEXT
NO
NOAUDIT
NOCHECK
NOCOMPRESS
NOHOLDLOCK
NONCLUSTERED
NOROUND
NOT
NOTFOUND
NOW
NOWAIT
NULL
NULLIF
NUM
NUMBER
NUMERIC
OBID OBJECT OCTET_LENGTH OF OFF
OFFLINE
OFFSETS
OLEOBJECT
ON
ONCE
ONLINE
ONLY
OPEN
OPTION
OPTIONS
OR
ORDER
OTHERS
OUT
OUTER
OUTPUT
OVER
OVERLAPS
OWNERACCESS
PACKED
PAD
PARAMETERS
PARTIAL
PASCAL
PASSTHROUGH
PCTFREE
PERCENT
PERM
PERMANENT
PI
PIPE
PIVOT PLAN PLI POSITION POWER
PRECISION
PREPARE
PRESERVE
PREV
PRIMARY
PRIOR
PRIVILEGES
PROC
PROCEDURE
PROCESSEXIT
PUBLIC
RADIANS
RAISERROR
RAW
READ
READTEXT
REAL
RECONFIGURE
REFERENCE
REFERENCED
REFERENCES
REJECT
RELATIVE RELEASE REMOTE RENAME REPEATABLE
REPLACE
REPLICATION
RFILL
RESOURCE
RESTRICT
RETAINDAYS
RETURN
REVOKE
RIGHT
ROLLBACK
ROUND
ROW ROWCOUNT ROWID ROWLABEL ROWNO
ROWNUM
ROWS
RPAD
RTRIM
RULE
SAVE
SAVEPOINT
SCHEDULE
SCHEMA
SCROLL
SECOND
SECTION
SELECT
SELUPD
SERIAL
SERIALIZABLE SESSION SESSION_USER SET SETUSER
SHARE
SHORT
SHOW
SHUTDOWN
SIGN
SIN
SINGLE
SINH SIZE SMALLINT SOME SOUNDEX
SPACE
SQL
SQLBUF
SQLCODE
SQLERROR
SQRT
SQLSTATE
STAMP START STATISTICS STDEV STDEVP
STOP
STRING
SUBDATE
SUBSTR
SUBSTRING
SUBTIME
SUBTRANS
SUBTRANSACTION SUCCESSFUL SUM SYNCHRONIZE SYNONYM
SYNTAX_ERROR
SYSDATE
SYSDBA
SYSTEM_USER
TABLE
TABLEID
TAN
TANH
TAPE
TEMP
TEMPORARY
TEXT
TEXTSIZE
THEN
TIME
TIMEDIFF TIMESTAMP TIMEZONE TIMEZONE_HOUR TIMEZONE_MINUTE
TINYINT
TO
TOIDENTIFIER
TOP
TRAILING
TRAN
TRANSACTION
TRANSFORM
TRANSLATE
TRANSLATION
TRIGGER
TRIM
TRUE
TRUNC
TRUNCATE
TSEQUAL UCASE UID UNCOMMITTED UNICODE
UNION
UNIQUE
UNKNOWN
UPDATE
UPDATETEXT
UPPER
USAGE
USE
USER
USERGROUP
USING
UTCDATE UTCDIFF VALIDATE VALUE VALUES
VAR
VARBINARY
VARCHAR
VARCHAR2
VARGRAPHIC
VARIABLE
VARIANCE
VARP VARYING VIEW VOLUME WAITFOR
WEEK
WEEKOFYEAR
WHEN
WHENEVER
WHERE
WHILE
WITH
WORK
WRITE
WRITETEXT
XOR
YEAR
YESNO
ZONE
ZONED