|
Traditional R83 |
R83 Example |
jBASE |
|
MACHINE |
The actual hardware |
\jbase_data |
|
SYSTEM FILE |
SYSTEM |
\jbase_data\SYSTEM |
|
ACCOUNTS |
ORDER-ENTRY |
\jbase_data\ORDER-ENTRY |
|
MD |
MD |
\jbase_data\ORDER-ENTRY\MD |
|
DICTFILE |
DICT ORDERS |
\jbase_data\ORDER-ENTRY\ORDERS]D |
|
DATAFILE |
ORDERS |
\jbase_data\ORDER-ENTRY\ORDERS |
|
USERS |
Not implemented |
Uses traditional
windows users. Can either be specific for each person or have 1 called
jbase that everyone uses. |
|
|
|
|
As
you can see, jBASE can be setup to look nearly identical to an existing
Traditional R83 system. The obvious initial bonus is the fact that multiple
"MACHINES" or independent databases (jbase_data1,jbase_data2, etc.) can
reside on one piece of hardware.
Windows USERS and how
they relate to your migrated jBASE system
The
first difference to note is that R83 did not have users and therefore this
is a new concept to some who are migrating to jBASE or any windows server
based application. In R83 the "USER" was simply the fact that you sat at a
terminal connected to a specific machine. Probably the easiest way for R83
migrators to look at "USER" is to consider the original login and password
to be a virtual A/B switch witch determines which "MACHINE" you will be
running. Therefore, there are many ways to set-up the users which could
include : 1 user per jbase_data ("MACHINE"), 1 user per application
("MACHINE" and "ACCOUNT"), 1 user for all jBASE and prompt for
jbase_data "MACHINE" and "ACCOUNT" or endless other combinations. For the
purpose of this document we will assume we are migrating 1 R83 machine with
multiple accounts to 1 jBASE machine and will therefore create individual
"USERS" for each "ACCOUNT" as boldfaced above.
Assumptions used in this
document
For
the purpose of this document we are assuming the following:
-
The migration is from R83 to jBASE version 4 for windows
-
The "ACCOUNT" structure is such that each "ACCOUNT" has a
BP and PROC file.
-
You are familiar with printer setup and sharing in Windows.
-
You will be restoring from a pseudo-floppy (hard disk image)
jBASE advantages and differences
Traditional R83 implementations must either have the program exist in the MD
or be referred to by a RUN statement that includes the file and item name.
On jBASE, programs can be located using the MD, but may also be located
anywhere else on the system referred to by the PATH and JBCOBJECTLIST
environment variables. All programs on jBASE must be CATALOGed. These
programs/subroutines then become verbs on windows that exist somewhere in
the PATH. This concept is different than the traditional R83, but with some
up front planning, the advantages are immense. Programs become immediately
available to any user having it in their PATH. There is no need to CATALOG
a utility in all your "ACCOUNT" MDs as was needed in R83. Simply add your
utility programs bin (short for binary) directory to the PATH environment
variable for all users. i.e. PATH = C:\jbase_acct\UTILACCT\bin;C:\jbase_acct\AP\bin;C:\jbase_acct\AR\bin;etc...
Some planning needs to be taken into account since these three (3) command
lines are synonymous:
MAIN will run the first MAIN program in the PATH
RUN AP MAIN will run the first MAIN program in the PATH
RUN AR MAIN will run the first MAIN program in the PATH
But,
with a little upfront design you can migrate any R83 structure and usually
take advantage of the PATH/JBCOBJECTLIST environment variables. That is
why they say on jBASE the MD is optional.
Traditional Q-point,
D-point and JEDIFILEPATH
All
files are located using the MD and/or JEDIFILEPATH. In traditional R83 you
can access files in the MD that are either D-points or Q-Points. In jBASE
they can be there, but they also can be accessed directly by their native
path name i.e. C:\temp or follow a path set in the environment variable
JEDIFILEPATH.
Example:
With the environment variable set:
JEDIFILEPATH = .;c:\jbase_data\AR1;c:\jbase_data\AR2;c:\jbase_data\AR3
LIST CUSTOMERS
This would list the first CUSTOMERS it finds. First
checking the MD then subsequently checking the AR1 "ACCOUNT", AR2
"ACCOUNT" and then AR3 "ACCOUNT" by
following the JEDIFILEPATH and this could be accomplished without an MD.
That is why they say on jBASE the MD is optional. With a little
planning you can easily eliminate the need for Q-Points.
Planning your
Migration (Things to do on your existing system)
1.
What are valid data accounts and what are system and/or old unused accounts
|
Account |
Convert? |
Note |
|
DM |
No |
System account on old computer |
|
MAINLINK |
No |
Not used anymore |
|
AP |
Yes |
|
|
OE |
Yes |
|
|
PR |
Yes |
Be sure to DX PR.HIST.OLD |
|
UTIL.ACCT |
yes |
Various utilities used by all accounts. Need to elimnate SYSTEM
specific utilities. |
|
etc... |
|
|
2.
Do you use PATHing for your native system
D3
- Q ^ ACCT,DICTFILE,{DATAFILE}
U2 - F-points, D-Points
Others??
Best to convert these to valid Q-Point structure or include them in the
JEDIFILEPATH.
Are they Q-POINTS to Q-POINTS? You will probably want to clean this up.
3.
Do you use the RUN command to execute two or more separate programs with the
same name in the same "ACCOUNT"? (See jBASE advantages and differences)
You will need to rename the programs to have unique names.
4.
Plan your PATH and JBCOBJECTLIST environment variables for each "ACCOUNT"
|
Account |
PATH / JBCOBJECTLIST |
Notes |
|
AP - Accounts Payable |
.\bin;c:\jbase_data\UTIL\bin
.\lib;c:\jbase_data\UTIL\lib |
|
|
OE - Order Entry |
.\bin;c:\jbase_data\PR\bin;c:\jbase_data\UTIL\bin
.\lib;c:\jbase_data\PR\lib;c:\jbase_data\UTIL\lib |
Put PR\bin and PR\lib in because of timeclock programs |
|
PR |
.\bin;c:\jbase_data\UTIL\bin
.\lib;c:\jbase_data\UTIL\lib |
|
|
UTIL |
.\bin
.\lib |
|
|
etc... |
|
|
5.
Do you have source code for all your programs.
Best to recompile on your existing platform and be sure all
programs compile.
6.
Be sure all programs compile. Don't want to chase your tail on converted
programs and find out they didn't compile on the machine you migrated from.
Executing your
Migration
1.
Download and install jBASE 4.1 from our website
http://www.jbase.com/products/Rel4download_info.html
2.
RUN C:\download directory\jbase4_4.1.4.2_win32.exe
3.
Create the "MACHINE"
MKDIR C:\jbase_data or use the windows explorer and "New
Folder" and name it jbase_data
4.
Change the HOME variable for your console user to reflect the new "MACHINE".
Start >> Settings >> Control Panel >> System >> [Advanced]
>> [Environment Variables...]
Highlight HOME and click EDIT or if it doesn't exist add NEW and make
Variable Value C:\jbase_data
5.
Change the JEDIFILENAME_SYSTEM variable for your console user to reflect the
new "SYSTEM".
Start >> Settings >> Control Panel >> System >> [Advanced]
>> [Environment Variables...]
click NEW and add JEDIFILENAME_SYSTEM with Variable Value
C:\jbase_data\SYSTEM
6.
Run jsh (jBASE Shell) from the jBASE program group in windows and check that
HOME is correct
jsh Username ~ -->pwd <Enter>
C:\jbase_data
jsh Username ~
-->
7.
Create the SYSTEM
file to be used on your new "MACHINE"
jsh Username ~ -->CREATE-FILE DICT SYSTEM 29
[ 417 ] File SYSTEM]D created , type = J4
8.
Attach the tape drive (see TAPE section for details)
In this example we are restoring a pseudo-tape from a D3 machine
T-ATT FLOPPY0 DEVICE=C:\temp\pflop1 label=R83,500
9.
Restore the accounts from the filesave tape attached
sysrestore -C
Enter home directory of restored account or account name : <Enter>
sysrestore -C
sysrestore -C
10.
Check that all your "ACCOUNTS" are on your "MACHINE"
LIST . # "SYSTEM]"
11.
Create the SYSTEM item for your "ACCOUNTS".
jsh Username ~ -->MAKE.SYSTEM<Enter>
<Enter> = C:\jbase_data, EX =
exit
Database path where
accounts are located. : <Enter>
nn accounts to process (where nn should be the number of accounts
you restored)
Continue? (Y/N) : Y <Enter>
12.
Run UpdateMD
LOGTO "ACCOUNT"
CREATE-FILE MD.ORIG 3 7
COPY MD
TO:(MD.ORIG
UpdateMD
13.
Convert programs and compile them
COPY BP
TO: (BP.ORIG
PortBas BP (KOVS
BASIC BP *
CATALOG BP *
14.
Create a windows user for the "ACCOUNT"
Right Click on My Computer > Manage > Local Users and Groups
Right Click on Users > New User...
Put in User Name ("ACCOUNT") and Password and Confirm
Password. You may want to uncheck "User must change password at logon"
which will allow you to check any of the other password pertinent boxes.
Click Create then Close.
Double click on the new user in the right pane and you can
add the user to groups and you must click on the Profile tab and put a the
account PATH ("C:\jbase_data\"ACCOUNT") under Home Folder
15.
Convert the windows "USER" to a jBASE user
IJU<Enter>
take the defaults
Do you wish to use the jsh [Y/N] : Y <Enter>
Do you wish to start up your Login proc automatically [Y/N] :
Y<Enter>
16.
EDIT . REMOTE.CMD and add LOGTO "ACCOUNT"
Add this line to end the line before "%JBCRELEASEDIR%\bin\jsh -s
jsh -"
LOGTO "ACCOUNT"
17.
REPEAT steps 12-16 for all accounts.
18.
Setup spooler and printers
SP-NEWTAB
SP-CREATE F1 NT -d\\server\printer
SP-CREATE F2 NT -d\\server\printer
etc...
MAKE.SYSTEM source code
MAKE.SYSTEM
001 PROMPT ''
002 JEDIFILENAME.SYSTEM=GETENV('JEDIFILENAME_SYSTEM')
003 OPEN '',JEDIFILENAME.SYSTEM TO F.SYSTEM ELSE
004 CRT 'Cannot access ':JEDIFILENAME.SYSTEM
005 STOP
006 END
007 LAST.SLASH = COUNT(JEDIFILENAME.SYSTEM,'\')
008 DATABASE.PATH = OCONV(JEDIFILENAME.SYSTEM,'G0\':LAST.SLASH)
009 *
010 *** Prompt for database PATH
011 *
012 CRT
013 CRT '<Enter> = ':DATABASE.PATH:', EX = exit'
014 CRT 'Database path where accounts are located. : ':
015 INPUT DB.PATH
016 IF DB.PATH = '' THEN DB.PATH = DATABASE.PATH
017 IF DB.PATH = 'EX' THEN STOP
018 *
019 *** select items in PATH that are potential Accounts
020 *
021 EXECUTE 'SSELECT ':DB.PATH:' # "SYSTEM""SYSTEM]D"' CAPTURING OP
022 R.SYSTEM = 'D'
023 ACCTS = '' ; ACCT.CNT = 0
024 DONE = 0
025 LOOP
026 UNTIL DONE DO
027 READNEXT ACCT THEN
028 ACCT.PATH = DB.PATH:'\':ACCT
029 ACCTMD = ACCT.PATH:'\MD'
030 OPEN '',ACCTMD TO ACCTMD THEN
031 READ R.EXISTS FROM F.SYSTEM,ACCT ELSE
032 ACCT.CNT = ACCT.CNT + 1
033 ACCTS<ACCT.CNT> = ACCT
034 END
035 END
036 END ELSE
037 DONE = 1
038 END
039 REPEAT
040 CRT
041 CRT ACCT.CNT:' accounts to be processed'
042 YORN = ''
043 LOOP
044 UNTIL YORN = 'Y' OR YORN = 'N' DO
045 CRT 'Continue? (Y/N) : ':
046 INPUT YORN
047 REPEAT
048 IF YORN = 'N' THEN STOP
049 *
050 *** Assign common values to R.SYSTEM
051 *
052 R.SYSTEM = 'D'
053 R.SYSTEM<20> = 'ESYSTEM_START'
054 R.SYSTEM<21> = 'JBASE' ;* JBCEMULATE
055 R.SYSTEM<22> = '' ;* HOME
056 R.SYSTEM<23> = '' ;* JBCDEV_BIN
057 R.SYSTEM<24> = '' ;* JBCDEV_LIB
058 R.SYSTEM<25> = '' ;* PATH
059 R.SYSTEM<26> = '' ;* JBCOBJECTLIST
060 R.SYSTEM<27> = '' ;* JEDIFILEPATH
061 R.SYSTEM<28> = '' ;* JEDIFILENAME_MD
062 R.SYSTEM<29> = '' ;* JBC_TCLRESTART
063 R.SYSTEM<30> = '' ;* JBC_ENDRESTART
064 R.SYSTEM<31> = '' ;* JBCRESTARTPROG
065 R.SYSTEM<32> = '' ;* JBCLOGINPROG
066 R.SYSTEM<33> = '' ;* JBCLOGNAME
067 R.SYSTEM<34> = 'false' ;* JBASE_I18N (INTERNATIONAL MODE)
068 R.SYSTEM<35> = '1':@VM:'999999' ;* JBCPORTNO (MULTI-VALUE RANGE)
069 R.SYSTEM<36> = '' ;* OTHER ENVIRONMENT VARIABLES (MV)
070 R.SYSTEM<37> = 'ESYSTEM_END'
071 *
072 *** Create SYSTEM items for ACCTS
073 *
074 FOR ACNT = 1 TO ACCT.CNT
075 ACCT = ACCTS<ACNT>
076 READ R.EXISTS FROM F.SYSTEM,ACCT THEN
077 CRT ACCT:' skipped. Already exists'
078 END ELSE
079 *
080 *** Assign specific values to R.SYSTEM for this ACCT
081 *
082 R.SYSTEM<2> = DB.PATH:'\':ACCT
083 R.SYSTEM<22> = DB.PATH:'\':ACCT
084 R.SYSTEM<23> = DB.PATH:'\':ACCT:'\bin'
085 R.SYSTEM<24> = DB.PATH:'\':ACCT:'\lib'
086 R.SYSTEM<25> = DB.PATH:'\':ACCT:'\bin'
087 R.SYSTEM<26> = DB.PATH:'\':ACCT:'\lib'
088 R.SYSTEM<27> = DB.PATH:'\':ACCT
089 R.SYSTEM<28> = DB.PATH:'\':ACCT:'\MD]D'
090 *
091 ***
092 *
093 WRITE R.SYSTEM ON F.SYSTEM,ACCT
094 END
095 NEXT ACNT
|