Microsoft KB Archive/106527

From BetaArchive Wiki
< Microsoft KB Archive
Revision as of 10:08, 20 July 2020 by X010 (talk | contribs) (Text replacement - """ to """)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Knowledge Base


PSS ID Number: 106527

Article Last Modified on 3/24/2000



The information in this article applies to:

  • Microsoft FORTRAN PowerStation for MS-DOS 1.0



This article was previously published under Q106527

SYMPTOMS

Data corruption may occur after a call to GETFILEINFOQQ due to the NAME field of /FILE$INFO/ in FLIB.FI and FLIB.FD being declared character*13 instead of character*255. In some cases the following error:

run-time error F6316: array already allocated

may be produced.

CAUSE

Page 313 of the FORTRAN PowerStation "Language Guide" shows the structure of /FILE$INFO/, which is used to return information about the file that matches the search criteria. The NAME (of file) field is declared as character*255. However, the NAME field is declared only as character*13 in FLIB.FD and FLIB.FI. Therefore, using /FILE$INFO/ from FLIB.FD with GETFILEINFOQQ will cause data corruption because the character*13 field overflows.

RESOLUTION

In F32\INCLUDE\FLIB.FI and F32\INCLUDE\FLIB.FD change

CHARACTER*13 NAME ! Filename


to the following:

CHARACTER*255 NAME ! Filename


STATUS

Microsoft has confirmed this to be a problem in FORTRAN PowerStation version 1.0. This problem was corrected in FORTRAN PowerStation version 1.0a.

MORE INFORMATION

To demonstrate the problem (before making the above correction):

  1. In the Visual Workbench (VWB), build F32\SAMPLES\RUNTIME\RUNTIME.FOR with the project in debug mode.
  2. Set a breakpoint on line 166:

          length = GETFILEINFOQQ(files, info, handle)
                            
  3. "GO" (F5), and then enter *.FOR in the "F32 DEBUG" window.
  4. Open the Locals window (choose Locals from the Windows menu). Note the values of some integers such as IMIN (should be zero).
  5. Single step (F10). Note that IMIN now equals 8224 (hexadecimal 2020).
  6. In F32\INCLUDE\FLIB.FI and F32\INCLUDE\FLIB.FD, change NAME from CHARACTER*13 to CHARACTER*255.

7 Repeat steps 1-5. This time IMIN will remain zero.


Additional query words: 1.00 kbdocerr

Keywords: kbbug KB106527
Technology: kbAudDeveloper kbFORTRANPower100DOS kbFortranSearch kbZNotKeyword3