Synch with files from VMS has some issues....
Posted: Sat Nov 06, 2021 9:45 am
VMS-IDE version 1.5.45
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:
now marks "endstructure" as an error:
in some sources, not in all. Same applies to other "end..." statements like "endmap". This is not entirely consistant: the second message may be shown on following "enstructure" lines where the first line is not shown.
* Other valid lines like:
in a structure show unexpected message:
on the comment.
* Multiple UNION statements are not well handled:
This shows the following messages:
but the code compiles without a problem.
* Some comments are no longer acceptable:
and others, where other comment lines have no problem at all
* function statements without code are not accepted:
Second and third lines are flagged
In Fortran compilation units:
* comment lines that are within a definition cause a problem:
give lines:
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:
Same applies to .eq., .gt. etc
* 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):
gives messages as:
on each of these lines where these fields are mentioned.
* if...elseif...elseif...else...endif is not accepted:
gives
on each elseif, else of endif line
* inline comments are not (always) accepted:
marks the comment after IF_FMS.I_context as wrong:
All these errors re-appear after I closed all files that are open, closed the folder, closed the IDE, and restarted IDE, opened the folder and opened any file that had these issues. But the code compiles and links without a problem.
Most annoying however is that synchronization did NOT remove version numbers....
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....