There are a few incompatibilities between version 3 and the earlier versions. This was needed to develop the language into something more useful and friendlier. Most of these incompatibilities can be dealt with by using the program conv2to3 which will convert old sources into sources compatible with version 3 (whenever possible).

The executables (if any) can be found with the FORM executables . The sources are:

conv2to3.c : (22 Kb) C sources.

conv2to3.c.gz : (4 Kb) C sources in gzipped format.

Translate with

cc -o conv2to3 conv2to3.c

if you are using a UNIX based system. If not, try something similar on the system of your choice. Note that if the directory separator is different from / you should edit the definition of DIRECTORYSEPARATOR in the sources as indicated. The same for the extension character. In the sources they are defined as:

#define EXTENSIONCHARACTER '.'

#define DIRECTORYSEPARATOR '/'

Be careful to use the program only once on each source file!

Program files without an extension (or just a .) will be copied into new files with the extension .frm. Files with an extension will be overwritten. Hence the best way is to copy your old program into a separate directory and then run conv2to3 on all the files. If anything goes wrong (I cannot forsee all program styles) the old sources will still be available. If needed you could try to adapt the sources. If they are generically useful adaptations, let me know. (form@nikhef.nl)

From the program:

We convert:

1: ?,??,???,.,..,... wildcarding into ?a,?b,?c,?a,?b,?c

2: Subroutine calls obtain (,) instead of {|}

3: The main file may get the extension .frm

4: Inline commentary after ; gets marked by ;* to support multiple statements in one line.

5: 'a' notation of preprocessor variables is changed into the now preferred notation of `a'. (quote-quote -> backquote-quote)

6: After a file has been finished the program writes: * 2->3 converted

7: The order of the statements in a module.

8: Write, Nwrite -> On, Off; Idem Compress, ProperCount

9: In specnames the user can provide the names of procedures that contain a .sort or other end-of-module instruction. This will reset the count of statement types inside a module. We give here the example of the procedures ACCU and accu, being used by the author.

Comments:

commentchar treatment assumes that it is not inside any flowcontrol on the whole, its treatment is rather imperfect

Error repaired on 30-oct-2000 (If first character was * there was a mess).