Structuring jBASE to Look Like
Traditional R83
|
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 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 procedure:
For the purpose of this information 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
PATH for programs and JBCOBJECTLIST for subroutines
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 |
Put PR\bin and PR\lib in because of timeclock programs |
|
PR |
.\bin;c:\jbase_data\UTIL\bin |
|
|
UTIL |
.\bin |
|
|
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 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
Related Links
Contact Support
jBASE technical support is
manned by personnel located all
over the globe.
jBASE Support will be glad to
assist in resolving your
technical problems.
Search the
Knowledgebase
Search for answers and information in
the jBASE Knowledgebase. Maintained
online by the jBASE support team, this
is the best place for information about
jBASE software.
Documentation
The entire jBASE documentation set is maintained on-line by jBASE technical authors, developers and support staff. This is the most up to date reference material available. The jBASE Manual Set can be downloaded in PDF format.
jBAS
E
Discussion Group
We
have created a
Google group for peer discussion
about jBASE (this was formerly known as
the jBASE Tech List). If you have
questions about who's doing what with
jBASE check the
Google group for answers!
Downloads
Free
evaluation licenses are available for
jBASE International products.
These are complete, working versions of
our available software.
Platform
Availability
A list of supported tools and operating
systems for use with jBASE software.
