This page contains answers to common questions
regarding the Source Recovery Service for UV.
How does the Source Recovery Service for UV work?
I have heard that it is impossible to recover the
source code from object code. Does the Source Recovery Service for UV really
work?
How much does it cost to recover the source for my UniVerse BASIC
programs?
What versions of UniVerse BASIC are supported?
How long does it take to recover the source code?
What does the recovered source code look like? Is it full of
GOTO's?
Do you have any references?
Why wouldn't customers want to provide references?
Isn't it illegal to decompile programs?
I have some programs that I'm not supposed to decompile. Will
the SRS do it any way?
Can the SRS use object code from the catalog space?
What forms of payment do you accept?
How can I tell how many source lines were in the original
source code?
Does the SRS recover CASE and LOOP constructs?
Can
I license the tool set used by the SRS?
I
can't VLIST the code. Can the SRS still recover the source code?
I
have PI/open object code that I need decompiled. Can the SRS recover this?
Why
would I pay to use the SRS for my PI/open recovery when I can use the free
decompiler that UniVerse provides?
If you have a question that isn't addressed here, check out the discussion
group or send an e-mail to info@srs4uv.com.

As the name implies, this is a service as opposed to a downloaded
program that you would use. You send the UniVerse BASIC object code as an
attachment to an e-mail addressed to info@srs4uv.com.
You'll receive an e-mail back with the recovered source code for the submitted
programs,
ready to compile and catalog or run.
Refer to the submissions page for further
information.

Yes. It really works. If the object loads and runs successfully, it can
be recovered. The SRS Team has been recovering source code since 1981 and have
not found a program that could not be recovered.

Refer to the price list page for current pricing for
the recovery of
program submissions.

Source code has been successfully recovered for programs compiled on versions of UniVerse as early as
5.x and all the way up to version 10.0. If
you have UniVerse BASIC compiled before version 5.x, send it in for analysis
and we will let you know whether we can help you.

This depends on many factors. Typically it takes a few days to recover a
few programs. Large submissions will have the estimated time included in the
fee quote. The largest submission to date of 230 programs required 14 days to
recover. Your time will vary.

Good and no. The recovered programs look nearly like the original source code,
albeit, there are no comments because the UniVerse compiler does not store
those in the object code. The variable names are the same however line labels
are different. There are no more GOTO statements in the recovered programs
than there were in the original program, though there may be fewer. If
the submitted programs were structured code, that is what you will receive
back. However if the submitted programs were spaghetti code originally,
that is what you will receive back.

Yes and no. The majority of the SRS users prefer to remain anonymous.
Consequently, no customer is discussed in sufficient detail to allow them to
be identified. Over the last 18 years, a wide variety of publicly and privately held companies,
municipal governments and educational institutions around the world have
successfully used the SRS to recover missing source code.
We know that several SRS users lurk on the USENET news:comp.databases.pick
newsgroup and on the International UniVerse and UniData
User Group listserver. You can post your query to those groups and see if anyone replies
to you confidentially. Just mention the Source Recovery Service for UV or TAD,
The Adaptable Decompiler and see what you get. Don't be
surprised if no one responds though. See the next question
to understand why. (If you decide to do this and you have a serious source
code problem, it may be wise to get a new free e-mail account from yahoo or
hotmail to mask your employers identity from the masses.)

Typically the concerns center on the possible negative implications and
adverse reactions by others upon discovering the risk that the organization
was in due to the missing source code. Rather than publicly air these matters,
they prefer to handle the challenge discreetly.

We do not provide legal advice and nothing
contained within this section is to be construed as legal advice.
Generally speaking, if your employer had you or others write the programs for the employers benefit, these programs are owned
by the employer and can be decompiled at the employer's direction.
If your employer licensed the programs from a third-party, there may be
contractual restrictions that forbid the decompilation of the programs. Check
with your legal counsel to determine whether or not those contractual
restrictions are applicable in your case as there may be fair-use issues or
other mitigating factors that effectively render such restrictions unenforceable.
Is the third-party still in business? Is the third-party able to provide the
source code? Due diligence is important as decompiling
programs could put you or your company at substantial risk.
We do not provide legal advice and nothing
contained within this section is to be construed as legal advice.

