README FILE FOR RPF & RPT CLONE FOR WINDOWS 95/98/NT
----------------------------------------------------

This product uses Oracle Class Library for 32-bit Windows.

It is developed as a migration tool for Oracle customers who have
many working reports in RPF & RPT and see no reason why they have 
to undertake the risk of conversion to Reportwriter.

Pre-requisites
--------------
1. Ensure that the DLL  ORACLM32.DLL is in the search path.
   This is in  Oracle Home under subdirectory BIN with Oracle 8.0.5.
   This is in  OO4O23, but in earlier versions oo4o21 or oo4o22.
   there will is a directory cpp\bin which will has the rquired DLL.     
   
2. As this is a console mode application there is no other DLL dependancy.

3. Ensure that SQLPLUS is working. This will ensure that SQLNET is 
   working OK.
   
Operating Instructions
----------------------
1. This does the work of both RPF and RPT together and separately.

2. orawinrpfrpt abcd.rpt  abcd.lst user/password@database 
   This will do the job of both RPT & RPF
   
3. orawinrpfrpt abcd.rpt abcd.rpf user/password@database 1
   The 4th parameter is a debug flag which if 1 suppresses RPF and 
   only RPT is done.
   
4. orawinrpfrpt abcd.rpf abcd.lst
   This will do only RPF job as there is no connection argument.
   
7. If the list file name starts with F: or f: then this is same as
   form feed switch. If p:m:n: or P:m:n: prefixes filename then
   it will print pages m to n. i: or I: will force an intial form feed.
   
   orawinrpfrpt abcd.rpt f:i:p:12:34:abcd.lst user/password@database
   for example is using all the options 

Debug & Trace facilities added
------------------------------
The command syntax is
---------------------
orawinrpfrpt abcd.rpt  abcd.lst user/password@database DebugSwitch  

DebugSitch is additive
---------------------
1 RPF only

2 trace of lines executed & sqls AFTER expansion

4 dump of ALL declare variables before executing define macros
  and dump of ALL declare varibles at end of job

8 Dump DEFINE internals  -- use by JNC

16 Dump Label Internals  -- use by JNC

Thus debugswitch 6 means options 2 & 44 -- most useful
The debug output is to stdout and all other messages is to stderr
orawinrpfrpt abcd.rpt  abcd.lst user/password@database 6 >trace.txt
will capture the debug output to a file trace.txt
 
   
Restrictions at Present
=======================
The product was used successfully to migrate 350 reports, some very complex, 
of 1 customer. This meant that some few features were not implemented 
because these were never used. However should there be any strong requirement any feature not implemented can easily be done. Just ask for it.
Many other limits are already very high and should be well within the 
most complex and largest RPTs. If a freak RPT should exceed these limits
they can be easily doubled on request.

RPF Restrictions
----------------
1. No support yet for   #APN #CL #L #F #HS  #PAUSE  #VS 
2. Assumptions - RPF commands closed & open in 1 line 
   This is beacuse RPT & RPF were combined in 1 program 
   and that processing happens for each line of internal RPT output.
   Therefore, RPF commands may NOT be continued across lines!
   to over come this restriction you may use tricks like
   select '#cen ' || heading.
3. Max 100 lines of text are buffered. #NC back to column 1 flushes buffer.
   #TE flushes buffer & restores current column & current table.
4. #UL #CUL & #TTUL - Underlining is for 1 line and 1 column. 
5. The clone does not remember #R #RR #FR - you have to give it each time
       #nc #nc #r #nc #r #nc #r #nc  will not work
       #r will need to be put in appropriate points

   

RPT Restrictions
----------------
1.  Input RPT file size below 100KB.
2.  No support for Date Variables in .DECLARE
3.  No support for .DSUB
4.  No support for .FPRINT
5.  $$TIME$$ & $$DATE$$ supported but no assignment to Numeric fields
6.  Not all Formats/Masks supported 
    9 0 . , $ B  are supported;     MI PR V are not yet supported
    $ and B must be in the leading position and not embedded
7.  If select column data type is not same as declare column then 
    conversion is suitably attempted
