This routine provides more information about the system than is returned by the ACCEPT FROM SYSTEM-INFO statement.
CALL "WIN$VERSION" USING WINVERSION-DATA
WINVERSION-DATA Group item as follows: |
01 WINVERSION-DATA. 03 WIN-MAJOR-VERSION PIC X COMP-X. 03 WIN-MINOR-VERSION PIC X COMP-X. 03 WIN-PLATFORM PIC X COMP-X. 88 PLATFORM-WIN-31 VALUE 1. 88 PLATFORM-WIN-95 VALUE 2. 88 PLATFORM-WIN-9X VALUE 2. 88 PLATFORM-WIN-NT VALUE 3. 03 WIN-WORDSIZE PIC X COMP-X. 88 WIN-WORDSIZE-16 VALUE 1. 88 WIN-WORDSIZE-32 VALUE 2. 88 WIN-WORDSIZE-64 VALUE 3. 03 WIN-BUILDNUMBER PIC X(4) COMP-X. 03 WIN-CSDVERSION PIC X(128). 03 WIN-SERVICEPACK-MAJOR PIC X COMP-X. 03 WIN-SERVICEPACK-MINOR PIC X COMP-X. 03 WIN-SUITEMASK PIC X(4) COMP-X. 03 WIN-PRODUCTTYPE PIC X COMP-X. 88 WIN-NT-WORKSTATION VALUE 1. 88 WIN-NT-DOMAIN-CONTROLLER VALUE 2. 88 WIN-NT-SERVER VALUE 3. WINVERSION-DATA is found in the COPY library winvers.def. |
Upon return from WIN$VERSION, all of the data elements contained in WINVERSION-DATA are filled in. If you call WIN$VERSION and the host machine is not a Windows or Windows NT system, the fields are set to zero.
The WINVERSION-DATA fields have the following meaning:
Windows Version | WIN-MAJOR-VERSION | WIN-MINOR-VERSION | Other |
---|---|---|---|
Windows XP | 5 | 1 | Not applicable. |
Windows XP Professional x64 Edition | 5 | 2 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION) && (SYSTEM_INFO.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64 |
Windows Vista | 6 | 0 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
Windows 7 | 6 | 1 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
Windows Server 2012 | 6 | 2 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
Windows Server 2008 R2 | 6 | 1 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
Windows Server 2008 | 6 | 0 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
Windows Server 2003 R2 | 5 | 2 | GetSystemMetrics(SM_SERVERR2) != 0 |
Windows Home Sever | 5 | 2 | OSVERSIONINFOEX.wSuiteMask & VER_SUITE_WH_SERVER |
Windows Server 2003 | 5 | 2 | GetSystemMetrics(SM_SERVERR2) == 0 |