[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference clt::dec_pascal_bugs

Title:DEC Pascal Bug Reports
Notice:New kit announcement in TURRIS::Pascal conference
Moderator:TLE::GARRISON
Created:Wed Sep 09 1992
Last Modified:Fri May 30 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:838
Total number of notes:3659

822.0. "Packed record problem in V5.5-55" by HGOSPS::MICKWIDLAM () Fri Jan 24 1997 07:22

    A customer with a problem ran fine in VAX and was ported to Alpha. They
    have DEC Pascal V5.4 and this version returned error when they
    tried to
    use ADD_INTERLOCK. Then they upgrade their DEC Pascal to V5.5-55.
    This version gives another problem when they tried to use packed record.
    During compilation, a warning was prompted with command:
    
    $PASCAL/CHECK/OBJ=ABS$OBJ:ETSMAIN.OBJ ABS$SRC:ETSMAIN.PAS
    
    ADDRESS(DEUNA_setchar_buff.nma$c_pcli_bus_id);
    ...........................................^
    %PASCAL-W-PACKSTRUCT, Component of a PACKED structured type
    -PASCAL-I-NOTBEADDR,    - may not be parameter to ADDRESS at line
    number 2090 in file ABS$DEV:[ABS.SRC]ETSMAIN.PAS;2
    
    They ignored this warning and ran the program. The problem gave the
    error:
    
    %SYSTEM-F-BADPARAM, bad parameter value
    %SYSTEM-F-BADPARAM, bad parameter value
    
    when they were doing a QIO.
    
    Anyone seen similar case before?
    
    Regards,
    Mickwid.
T.RTitleUserPersonal
Name
DateLines
822.1TLE::REAGANAll of this chaos makes perfect senseFri Jan 24 1997 11:4719
    On VAX, the default alignment is "byte alignment".  Ie, fields in
    records are positioned on the next available byte unless otherwise
    specified.  On Alpha, the default alignment is "natural alignment".
    Ie, fields in records are positioned on a boundary that is based
    on the size of the field.
    
    Also, on VAX, BOOLEAN and enumerated types are a single byte big (
    larger enumerateds are a word big).  On Alpha, BOOLEANs and
    enumerated types are longword in size.
    
    You probably have a record that didn't lay out like you wanted.
    
    You can use the /ALIGN=VAX/ENUM=BYTE on the command line to get
    back to the VAX behavior.
    
    Have you look at the "Migrating from OpenVMS VAX to OpenVMS Alpha"
    in the Pascal manuals?
    
    				-John