8.  Max 300  DECLAREs
9.  Max 100  DEFINEs
10. Max 100  Labels
11. Labels must be in separate lines
12. In SQL INTO must start in 1 separate line and no mixing is allowed.
    Select ...
    into a,b,c,d,   --  INTO and continuation of INTO in separate lines
         e,f,g
    where .....
    The INTO line or lines is the list of DECLARE variables
    which are extracted out into dynaset class library variables.

    For example 
       select to_char(sysdate,'dd/mm/yy') into today from dual
    must be written as
       select to_char(sysdate,'dd/mm/yy') 
       into today   -- this has to be in 1 line
       from dual
13. The declare variables must appear before their usage in rpt file
14. .set literals must be within double quotes " NOT single quotes '
    .set so_type "DOM" is OK    .set so_type 'DOM' is NOT
15. Max 100 columns in 1 #DT
16. For Date columns in select the program automatically converts to
    8 characters dd/mm/yy - Indian version
    Within the program to_date conversions may be required 
17. Large Oracle expressions as for example decode may cause problems 
    if not aliased with an alias-name - this is a problem of ORACLE OLE
    - use alias names for large SQL expressions if you face problem
     Use SELECT DISTINCT not SELECT UNQUE
18. If .ask requires a space input give one . (dot/fullstop) instead
19. NO support for DISJUNCTIVE reports i.e.
    .report "sel1 OR/AND sel2"
    
    
Restrictions in DEMO Version
----------------------------
1. RPF will not produce more than 2 pages of output.
2. Pure RPT only run will not produce more tan 500 lines of output.
3. The demo version does not check for Server Ethernet address.
4. Demo has been compiled in Oracle 8.0.5 OO4O23

General Remarks on CLONING
--------------------------
The original RPF and RPT had some lacunae. If users have exploited these
they can expect some changes of behaviour. However every attempt has been 
to CLONE even the odd behaviour of the original. However if a user 
observes some strange cloning difference we are ready to incorporate
the same in case the requirement is genuine. Otherwise a minor shift of 
RPF format commands gets a desired effect in the clone

Some instances of 'odd' RPF RPT behaviour
-----------------------------------------
1. DVD: if divide by zero happens original RPT continued with NULL result 
   though a error warning did come
2. ADD SUB MUL with NULL implicitly did NVL(var,0)
3. RPF forgave some commands to be not closed although they should be
   for example #CEN #CUL #UL. It did not forgive #DT!
4. RPT users almost never use RPF nested tables, If used then there may be 
   some odd funnies that will be cloned on request.

How to Order
------------
1. Write to 
     Jayanta Narayan Choudhuri
     SOFTWARE SOLUTIONS AND SERVICES (SSS)
     Flat 302, 395 Jodhpur Park
     Calcutta 700 068, India
     tel:  91 33 473 1891  
     email: sss@cal.vsnl.net.in

   
 2. Your order must be accompanied by bank draft
    in favour of "SOFTWARE SOLUTIONS AND SERVICES"
    and Ethernet address of the Server that runs Oracle
    
    Orawinrpfrpt is sold only to customers using TCP/IP and ethernet.
    The ethernet address of the server to be supplied in format
    dd-dd-dd-dd-dd-dd  for example 00-80-48-9f-4c-31
    
    To find physical ethernet address of your server
    ping the server from any node and then execute command 
              arp -a
    
3. All client products of SSS check presence of particular 
   ethernet address  of the node. 
   This is because clients are licensed for 1 node only.
   
4. All server products of SSS check presence of a particular 
   ethernet address on a remote node in same subnet. 
   This is because this server based product 
   is unlimited user license for 1 server in 1 location only.
   
5. What happens if Server/clinet's NIC card malfunctions?
   SSS will have to be contacted and customer will be send an immediate
   patch for customer's new ether address.
   Customer will be required to give a written udertaking that 
   the older malfuncioning NIC  in question has been taken out 
   of circulation.
   We trust that users will not grudge SSS's security as it is designed to
   protect the customer as well as SSS from illegal copying and deployment 
   of customer's software assets and SSS's intellectual rights.
   