I moved the projects I'm working on to another machine by using backup on my VMS systems, changed host definition in vmssoftware.ssh-helper-settings to the new server, and synchronized the project with files from VMS.
This yielded some unexpected results where the original environment shows no errors at all.
The whole project compiles without issues on VMS.
* all files that have been copied from VMS have a version number, where I would expect the files on PC to have been updates/overwritten by the files on VMS.
In Fortran code, I found a large number of false "errors", where the code does compile without issues. Earlier, I did not have these issues! (Origin of the code is Fortran77 but it has been adapted to compile with HP Fortran V8.0-1-104669-48GBT)
These I found in files that are included in other sources:
* statements in code that were previously fine, now signal an error: for example:
Code: Select all
structure /itmlstdef/
integer*2 length
integer*2 itmcode
integer*4 address
integer*4 lenaddress
endstructure
Code: Select all
no viable alternative input at 'endstructure'
extraneous input 'endstructure' expecting {TYPE, STRUCTURE, RECORD, UNION, PRIVATE, PUBLIC, END, DIMENSION, VIRTUAL, REAL, EQUIVALENCE, COMMON, POINTER, INTEGER, BYTE, NAMELIST, CHARACTER, VARCHAR, ALLOCATABLE, INTENT, OPTIONAL, EXTERNAL, INTRINSIC, INTERFACE, SAVE, TARGET, DATA, DOUBLE, COMPLEX, LOGICAL, I_CONST"
* Other valid lines like:
Code: Select all
integer*2 open ! OPEN options
integer*2 close ! CLOSE options
Code: Select all
mismatched input '\t ! OPEN options\n' expecting '('
mismatched input '\t ! CLOSE options\n' expecting '('
* Multiple UNION statements are not well handled:
Code: Select all
STRUCTURE /TERM_DEF/
UNION
MAP
INTEGER*2 TERMINATOR_ARRAY(IP_MAXTRM)
END MAP
MAP
INTEGER*2 IC_NxtFld ! Prev Field
(more INTEGER*2 lines)...
UNION
MAP
INTEGER*2 IC_Search ! Search gegevens (OBSOLETE)
ENDMAP
MAP
INTEGER*2 IC_Search_SELECT ! Search gegevens
ENDMAP
ENDUNION
INTEGER*2 IC_SELECT ! Selecteer current gegeven
(more INTEGER*2 lines)...
END MAP
END UNION
END STRUCTURE
Code: Select all
no viable alternative at input 'UNION'
extraneous input 'UNION' expecting {TYPE, STRUCTURE, RECORD, PRIVATE, PUBLIC, END, DIMENSION, VIRTUAL, REAL, EQUIVALENCE, COMMON, POINTER, INTEGER, BYTE, NAMELIST, CHARACTER, VARCHAR, ALLOCATABLE, INTENT, OPTIONAL, EXTERNAL, INTRINSIC, INTERFACE, SAVE, TARGET, DATA, DOUBLE, COMPLEX, LOGICAL, I_CONST}
extraneous input 'ENDMAP' expecting {TYPE, STRUCTURE, RECORD, PRIVATE, PUBLIC, END, DIMENSION, VIRTUAL, REAL, EQUIVALENCE, COMMON, POINTER, INTEGER, BYTE, NAMELIST, CHARACTER, VARCHAR, ALLOCATABLE, INTENT, OPTIONAL, EXTERNAL, INTRINSIC, INTERFACE, SAVE, TARGET, DATA, DOUBLE, COMPLEX, LOGICAL, I_CONST}
no viable alternative at input 'ENDMAP\n'
no viable alternative at input 'END MAP'
mismatched input 'END' expecting {MAP, I_CONST}
mismatched input ' \n' expecting {MAP, EOS, I_CONST}
extraneous input 'ENDSTRUCTURE' expecting {TYPE, STRUCTURE, RECORD, UNION, PRIVATE, PUBLIC, END, DIMENSION, VIRTUAL, REAL, EQUIVALENCE, COMMON, POINTER, INTEGER, BYTE, NAMELIST, CHARACTER, VARCHAR, ALLOCATABLE, INTENT, OPTIONAL, EXTERNAL, INTRINSIC, INTERFACE, SAVE, TARGET, DATA, DOUBLE, COMPLEX, LOGICAL, I_CONST}
* Some comments are no longer acceptable:
Code: Select all
C .SEVERITY INFORMATIONAL
C .SEVERITY WARNING
C .SEVERITY ERROR
C .SEVERITY FATAL
* function statements without code are not accepted:
Code: Select all
INTEGER*4 FUNCTION TIME_Asc2Cmp
INTEGER*4 FUNCTION TIME_Cmp2Asc
CHARACTER*(*) FUNCTION TIME_Timestamp
Code: Select all
no viable alternative at input 'INTEGER*4 FUNCTION'
* comment lines that are within a definition cause a problem:
Code: Select all
parameter (hdrtext =
! 123456789012345678901234567890123456789012345678901234567890
1 'AAA BBB CCCC-dd-'//
1 'WG_PRINT TEST PRINT')
no viable alternative at input '\n!\t 123456789012345678901234567890123456789012345678901234567890'
extraneous input '\\n!\\t\t 123456789012345678901234567890123456789012345678901234567890' expecting {ONLY, ENTRY, TYPE, RECORDTYPE, RECORD, PRIVATE, PUBLIC, SEQUENCE, BLOCKSIZE, ENDFILE, DIMENSION, REAL, EQUIVALENCE, OPERATOR, ASSIGNMENT, ASSIGN, ALLOCATE, DEALLOCATE, NULLIFY, POINTER, IMPLICIT, NONE, NAMELIST, PARAMETER, ALLOCATABLE, INTENT, OPTIONAL, EXTERNAL, INTRINSIC, INTERFACE, SAVE, TARGET, DATA, DEFAULTFILE, CYCLE, EXIT, READWRITE, OPENED, FORMATTED, FORMAT, CONTAINS, RESULT, RECURSIVE, INQUIRE, BACKSPACE, REWIND, DELETE, UNLOCK, DESCR, REF, VAL, LOC, LNOT, TRUE, FALSE, '(', '-', '+', IN, OUT, STATUS, STAT, LOGICAL, KIND, LEN, FMT, NML, REC, ADVANCE, SIZE, EOR, UNIT, ERR, IOSTAT, LET, PRECISION, IOSTART, SEQUENTIAL, DIRECT, FILE, ACCESS, POSITION, ACTION, DELIM, PAD, FORM, RECL, BLANK, EXIST, NUMBER, NAMED, NAME, TITLE, UNFORMATTED, NEXTREC, IOLENGTH, ASSOCIATEVARIABLE, BUFFERCOUNT, BUFFERED, CARRIAGECONTROL, CONVERT, DISPOSE, DISP, EXTENDSIZE, INITIALSIZE, KEY, KEYID, KEYEQ, KEYGE, KEYLE, KEYGT, KEYLT, KEYNXT, KEYNXTNE, ASCENDING, DESCENDING, KEYED, MAXREC, NOSPANBLOCKS, ORGANIZATION, SHARED, S_CONST, I_CONST, H_CONST, B_CONST, O_CONST, Z_CONST, IDENTIFIER, R_CONST}
* 'dotted' comparison are not accepted:
Code: Select all
dowhile (i_status .ne. ss$_endoffile .and. i_Cnt .le.i_max)
* Where a structure contains "open" and/or "close" as fieldnames, this is not accepted (This strcuture is defined in one of the included files mentioned before):
Code: Select all
if (c_data(1:i_data_end) .eq. cp_append) then
Listdata.open = 1
elseif (c_data(1:i_data_end) .eq. cp_use) then
Listdata.open = 2
elseif (c_data(1:i_data_end) .eq. cp_over) then
Listdata.open = 3
endif
Code: Select all
no viable alternative at input 'Listdata.open'
no viable alternative at input 'Listdata.open'
mismatched input '=' expecting '('
* if...elseif...elseif...else...endif is not accepted:
Code: Select all
if (Listdata.open .eq. 0) then
WGLIB_print__info_openmode = cp_new
elseif (Listdata.open .eq. 1) then
WGLIB_print__info_openmode = cp_append
elseif (Listdata.open .eq. 2) then
WGLIB_print__info_openmode = cp_use
elseif (Listdata.open .eq. 3) then
WGLIB_print__info_openmode = cp_over
else
WGLIB_print__info_openmode = cp_undef
endif
Code: Select all
mismatched input 'elseif' expecting {<EOF>, END, I_CONST}
* inline comments are not (always) accepted:
Code: Select all
I_STATUS = SYS$QIOW( %val(1), !Efn
1 %val(IF_FMS.I2_TTCHAN), !Channel
1 %val(IO$_SETMODE .OR.
2 IO$M_CTRLCAST .OR.
2 IO$M_CTRLYAST), !Func
1 IOSB , !iosb
1 , !astadr
1 , !astprm
1 %VAL (I_ADDR), !p1 = ast ADDR
1 IF_FMS.I_CONTEXT, ! p2 = ast parameter
! = ADDR pointerblock
1 , ! p3
1 , ! p4
1 , ! p5
1 ) ! p6
Code: Select all
no viable alternative at input 'SYS$QIOW( %val(1),%val(IF_FMS.I2_TTCHAN),%val(IO$_SETMODE .OR.IO$M_CTRLCAST .OR.IO$M_CTRLYAST),IOSB ,,,%VAL (I_ADDR),IF_FMS.I_CONTEXT,\t! p2 = ast parameter\n'
Most annoying however is that synchronization did NOT remove version numbers....