No. The SRS is not intended to be used to commit intellectual property
theft. We reserve the right to refuse service to anyone.

Yes. The object code in the catalog space has a 40 byte structure added to the beginning of the file
which the SRS ignores during the recovery.

All transactions are in US currency. Typically, we require payment in
full by
check or wire before providing the services. Purchase orders with 50% paid in advance
and net 30 terms on the remainder are accepted from Fortune 1000 companies,
municipal government agencies, and accredited educational institutions.

You can use the VLIST command provided the program wasn't
compiled with the -I option. See the example below of the VLIST output. The
line in RED contains the original source lines.
If the VLIST command refuses to list object code, you can download our SRS.UV.HEADER
BASIC subroutine from our downloads page. The
SRS.UV.HEADER subroutine allows you create I-Type descriptors for use with the
UniVerse Retrieve report writer to view the header fields of UniVerse
BASIC object code.

Yes. If the original source code used CASE and/or LOOP statements, the
SRS recovers these. The SRS even recovers LOOPS with multiple WHILE and/or
UNTIL clauses.
Sometimes the SRS logical structure analysis produces surprising
results. The SRS is able to logically promote IF-THEN GOTO constructs into
LOOP statements and nested IF-THEN-ELSE constructs into CASE statements. When programmers
first see this logical promotion, some think that the logic of the program has
been changed. In fact, the logic is the same, it is now represented in a
relatively more structured manner.

At this time, the
SRS tool set is generally unavailable to end-users.
There are always exceptions though. Should we determine that you have a
very large recovery project, there is the possibility of being granted a
short-term project license to use the SRS tool set on your own computer.
We understand that some would like to have the SRS tool set readily
available, just in case it is needed on a moments notice. If you have an urgent need to recover source code, let us know and we'll
try to accommodate your schedule.

Yes. The SRS can recover the source code for a program that has been marked
as protected from being processed by VLIST or RAID.
However there could be other reasons why VLIST will not process the
object code. We have seen cases where the object code in the BP.O file is
corrupt yet the object in the catalog space is correct. An object code file
would become corrupted by being edited with the ED verb for example.

Yes. The predecessor to the SRS was TAD, The Adaptable Decompiler. The TAD
product recovers the source code for Prime INFORMATION or PI/open object code.
The fees for a recovery using TAD are the same as the SRS.

The PI/open decompiler provided with UniVerse (UniVerse decompiler) will
recover compilable source code for most PI/open programs. However, the
UniVerse decompiler was purposefully crippled to prevent the recovery of any
program that used the undocumented "Internal use only" statements
and functions of PI/open. They crippled the UniVerse decompiler
to prevent folks from decompiling the PI/open verbs. Some application
programmers knew how to hack the PI/open BASIC compiler to use these "Internal
use only" statements and functions, and consequently, those programs are not
recoverable with the UniVerse decompiler.
The UniVerse decompiler
does not attempt to recover the logical structure of the program. It takes some short cuts that produce
recovered source code that is full of GOTO statements. We believe the goal of
creating the UniVerse decompiler was to let companies move their existing
application from PI/open to UniVerse. The assumption may have been that if
you didn't have the source code to the programs to begin with, you wouldn't
want to make modifications to the recovered source code afterwards. If that
describes your situation, the UniVerse decompiler is the way to go, providing
it is able to recover all of your programs.
Unlike the UniVerse decompiler, the SRS recovers programs that used the
"Internal use only" statements . The
programs recovered by the SRS look similar to the original source code
--- all of the LOOP and
CASE constructs are recovered without introducing a flood of GOTO statements
like the UniVerse decompiler would. Plus the SRS can use
your include files that define common storage members and dimensioned array
element equates --- features that combine to produce recovered source code that
is easy to read and maintain.
If you intend on performing maintenance on the recovered
programs and you want clean looking code, the SRS is the way to go.

If you have a question that isn't addressed here, check out the discussion
group or send an e-mail to info@srs4uv.com.