ID: Q32206
4.10 5.00 5.10 | 4.10 5.00 5.10
MS-DOS | OS/2
kbprg kbcode
The information in this article applies to:
When a huge array is allocated space, OS/2 allocates segments from the Segment Selector Table in increments of n+0i, n+1i, n+2i, etc., where "n" is the starting selector and "i" is the incremental value. The value of "i" must be determined at load time for different versions of the OS/2 and for different configurations of the similar versions. The way that huge addressing is performed under OS/2 is identical to the way in which MS-DOS accesses huge addresses. However, under MS-DOS, "i" is always 4,096.
Below is an example of how to obtain the value of "i" in a FORTRAN program. The value of "i" is 2 raised to the power returned by DosGetHugeShift. This information is discussed in detail in the Microsoft Press book "Inside OS/2" by Gordon Letwin, Section 9.2.2.
The following example shows how to obtain the value of "i" in a FORTRAN program:
INTERFACE TO INTEGER*2 FUNCTION DosGetHugeShift
+ [ALIAS: 'DOSGETHUGESHIFT'] (SHIFT)
INTEGER*2 SHIFT
END
INTEGER*2 SHIFT,DosGetHugeShift
INTEGER*2 I
I = DosGetHugeShift(SHIFT)
PRINT *,'DosGetHugeShift = ',SHIFT
PRINT *,'i = ',(2**SHIFT)
STOP
END
Additional reference words: kbinf 4.10 5.00 5.10
KBCategory: kbprg kbcode
KBSubcategory: FORTLngIss
Last Reviewed: April 30, 1998