home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / zfamily.zip / zfamily / ZHPFUNCS / HELP / ZHPFUNCS.INF (.txt) next >
OS/2 Help File  |  1993-11-19  |  60KB  |  1,811 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Document Content ΓòÉΓòÉΓòÉ
  3.  
  4. This document is made up of five parts: 
  5.  
  6. Library Card 
  7.    General information card for this library. 
  8.  
  9. Installation Guide 
  10.    How to install the Z Family/2 reusable library and how to use the installed 
  11.    files. 
  12.  
  13. User's Guide 
  14.    How to integrate the library with your application and how to call the 
  15.    corresponding functions and macros. 
  16.  
  17. Reference Manual 
  18.    Reference information for the functions, macros and structures provided by 
  19.    this library. 
  20.  
  21. Sample Program 
  22.    How to call and use the sample program. 
  23.  
  24.  
  25. ΓòÉΓòÉΓòÉ 2. Library card ΓòÉΓòÉΓòÉ
  26.  
  27.  
  28. ΓòÉΓòÉΓòÉ <hidden> Dummy ΓòÉΓòÉΓòÉ
  29.  
  30. Package:      ZHPFUNCS 
  31.  
  32. Library:      FMZHPFUN.DLL 
  33.  
  34. Version:      2.20 
  35.  
  36. Requirements: 
  37.  
  38.   OS/2 2.x, C Set/2 or IBM C/C++ Tools 2.0, Toolkit 2.x. 
  39.  
  40. Trademarks 
  41.  
  42.  
  43. ΓòÉΓòÉΓòÉ <hidden> Dummy ΓòÉΓòÉΓòÉ
  44.  
  45.  
  46. ΓòÉΓòÉΓòÉ <hidden> Dummy ΓòÉΓòÉΓòÉ
  47.  
  48. Contact:      Dr. Dario de Judicibus 
  49. IBMMAIL:      ITIBM98W 
  50. Internet:     ddj@vnet.ibm.com 
  51.  
  52.  
  53. ΓòÉΓòÉΓòÉ 3. Installation Guide ΓòÉΓòÉΓòÉ
  54.  
  55. Select one: 
  56.  
  57. Library installation 
  58.  
  59. The expanded tree 
  60.  
  61.  
  62. ΓòÉΓòÉΓòÉ 3.1. Library installation ΓòÉΓòÉΓòÉ
  63.  
  64. Select one: 
  65.  
  66. Γûá Package content
  67. Γûá How to install the library
  68.  
  69.  
  70. ΓòÉΓòÉΓòÉ 3.1.1. Package content ΓòÉΓòÉΓòÉ
  71.  
  72. FMZHPFUN.DLL is distributed as a package containing the following files: 
  73.  
  74.    ZHPFUNCS.ZIP            A compressed file which contains the library 
  75.                            modules. 
  76.    ZHPFUNCS.INF            The on-line documentation for this reusable library. 
  77.  
  78.  
  79. ΓòÉΓòÉΓòÉ 3.1.2. How to install the library ΓòÉΓòÉΓòÉ
  80.  
  81. To install the libraries, you have to perform the following steps: 
  82.  
  83.   1. Locate the directory of the CD-ROM, remote partition, or diskette where 
  84.      ZHPFUNCS.ZIP is placed. Let's say, for example, P:\ZFAMILY. 
  85.  
  86.   2. Move to the directory on your system where you want to install the 
  87.      reusable library. For example, move to D:\REUSE. 
  88.  
  89.   3. Unpack the ZIP file by using option -d. Note that the option must be lower 
  90.      case. In our case, issue the following command: 
  91.  
  92.            [D:\REUSE]  PKUNZIP2 -d P:\ZFAMILY\ZHPFUNCS.ZIP
  93.  
  94.   4. When the command finishes, a new directory is available on your system. In 
  95.      our example, P:\ZFAMILY\ZHP. This directory contains several 
  96.      sub-directories which contains all the files needed to use the reusable 
  97.      library. The directory tree is described in Library Tree. The content of 
  98.      each sub-directory is described in detail in Content of directories. 
  99.  
  100.   5. To use the library, you must now move the unpacked files to the 
  101.      appropriate directories in your development environment. In particular 
  102.      move 
  103.  
  104.     o the headers from .\ZHP\H to any directory listed in your INCLUDE 
  105.       environment variable. 
  106.  
  107.     o the import and/or object libraries from .\ZHP\LIB and .\ZHP\DEVEL to any 
  108.       directory listed in your LIB environment variable. 
  109.  
  110.     o the dynamic link libraries from .\ZHP\DLL to any directory listed in your 
  111.       LIBPATH environment variable. 
  112.  
  113.      You may also want to move this file from .\ZHP\HELP to any directory 
  114.      listed in your BOOKSHELF environment variable. 
  115.  
  116.  Now you are ready to work with the ZHP reusable library. 
  117.  
  118.  
  119. ΓòÉΓòÉΓòÉ 3.2. The expanded tree ΓòÉΓòÉΓòÉ
  120.  
  121. Select one: 
  122.  
  123. Γûá Library tree
  124. Γûá Content of directories
  125.  
  126.  
  127. ΓòÉΓòÉΓòÉ 3.2.1. Library tree ΓòÉΓòÉΓòÉ
  128.  
  129. When you unpack ZHPFUNCS.ZIP, a new sub-directory is created on your system: 
  130. ZHP. It has the following structure: 
  131.  
  132.   current dir
  133.   Γöé
  134.   Γöé ZHP
  135.   Γö£ΓöÇΓöÉ
  136.   Γöé Γö£ΓöÇΓöÇΓöÇΓöÇ H
  137.   . Γö£ΓöÇΓöÇΓöÇΓöÇ DLL
  138.   . Γö£ΓöÇΓöÇΓöÇΓöÇ LIB
  139.   . Γö£ΓöÇΓöÇΓöÇΓöÇ MRI
  140.   . Γö£ΓöÇΓöÇΓöÇΓöÇ HELP
  141.   . Γö£ΓöÇΓöÇΓöÇΓöÇ DEVEL
  142.   . ΓööΓöÇΓöÇΓöÇΓöÇ SAMPLE
  143.  
  144.  
  145. ΓòÉΓòÉΓòÉ 3.2.2. Content of directories ΓòÉΓòÉΓòÉ
  146.  
  147. Here is the list of the directories that are created when ZHPFUNCS.ZIP is 
  148. unpacked as described in How to install the library.  The content of each 
  149. directory is described in detail. 
  150.  
  151. The H sub-directory contains all the header files (H  and RCH) to be added to 
  152. the INCLUDE path of the application development environment. Move all the files 
  153. from this directory to the appropriate path in your environment. 
  154.  
  155.    Important If you use other Z Family/2 reusable libraries in your development 
  156.    environment, ensure that you are using the latest version of the zgeneral.h 
  157.    header file, which is available in all  the library packages. You may do 
  158.    that by comparing the update dates in the prologue of the header file. 
  159.  
  160.        /*
  161.        **  Module  : ZGENERAL.H
  162.        **  Authors : Dario de Judicibus (DEJUDICI at ROMEPPC)
  163.        **       Alessandro Cavallini (CAVALLI at ROMEPPC)
  164.        **       Giacomo Lenoci
  165.        **  Created : 10 Jan 1992
  166.        **  Updated : 01 Feb 1993
  167.        **  Version : 2.30
  168.        **  Content : General includes for all Z Family/2 DLLs
  169.        **  Product : Z Family/2 Project (5641-504) FMZ
  170.        **
  171.        */
  172.  
  173.  The DLL sub-directory contains all the dynamic link library or libraries (DLL) 
  174.  to be added to the LIBPATH path of the application development environment and 
  175.  of the run environment. Move all the files from this directory to the 
  176.  appropriate path in your environment. 
  177.  
  178.  The LIB sub-directory contains all the import library or libraries (LIB) to be 
  179.  added to the LIB path of the application development environment. Move all the 
  180.  files from this directory to the appropriate path in your environment. 
  181.  
  182.  The MRI sub-directory contains all the text that might be translated to other 
  183.  languages (see Machine Readable Information for additional information). 
  184.  
  185.  The HELP sub-directory contains the library documentation and a news file 
  186.  (ZHPNEWS.DOC) containing modifications applied at the last minute and not 
  187.  available in the on-line manuals, along with the history of changes. 
  188.  
  189.  The DEVEL sub-directory contains the object library or libraries (LIB) and the 
  190.  sample DEF and MAK files that can be used to generate your own DLL(s) (see 
  191.  Create your own library for details). 
  192.  
  193.  The SAMPLE sub-directory contains the source code and the executable code of 
  194.  the sample program. It doesn't contain the DLL file(s) so to run the sample, 
  195.  you must ensure that all the required DLL files have been copied to a 
  196.  directory in your LIBPATH. The DLL files for this library as well as those 
  197.  belonging on any pre-requisite Z Family/2 Reusable Library need to be in a 
  198.  directory in your LIBPATH. 
  199.  
  200.    Important If the library depends on other Z Family/2 reusable libraries, all 
  201.    the files belonging to the pre-requisite libraries will be part of the 
  202.    dependent library only in the beta versions of the package. 
  203.  
  204.    The final version won't contain any pre-requisite file.  That is true for 
  205.    the SAMPLE sub-directory too. So, you won't be able to recompile the sample 
  206.    program unless you install the pre-requisite packages too. 
  207.  
  208.  
  209. ΓòÉΓòÉΓòÉ 4. User's Guide ΓòÉΓòÉΓòÉ
  210.  
  211. Select one: 
  212.  
  213.  General information 
  214.  
  215.  Basic topics 
  216.  
  217.  Advanced topics 
  218.  
  219.  
  220. ΓòÉΓòÉΓòÉ 4.1. General information ΓòÉΓòÉΓòÉ
  221.  
  222. Select one: 
  223.  
  224. Γûá Library overview
  225. Γûá Include files
  226. Γûá Requirements
  227. Γûá Development rules
  228. Γûá Trademarks
  229.  
  230.  
  231. ΓòÉΓòÉΓòÉ 4.1.1. Library overview ΓòÉΓòÉΓòÉ
  232.  
  233. This library contains a set of functions to convert various type of data from 
  234. the S/370 format to that used in OS/2, and vice versa. The following data types 
  235. are supported: 
  236.  
  237.  o Dates and Times 
  238.  
  239.  o Short and Long Integers 
  240.  
  241.  o Single and Double Precision Floating Point Numbers 
  242.  
  243.  The data type formats for either S/370 and OS/2 are provided in Data formats. 
  244.  
  245.  
  246. ΓòÉΓòÉΓòÉ 4.1.2. Include files ΓòÉΓòÉΓòÉ
  247.  
  248. The system include files that are required to use this library are: 
  249.  
  250.  #define INCL_PM
  251.  #define INCL_DOS
  252.  #include <os2.h>
  253.  #include <stdio.h>
  254.  #include <stdlib.h>
  255.  #include <string.h>
  256.  #include <signal.h>
  257.  #include <stdarg.h>
  258.  
  259. The specific include files that are required to use this library are: 
  260.  
  261.  zgeneral.h 
  262.       Definitions and types for all Z Family/2 Reusable Libraries. 
  263.  
  264.  zhpdefs.h 
  265.       Macro and constants for this library. 
  266.  
  267.  zhptypes.h 
  268.       Type definitions for this library. 
  269.  
  270.  zhpproto.h 
  271.       Function prototypes for this library. 
  272.  
  273.  Note:  The specific includes must be included in the order as listed above. 
  274.  
  275.  
  276. ΓòÉΓòÉΓòÉ 4.1.3. Requirements ΓòÉΓòÉΓòÉ
  277.  
  278. FMZHPFUN.DLL is intended to run under OS/2 2.x.  It doesn't run under previous 
  279. versions of OS/2. 
  280.  
  281. FMZHPFUN.DLL has been compiled by IBM C/C++ Tools 2.0 and statically linked to 
  282. the C run-time libraries. Then you don't need the run-time libraries to use it. 
  283.  
  284. Notes 
  285.  
  286. FMZHPFUN.DLL functions can be called either from C or from C++. In addition, an 
  287. exception handler is registered for each exported function. 
  288.  
  289. A sample program that shows how to use FMZHPFUN.DLL functions is also provided 
  290. in the DLL's package. A short description of that sample is available in Sample 
  291. program tutorial. 
  292.  
  293. The sample program uses the IMPORTS statement in its .DEF to import the 
  294. FMZHPFUN.DLL functions. File FMZHPFUN.LIB is also provided as an alternative 
  295. solution. 
  296.  
  297. It is also possible to create a clone of FMZHPFUN.DLL by using the files 
  298. available in the DEVEL sub-directory of the tree created by exploding the ZIP 
  299. file distributed with the package (see Create your own library). 
  300.  
  301.  
  302. ΓòÉΓòÉΓòÉ 4.1.4. Development rules ΓòÉΓòÉΓòÉ
  303.  
  304. To safely integrate any Z Family/2 reusable library in your application, you 
  305. need to follow a simple set of rules: 
  306.  
  307.   1. Do not use names beginning by a lower case "z" for 
  308.  
  309.     o functions 
  310.     o macros 
  311.     o global structures 
  312.     o types 
  313.     o constants 
  314.     o #define 
  315.     o global variables 
  316.  
  317.   2. Do not use names beginning by a "z" for 
  318.  
  319.     o include files (.H) 
  320.     o dynamic link libraries (.DLL) 
  321.  
  322.  Follow these rules and your code can take full advantage of the services 
  323.  provided by the current and future Z Family Reusable Libraries/2. 
  324.  
  325.  
  326. ΓòÉΓòÉΓòÉ 4.1.5. Trademarks ΓòÉΓòÉΓòÉ
  327.  
  328. IBM Z Family/2 Reusable Libraries is copyrighted by IBM Corporation. 
  329.  
  330. IBM Corporation trademarks 
  331.  
  332.  CUA
  333.  Common User Access
  334.  IBM
  335.  IBM C Set/2
  336.  IBM C/C++ Tools
  337.  Operating System/2
  338.  OS/2
  339.  Presentation Manager
  340.  SAA
  341.  Systems Application Architecture
  342.  Workplace Shell
  343.  
  344. Other trademarks 
  345.  
  346.  Intel is a trademark of the Intel Corporation.
  347.  Microsoft and Windows are trademarks of the Microsoft Corporation.
  348.  PKZIP and PKUNZIP are trademarks of the PKWare Corporation.
  349.  80386 is a trademark of the Intel Corporation.
  350.  
  351.  
  352. ΓòÉΓòÉΓòÉ 4.2. Basic topics ΓòÉΓòÉΓòÉ
  353.  
  354. Select one: 
  355.  
  356. Γûá Design notices
  357. Γûá Data formats
  358. Γûá Floating Point Numbers
  359.  
  360.  
  361. ΓòÉΓòÉΓòÉ 4.2.1. Design notices ΓòÉΓòÉΓòÉ
  362.  
  363.    Important 
  364.  
  365.    The ZHP functions do not check the input values. They perform only the 
  366.    conversion of input strings and numbers according to specific algorithms. 
  367.  
  368.    If you want to check if the input value is valid, you must code your own 
  369.    controls, or use another Z Family/2 library which provides such services 
  370.    (e.g. ZIS or ZNL libraries). 
  371.  
  372.  
  373. ΓòÉΓòÉΓòÉ 4.2.2. Data formats ΓòÉΓòÉΓòÉ
  374.  
  375. Select one: 
  376.  
  377. Γûá Date formats
  378. Γûá Time formats
  379. Γûá Short integer formats
  380. Γûá Long integer formats
  381. Γûá Single precision floating point number formats
  382. Γûá Double precision floating point number formats
  383.  
  384.  
  385. ΓòÉΓòÉΓòÉ 4.2.2.1. Date formats ΓòÉΓòÉΓòÉ
  386.  
  387. S/370 Packed Format 
  388.  
  389.   ΓöîΓöÇΓö¼ΓöÇΓöÉΓöîΓöÇΓö¼ΓöÇΓöÉΓöîΓöÇΓö¼ΓöÇΓöÉΓöîΓöÇΓö¼ΓöÇΓöÉ
  390.   Γöéy yΓöéΓöéy mΓöéΓöém dΓöéΓöéd FΓöé         4 BYTES
  391.   ΓööΓöÇΓö┤ΓöÇΓöÿΓööΓöÇΓö┤ΓöÇΓöÿΓööΓöÇΓö┤ΓöÇΓöÿΓööΓöÇΓö┤ΓöÇΓöÿ
  392.    Γöé Γöé  Γöé Γöé  Γöé Γöé  Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Filler (0xF)
  393.    Γöé Γöé  Γöé Γöé  Γöé Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 2nd digit of day
  394.    Γöé Γöé  Γöé Γöé  Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 1st digit of day
  395.    Γöé Γöé  Γöé Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 2nd digit of month
  396.    Γöé Γöé  Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 1st digit of month
  397.    Γöé Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 4th digit of year
  398.    Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 3st digit of year
  399.    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 2nd digit of (year - 1900)
  400.  
  401. OS/2 Sorted String Format 
  402.  
  403.   ΓöîΓö¼ΓöÉΓöîΓö¼ΓöÉΓöîΓö¼ΓöÉΓöîΓö¼ΓöÉΓöîΓö¼ΓöÉΓöîΓö¼ΓöÉΓöîΓö¼ΓöÉΓöîΓö¼ΓöÉΓöîΓö¼ΓöÉ
  404.   ΓöéMΓöéΓöéCΓöéΓöéYΓöéΓöéYΓöéΓöémΓöéΓöémΓöéΓöédΓöéΓöédΓöéΓöé0Γöé  9 BYTES
  405.   ΓööΓö┤ΓöÿΓööΓö┤ΓöÿΓööΓö┤ΓöÿΓööΓö┤ΓöÿΓööΓö┤ΓöÿΓööΓö┤ΓöÿΓööΓö┤ΓöÿΓööΓö┤ΓöÿΓööΓö┤Γöÿ
  406.    Γöé  Γöé  Γöé  Γöé  Γöé  Γöé  Γöé  Γöé  ΓööΓöÇΓöÇ Terminator (0x00)
  407.    Γöé  Γöé  Γöé  Γöé  Γöé  Γöé  Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇ 2nd digit of day
  408.    Γöé  Γöé  Γöé  Γöé  Γöé  Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 1st digit of day
  409.    Γöé  Γöé  Γöé  Γöé  Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 2nd digit of month
  410.    Γöé  Γöé  Γöé  Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 1st digit of month
  411.    Γöé  Γöé  Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 4th digit of year
  412.    Γöé  Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 3st digit of year
  413.    Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 2nd digit of year (century)
  414.    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 1st digit of year (millenium)
  415.  
  416.  
  417. ΓòÉΓòÉΓòÉ 4.2.2.2. Time formats ΓòÉΓòÉΓòÉ
  418.  
  419. S/370 Packed Format 
  420.  
  421.   ΓöîΓöÇΓö¼ΓöÇΓöÉΓöîΓöÇΓö¼ΓöÇΓöÉΓöîΓöÇΓö¼ΓöÇΓöÉΓöîΓöÇΓö¼ΓöÇΓöÉ
  422.   Γöé0 hΓöéΓöéh mΓöéΓöém sΓöéΓöés FΓöé         4 BYTES
  423.   ΓööΓöÇΓö┤ΓöÇΓöÿΓööΓöÇΓö┤ΓöÇΓöÿΓööΓöÇΓö┤ΓöÇΓöÿΓööΓöÇΓö┤ΓöÇΓöÿ
  424.    Γöé Γöé  Γöé Γöé  Γöé Γöé  Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Filler (0xF)
  425.    Γöé Γöé  Γöé Γöé  Γöé Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 2nd digit of seconds
  426.    Γöé Γöé  Γöé Γöé  Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 1st digit of seconds
  427.    Γöé Γöé  Γöé Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 2nd digit of minutes
  428.    Γöé Γöé  Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 1st digit of minutes
  429.    Γöé Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 2nd digit of hours
  430.    Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 1st digit of hours
  431.    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Filler (0x0)
  432.  
  433.  OS/2 Sorted String Format 
  434.  
  435.   ΓöîΓö¼ΓöÉΓöîΓö¼ΓöÉΓöîΓö¼ΓöÉΓöîΓö¼ΓöÉΓöîΓö¼ΓöÉΓöîΓö¼ΓöÉΓöîΓö¼ΓöÉΓöîΓö¼ΓöÉΓöîΓö¼ΓöÉ
  436.   ΓöéhΓöéΓöéhΓöéΓöémΓöéΓöémΓöéΓöésΓöéΓöésΓöéΓöé ΓöéΓöé ΓöéΓöé0Γöé  9 BYTES
  437.   ΓööΓö┤ΓöÿΓööΓö┤ΓöÿΓööΓö┤ΓöÿΓööΓö┤ΓöÿΓööΓö┤ΓöÿΓööΓö┤ΓöÿΓööΓö┤ΓöÿΓööΓö┤ΓöÿΓööΓö┤Γöÿ
  438.    Γöé  Γöé  Γöé  Γöé  Γöé  Γöé  Γöé  Γöé  ΓööΓöÇΓöÇ Terminator (0x00)
  439.    Γöé  Γöé  Γöé  Γöé  Γöé  Γöé  Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇ Filler (space)
  440.    Γöé  Γöé  Γöé  Γöé  Γöé  Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Filler (space)
  441.    Γöé  Γöé  Γöé  Γöé  Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 2nd digit of seconds
  442.    Γöé  Γöé  Γöé  Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 1st digit of seconds
  443.    Γöé  Γöé  Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 2nd digit of minutes
  444.    Γöé  Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 1st digit of minutes
  445.    Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 2nd digit of hours
  446.    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 1st digit of hours
  447.  
  448.  
  449. ΓòÉΓòÉΓòÉ 4.2.2.3. Short integer formats ΓòÉΓòÉΓòÉ
  450.  
  451. S/370 16-bit Format 
  452.  
  453.   ΓöîΓöÇΓö¼ΓöÇΓöÉΓöîΓöÇΓö¼ΓöÇΓöÉ
  454.   Γöé 1 ΓöéΓöé 0 Γöé                   2 BYTES
  455.   ΓööΓöÇΓö┤ΓöÇΓöÿΓööΓöÇΓö┤ΓöÇΓöÿ
  456.    Γöé Γöé  Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from  0 to  3
  457.    Γöé Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from  4 to  7
  458.    Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from  8 to 11
  459.    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from 12 to 15
  460.  
  461. OS/2 Short Integer Format 
  462.  
  463.   ΓöîΓöÇΓö¼ΓöÇΓöÉΓöîΓöÇΓö¼ΓöÇΓöÉ
  464.   Γöé 0 ΓöéΓöé 1 Γöé                   2 BYTES
  465.   ΓööΓöÇΓö┤ΓöÇΓöÿΓööΓöÇΓö┤ΓöÇΓöÿ
  466.    Γöé Γöé  Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from  8 to 11
  467.    Γöé Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from 12 to 15
  468.    Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from  0 to  3
  469.    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from  4 to  7
  470.  
  471.  
  472. ΓòÉΓòÉΓòÉ 4.2.2.4. Long Integer formats ΓòÉΓòÉΓòÉ
  473.  
  474. S/370 32-bit Format 
  475.  
  476.   ΓöîΓöÇΓö¼ΓöÇΓöÉΓöîΓöÇΓö¼ΓöÇΓöÉΓöîΓöÇΓö¼ΓöÇΓöÉΓöîΓöÇΓö¼ΓöÇΓöÉ
  477.   Γöé 3 ΓöéΓöé 2 ΓöéΓöé 1 ΓöéΓöé 0 Γöé         4 BYTES
  478.   ΓööΓöÇΓö┤ΓöÇΓöÿΓööΓöÇΓö┤ΓöÇΓöÿΓööΓöÇΓö┤ΓöÇΓöÿΓööΓöÇΓö┤ΓöÇΓöÿ
  479.    Γöé Γöé  Γöé Γöé  Γöé Γöé  Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from  0 to  3
  480.    Γöé Γöé  Γöé Γöé  Γöé Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from  4 to  7
  481.    Γöé Γöé  Γöé Γöé  Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from  8 to 11
  482.    Γöé Γöé  Γöé Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from 12 to 15
  483.    Γöé Γöé  Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from 16 to 19
  484.    Γöé Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from 20 to 23
  485.    Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from 24 to 27
  486.    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from 28 to 31
  487.  
  488. OS/2 Long Integer Format 
  489.  
  490.   ΓöîΓöÇΓö¼ΓöÇΓöÉΓöîΓöÇΓö¼ΓöÇΓöÉΓöîΓöÇΓö¼ΓöÇΓöÉΓöîΓöÇΓö¼ΓöÇΓöÉ
  491.   Γöé 0 ΓöéΓöé 1 ΓöéΓöé 2 ΓöéΓöé 3 Γöé         4 BYTES
  492.   ΓööΓöÇΓö┤ΓöÇΓöÿΓööΓöÇΓö┤ΓöÇΓöÿΓööΓöÇΓö┤ΓöÇΓöÿΓööΓöÇΓö┤ΓöÇΓöÿ
  493.    Γöé Γöé  Γöé Γöé  Γöé Γöé  Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from 24 to 27
  494.    Γöé Γöé  Γöé Γöé  Γöé Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from 28 to 31
  495.    Γöé Γöé  Γöé Γöé  Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from 16 to 19
  496.    Γöé Γöé  Γöé Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from 20 to 23
  497.    Γöé Γöé  Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from  8 to 11
  498.    Γöé Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from 12 to 15
  499.    Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from  0 to  3
  500.    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ Bits from  4 to  7
  501.  
  502.  
  503. ΓòÉΓòÉΓòÉ 4.2.2.5. Single precision floating point number formats ΓòÉΓòÉΓòÉ
  504.  
  505. S/370 Format 
  506.  
  507.   ΓöîΓö¼Γö¼Γö¼Γö¼Γö¼Γö¼Γö¼ΓöÉΓöîΓö¼Γö¼Γö¼Γö¼Γö¼Γö¼Γö¼ΓöÉΓöîΓö¼Γö¼Γö¼Γö¼Γö¼Γö¼Γö¼ΓöÉΓöîΓö¼Γö¼Γö¼Γö¼Γö¼Γö¼Γö¼ΓöÉ
  508.   Γöé   +   ΓöéΓöé   +   ΓöéΓöé   +   ΓöéΓöé   +   Γöé
  509.   ΓööΓö┤Γö┤Γö┤Γö┤Γö┤Γö┤Γö┤ΓöÿΓööΓö┤Γö┤Γö┤Γö┤Γö┤Γö┤Γö┤ΓöÿΓööΓö┤Γö┤Γö┤Γö┤Γö┤Γö┤Γö┤ΓöÿΓööΓö┤Γö┤Γö┤Γö┤Γö┤Γö┤Γö┤Γöÿ
  510.   ΓööΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  511.   Γöé   Γöé                 ΓööΓöÇΓöÇΓöÇΓöÇΓöÇ 24 bits : fraction
  512.   Γöé   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  7 bits : exponent
  513.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  1 bit  : sign
  514.  
  515.    value = (-1)[s] * 16[(e - 64)] * .f
  516.  
  517.    range = 5E-79 ... 7E+75
  518.  
  519. OS/2 IEEE Format 
  520.  
  521.   ΓöîΓö¼Γö¼Γö¼Γö¼Γö¼Γö¼Γö¼ΓöÉΓöîΓö¼Γö¼Γö¼Γö¼Γö¼Γö¼Γö¼ΓöÉΓöîΓö¼Γö¼Γö¼Γö¼Γö¼Γö¼Γö¼ΓöÉΓöîΓö¼Γö¼Γö¼Γö¼Γö¼Γö¼Γö¼ΓöÉ
  522.   Γöé   +   ΓöéΓöé   +   ΓöéΓöé   +   ΓöéΓöé   +   Γöé
  523.   ΓööΓö┤Γö┤Γö┤Γö┤Γö┤Γö┤Γö┤ΓöÿΓööΓö┤Γö┤Γö┤Γö┤Γö┤Γö┤Γö┤ΓöÿΓööΓö┤Γö┤Γö┤Γö┤Γö┤Γö┤Γö┤ΓöÿΓööΓö┤Γö┤Γö┤Γö┤Γö┤Γö┤Γö┤Γöÿ
  524.   ΓööΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  525.   Γöé     Γöé              ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 23 bits : fraction
  526.   Γöé     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  8 bits : exponent
  527.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  1 bit  : sign
  528.  
  529.    value = (-1)[s] * 2[(e - 127)] * 1.f
  530.  
  531.    range = 1E-38 ... 3E+38
  532.  
  533.  
  534. ΓòÉΓòÉΓòÉ 4.2.2.6. Double precision floating point number formats ΓòÉΓòÉΓòÉ
  535.  
  536. S/370 Format 
  537.  
  538.                       5 bytes
  539.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  540.   ΓöîΓö¼Γö¼Γö¼Γö¼Γö¼Γö¼Γö¼ΓöÉΓöîΓö¼Γö¼Γö¼Γö¼Γö¼Γö¼Γö¼ΓöÉΓöîΓö¼Γö¼     Γö¼Γö¼ΓöÉΓöîΓö¼Γö¼Γö¼Γö¼Γö¼Γö¼Γö¼ΓöÉ
  541.   Γöé   +   ΓöéΓöé   +   ΓöéΓöé         ΓöéΓöé   +   Γöé
  542.   ΓööΓö┤Γö┤Γö┤Γö┤Γö┤Γö┤Γö┤ΓöÿΓööΓö┤Γö┤Γö┤Γö┤Γö┤Γö┤Γö┤ΓöÿΓööΓö┤Γö┤     Γö┤Γö┤ΓöÿΓööΓö┤Γö┤Γö┤Γö┤Γö┤Γö┤Γö┤Γöÿ
  543.   ΓööΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  544.   Γöé   Γöé                  ΓööΓöÇΓöÇΓöÇΓöÇ 56 bits : fraction
  545.   Γöé   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  7 bits : exponent
  546.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  1 bit  : sign
  547.  
  548.    value = (-1)[s] * 16[(e - 64)] * .f
  549.  
  550.    range = 5E-79 ... 7E+75
  551.  
  552. OS/2 IEEE Format 
  553.  
  554.                       5 bytes
  555.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  556.   ΓöîΓö¼Γö¼Γö¼Γö¼Γö¼Γö¼Γö¼ΓöÉΓöîΓö¼Γö¼Γö¼Γö¼Γö¼Γö¼Γö¼ΓöÉΓöîΓö¼Γö¼     Γö¼Γö¼ΓöÉΓöîΓö¼Γö¼Γö¼Γö¼Γö¼Γö¼Γö¼ΓöÉ
  557.   Γöé   +   ΓöéΓöé   +   ΓöéΓöé         ΓöéΓöé   +   Γöé
  558.   ΓööΓö┤Γö┤Γö┤Γö┤Γö┤Γö┤Γö┤ΓöÿΓööΓö┤Γö┤Γö┤Γö┤Γö┤Γö┤Γö┤ΓöÿΓööΓö┤Γö┤     Γö┤Γö┤ΓöÿΓööΓö┤Γö┤Γö┤Γö┤Γö┤Γö┤Γö┤Γöÿ
  559.   ΓööΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  560.   Γöé      Γöé               ΓööΓöÇΓöÇΓöÇΓöÇ 52 bits : fraction
  561.   Γöé      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ 11 bits : exponent
  562.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  1 bit  : sign
  563.  
  564.    value = (-1)[s] * 2[(e - 1023)] * 1.f
  565.  
  566.    range = 2E-308 ... 3E+308
  567.  
  568.  
  569. ΓòÉΓòÉΓòÉ 4.2.3. Floating Point Numbers ΓòÉΓòÉΓòÉ
  570.  
  571. Floating point numbers in the host environment are different from those in the 
  572. PC environment in both data format and data range. In fact, the IEEE format 
  573. used for OS/2 floating point numbers defines two different ranges for single 
  574. and double precision, whereas the S/370 range is the same in both cases: 
  575.  
  576.            ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  577.            Γöé    MINIMUM    Γöé   MAXIMUM    Γöé
  578.            Γöé    VALUE    Γöé    VALUE    Γöé
  579. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  580. Γöé Format       Γöé  IEEE  Γöé  S370  Γöé  IEEE  Γöé  S370  Γöé
  581. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  582. Γöé Single precision  Γöé  1E-38  Γöé  5E-79  Γöé  3E+38  Γöé 7E+75  Γöé
  583. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  584. Γöé Double precision  Γöé 2E-308  Γöé  5E-79  Γöé 3E+308  Γöé 7E+75  Γöé
  585. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  586.  
  587. Because the two ranges are not equivalent, the conversion services are not 
  588. perfectly biunivocal. Magnitudes which underflow [overflow] during conversion 
  589. are converted to zero [the largest representable number]. 
  590.  
  591. In addition, because the number of bytes used for the fraction section of the 
  592. data format (see Single precision floating point number formats and Double 
  593. precision floating point number formats) is not the same in IEEE and S/370 
  594. formats, conversion is not strictly reversible, that is: 
  595.  
  596.  
  597.  PtoH (x) HtoP  &nidentical. HtoP (x) PtoH  ╨║= I
  598.  
  599.  where  PtoH  is the conversion from IEEE (PC) to S/370 (Host) format
  600.     HtoP  is the conversion from S/370 (Host) to IEEE (PC) format
  601.  
  602.     I   is the conversion from a format to itself (identity)
  603.  
  604. The consequence is that the least significant bits are unreliable, as in the 
  605. following example: 
  606.  
  607.  Converting from IEEE to S/370 format a single precision floating point
  608.  number:
  609.  
  610.   PtoH 0x80866423  0xA142B211
  611.  
  612.  
  613.  Converting back from S/370 to IEEE format the result of the previous
  614.  conversion:
  615.  
  616.   HtoP 0xA142B211  0x80856420
  617.  
  618.  
  619. ΓòÉΓòÉΓòÉ 4.3. Advanced topics ΓòÉΓòÉΓòÉ
  620.  
  621. Select one: 
  622.  
  623. Γûá Machine Readable Information
  624. Γûá Signal handling
  625. Γûá Create your own library
  626. Γûá How to generate the clone
  627. Γûá How to use the object library
  628.  
  629.  
  630. ΓòÉΓòÉΓòÉ 4.3.1. Machine Readable Information ΓòÉΓòÉΓòÉ
  631.  
  632. If the library contains translatable pieces of information, they are contained 
  633. in resource files available in the MRI sub-directory of the ZHP directory, 
  634. created at installation time (see Installation). 
  635.  
  636. To use these resource files, move all the header files in the H sub-directory 
  637. to the appropriate path in your development environment, translate the resource 
  638. files to the target language, recompile the file by using the command 
  639.  
  640.  rc -r <resource>.RC
  641.  
  642. to generate the corresponding RES file, and apply the result to the DLL file by 
  643. using the command 
  644.  
  645.  rc <resource>.RES <name>.DLL
  646.  
  647. Note that <name> is not FMZHPFUN but the name of the DLL cloned as described in 
  648. Create your own library. 
  649.  
  650.  
  651. ΓòÉΓòÉΓòÉ 4.3.2. Signal handling ΓòÉΓòÉΓòÉ
  652.  
  653. FMZHPFUN.DLL enables the handling of signals as follows. 
  654.  
  655. First, each exported function is preceeded in code by the corresponding pragma 
  656. handler: 
  657.  
  658.    Sample 
  659.  
  660.        #pragma handler(zhpLibraryVersion)
  661.  
  662.        VOID EXPENTRY zhpLibraryVersion
  663.         .
  664.         .
  665.         .
  666.  
  667.  Second, a standard function, available in any Z Family/2 reusable library, is 
  668.  provided to register a user's signal handler: zhpRegisterSignal (see 
  669.  zhpRegisterSignal). 
  670.  
  671.  The user's signal handler is a function that accepts as input parameter an 
  672.  integer, and returns a void. Here is a sample signal handler: 
  673.  
  674.    Sample 
  675.  
  676.        void UserSignalHandler (int signal)
  677.        {
  678.         switch (signal)
  679.         {
  680.          case SIGILL  : /* Prepare to handle SIGILL  */ break ;
  681.          case SIGSEGV : /* Prepare to handle SIGSEGV  */ break ;
  682.          case SIGFPE  : /* Prepare to handle SIGFPE  */ break ;
  683.          case SIGTERM : /* Prepare to handle SIGTERM  */ break ;
  684.          case SIGABRT : /* Prepare to handle SIGABRT  */ break ;
  685.          case SIGINT  : /* Prepare to handle SIGINT  */ break ;
  686.          case SIGUSR1 : /* Prepare to handle SIGUSR1  */ break ;
  687.          case SIGUSR2 : /* Prepare to handle SIGUSR2  */ break ;
  688.          case SIGUSR3 : /* Prepare to handle SIGUSR3  */ break ;
  689.          case SIGBREAK: /* Prepare to handle SIGBREAK */ break ;
  690.          default    : /* Unknown signal       */ break ;
  691.         }
  692.  
  693.         /*
  694.         **  Handle the received signal according to the previous
  695.         **  preparation. In general, show a message and terminate
  696.         **  the program.
  697.         */
  698.  
  699.        }
  700.  
  701.  
  702. ΓòÉΓòÉΓòÉ 4.3.3. Create your own library ΓòÉΓòÉΓòÉ
  703.  
  704. It is possible for the reuser to decide to clone a Z Family/2 reusable library 
  705. with a different name.  Since the source code is not available to reusers, it 
  706. is possible to do that by using the files in the DEVEL sub-directory. 
  707.  
  708.    Important These files are not intended to be used as they are, but should be 
  709.    modified as described below. 
  710.  
  711.  The DEVEL directory contains at least  four files: 
  712.  
  713.  ZHPFUNCS.LIB        An object library 
  714.  ZHPFUNCS.DEF        A skeleton for the definition file 
  715.  ZHPCLONE.MAK        A skeleton for the make file 
  716.  ZHPSTUB.C           A stub file used to generate the library 
  717.  
  718.  In addition, it may also contain one or more resource files, that is 
  719.  ZHPxxxxx.RES files. 
  720.  
  721.    Important 
  722.  
  723.    This library may need to load resources from itself, or to get its module 
  724.    handle. If you clone the library and change its name, it has no way to 
  725.    automatically know which is its new name. So you need to tell it about. You 
  726.    can do that by using the zhpSetLibraryName() function. 
  727.  
  728.  
  729. ΓòÉΓòÉΓòÉ 4.3.4. Create your own library ΓòÉΓòÉΓòÉ
  730.  
  731. To generate a clone of FMZHPFUN.DLL with a different name, you have to execute 
  732. the following steps: 
  733.  
  734.   1. Edit ZHPCLONE.MAK (see Skeleton of a makefile to clone a Z Family/2 DLL) 
  735.      changing USRNAME to the desired name. Let's say, for example, DLLCLONE. 
  736.      You may add other instructions to this make file, but be careful if you 
  737.      change the existing ones.  In particular, the OPTIONS constant contains 
  738.      the same options used to compile FMZHPFUN.DLL. If you change them, the new 
  739.      DLL may not work as expected. 
  740.  
  741.      Skeleton of a makefile to clone a Z Family/2 DLL 
  742.  
  743.           #
  744.           #  Module   : ZxxCLONE.MAK
  745.           #  Authors  : Luca Miccoli (MICCOLI at ROMEPPC)
  746.           #  Reviewer  : Dario de Judicibus (DEJUDICI at ROMEPPC)
  747.           #  Created  : 06 Apr 1993
  748.           #  Reviewed  : 21 Apr 1993
  749.           #  Version  : 1.00
  750.           #  Content  : Make File for Z Family/2 Clones
  751.           #
  752.           #  ------------------------------------------------------------------------------
  753.           #
  754.           #  NOTE : This is a SAMPLE makefile. You may need to modify it to satisfy your
  755.           #     specific needs. You may also want to include it in a larger MAKE file
  756.           #     which is used to generate your application. In any case, read carefully
  757.           #     the comments below and the "User's Guide", to understand what you can
  758.           #     change, and what should be used as is.
  759.           #  ------------------------------------------------------------------------------
  760.  
  761.           #
  762.           #  User provided name of the .DLL (to be filled)
  763.           #
  764.           USRNAME = ________
  765.  
  766.           STBNAME = zxxstub
  767.           INTNAME = zxxfuncs
  768.           RESNAME = zxxrsrcs
  769.  
  770.           #
  771.           #  Do not change OPTIONS unless really needed. They SHOULD match the original ones.
  772.           #
  773.           OPTIONS = /Kb /Ge- /Sm /Ss /Gd- /Gm+ /Ms /I-
  774.           LINKOPT = /NOI
  775.  
  776.           #
  777.           #  MAKE file generates a DLL and the corresponding IMPORT library having the
  778.           #  name specified as USRNAME above.
  779.           #
  780.           all: $(USRNAME).dll $(USRNAME).lib
  781.  
  782.           #
  783.           #  STUB should be compiled by using the same options used for Z Family/2 DLL
  784.           #
  785.           $(STBNAME).obj: $(STBNAME).c
  786.             icc /C+ $(OPTIONS) $(STBNAME).c
  787.  
  788.           #
  789.           #  Use STUB and Z Family/2 OBJECT library to generate the User's Cloned DLL
  790.           #  Use $(INTNAME).def to make your $(USRNAME).def, changing the name after
  791.           #  LIBRARY (first instruction of the definition file).
  792.           #
  793.           $(USRNAME).dll: $(STBNAME).obj $(INTNAME).lib $(USRNAME).def $(RESNAME).res
  794.            link386 $(LINKOPT) $(STBNAME).obj,$(USRNAME).dll,,$(INTNAME).lib,$(USRNAME).def ;
  795.            rc $(RESNAME).res $(USRNAME).dll
  796.  
  797.           #
  798.           #  Use the User's Cloned DLL to generate the corresponding IMPORT library
  799.           #
  800.           $(USRNAME).lib: $(USRNAME).dll $(USRNAME).def
  801.            implib $(USRNAME).lib $(USRNAME).def
  802.  
  803.   2. Edit ZHPFUNCS.DEF (see Skeleton of a definition to clone a Z Family/2 DLL) 
  804.      changing the name after LIBRARY  keyword to the desired name, that is, 
  805.      DLLCLONE. 
  806.  
  807.      Skeleton of a definition to clone a Z Family/2 DLL 
  808.  
  809.           ;
  810.           ; Module   : ZxxFUNCS.DEF
  811.           ; Authors  : Dario de Judicibus (DEJUDICI at ROMEPPC)
  812.           ;       Mario Turaccio (TURACCIO at ROMEPPC)
  813.           ; Reviewer  : Dario de Judicibus (DEJUDICI at ROMEPPC)
  814.           ; Created  : 21 Oct 1991
  815.           ; Updated  : 01 Apr 1993
  816.           ; Version  : 1.00
  817.           ; Content  : Module Definition File for FMZLXFUN.DLL
  818.           ; Product  : Z Family/2 Project (5641-504) FMZ
  819.           ;
  820.  
  821.           LIBRARY FMZxxFUN INITINSTANCE TERMINSTANCE
  822.           DESCRIPTION '... , Z Family/2 5641-504 (C) Copyright IBM Corporation 1993,1994.'
  823.  
  824.           PROTMODE
  825.           CODE  LOADONCALL
  826.           DATA  MULTIPLE READWRITE NONSHARED
  827.           HEAPSIZE  32768
  828.           STACKSIZE 32768
  829.  
  830.           IMPORTS
  831.                FMZyyFUN.zgsLibraryVersion
  832.                FMZyyFUN.zgsRegisterSignal
  833.                ...
  834.           EXPORTS
  835.                zxxLibraryVersion
  836.                zxxRegisterSignal
  837.                ...
  838.  
  839.   3. Generate the new DLL by executing: 
  840.  
  841.            NMAKE - af ZHPCLONE.MAK
  842.  
  843.  
  844. ΓòÉΓòÉΓòÉ 4.3.5. How to use the object library ΓòÉΓòÉΓòÉ
  845.  
  846. An object library called ZHPFUNCS.LIB is available in DEVEL sub-directory. 
  847.  
  848. Such a library is provided to allow the user to clone the FMZHPFUN.DLL library, 
  849. as explained in Create your own library. 
  850.  
  851.    Important 
  852.  
  853.    You may also decide to clone only few function rather than the whole 
  854.    library. However you cannot use this library to statically link some library 
  855.    function to your program. In fact, those functions which may need to load 
  856.    resources from the DLL itself, or to get the library handle to perform 
  857.    specific activities, wouldn't work any more. This use of the object library 
  858.    is not supported. You may do that, but at your own risk. 
  859.  
  860.  
  861. ΓòÉΓòÉΓòÉ 5. Reference Manual ΓòÉΓòÉΓòÉ
  862.  
  863. Select one: 
  864.  
  865.  Function sheets 
  866.  
  867.  Macro sheets 
  868.  
  869.  Data sheets 
  870.  
  871.  
  872. ΓòÉΓòÉΓòÉ 5.1. Function sheets ΓòÉΓòÉΓòÉ
  873.  
  874. Select one: 
  875.  
  876. Γûá zhpLibraryVersion
  877. Γûá zhpSetLibraryName
  878. Γûá zhpRegisterSignal
  879. Γûá zhpIEEEtoS370double
  880. Γûá zhpIEEEtoS370float
  881. Γûá zhpLongToS370Word
  882. Γûá zhpPackedToSortedDate
  883. Γûá zhpPackedToSortedTime
  884. Γûá zhpShortToS370Halfword
  885. Γûá zhpSortedToPackedDate
  886. Γûá zhpSortedToPackedTime
  887. Γûá zhpS370HalfwordToShort
  888. Γûá zhpS370toIEEEdouble
  889. Γûá zhpS370toIEEEfloat
  890. Γûá zhpS370WordToLong
  891.  
  892.  
  893. ΓòÉΓòÉΓòÉ 5.1.1. zhpLibraryVersion ΓòÉΓòÉΓòÉ
  894.  
  895. Provide information about library version and the date and time of compilation 
  896. of the DLL source code. 
  897.  
  898. Prototype 
  899.  
  900.  VOID EXPENTRY zhpLibraryVersion
  901.  (
  902.   zPLIBVERS pLibVers
  903.  ) ;
  904.  
  905. Parameters 
  906.  
  907.  pLibVers 
  908.       Pointer to a zLIBVERS structure. That structure should be allocated by 
  909.       the caller. Its content, if any, will be overwritten. 
  910.  
  911.  result 
  912.       The zLIBVERS structure whose pointer is provided as input parameter is 
  913.       filled. 
  914.  
  915.  Notes 
  916.  
  917.  Look at zLIBVERS for the definition of zLIBVERS structure. 
  918.  
  919.  Known bugs 
  920.  
  921.  None. 
  922.  
  923.  
  924. ΓòÉΓòÉΓòÉ 5.1.2. zhpSetLibraryName ΓòÉΓòÉΓòÉ
  925.  
  926. Set the value of the private variable zhpDllName. See also Create your own 
  927. library. 
  928.  
  929.    Important If called, this function must be called before any other library 
  930.    function. 
  931.  
  932.  Prototype 
  933.  
  934.    VOID EXPENTRY zhpSetLibraryName
  935.    (
  936.     PSZ szNewName
  937.    ) ;
  938.  
  939.  Parameters 
  940.  
  941.  szNewName 
  942.       Pointer to the string containing the new name of library. If you pass a 
  943.       NULL pointer or an empty string, the library name is set to its default, 
  944.       that is zhpDLLNAME. 
  945.  
  946.  result 
  947.       None. 
  948.  
  949.  Notes 
  950.  
  951.  If you clone FMZHPFUN.DLL, you obtain a new library with a new name. Since 
  952.  this library may need to know its name to load resources or get its module 
  953.  handle, you have to tell it which is the new name. You can use this function 
  954.  to do that. The default name is zhpDLLNAME. 
  955.  
  956.  Known bugs 
  957.  
  958.  None. 
  959.  
  960.  
  961. ΓòÉΓòÉΓòÉ 5.1.3. zhpRegisterSignal ΓòÉΓòÉΓòÉ
  962.  
  963. It registers an application signal handler for exception handling. 
  964.  
  965. Prototype 
  966.  
  967.  zSIGNAL EXPENTRY zhpRegisterSignal
  968.  (
  969.   zSIGHAND  SigHandler
  970.  )
  971.  
  972. Parameters 
  973.  
  974.  SigHandler 
  975.       Pointer to the application signal handler to be registered.  Type is 
  976.       zSIGHAND (see Z Family/2 general constants). 
  977.  
  978.  result 
  979.       zREGISTERED if the handler has been successfully registered, otherwise it 
  980.       returns the signal for which the registration failed.  See Signal 
  981.       handling types for the complete list of signals and their meaning. 
  982.  
  983.  Notes 
  984.  
  985.  Look at Signal handling  for a description of the exception handling feature 
  986.  provided by FMZHPFUN.DLL. 
  987.  
  988.  Known bugs 
  989.  
  990.  None. 
  991.  
  992.  
  993. ΓòÉΓòÉΓòÉ 5.1.4. zhpIEEEtoS370double ΓòÉΓòÉΓòÉ
  994.  
  995. Convert an OS/2 double precision IEEE floating point number to a S/370 double 
  996. precision floating point number. 
  997.  
  998. Prototype 
  999.  
  1000.  VOID EXPENTRY zhpIEEEtoS370double
  1001.  (
  1002.   ULONG *dIEEE ,
  1003.   ULONG *dS370
  1004.  )
  1005.  
  1006. Parameters 
  1007.  
  1008.  dIEEE 
  1009.       The pointer to an array of 2 unsigned long integers which contains the 
  1010.       number in the OS/2 IEEE format (64-bit). 
  1011.  
  1012.  dS370 
  1013.       The pointer to an array of 2 unsigned long integers which should receive 
  1014.       the number in the S/370 format (64-bit). 
  1015.  
  1016.  result 
  1017.       The array of unsigned long integers whose pointer is passed as the second 
  1018.       argument is filled. 
  1019.  
  1020.  Notes 
  1021.  
  1022.  See Single precision floating point number formats and Double precision 
  1023.  floating point number formats for details about floating point number formats. 
  1024.  
  1025.  Array sizes are not checked. The caller is responsible for providing the 
  1026.  64-bit numbers as arrays of two unsigned long integers. 
  1027.  
  1028.  The input value is not checked. The function assumes the number is valid and 
  1029.  provided according to the IEEE format. 
  1030.  
  1031.  Because the S/370 format and the IEEE format are not equivalent, the following 
  1032.  rules apply: 
  1033.  
  1034.  o Magnitudes which underflow during conversion are converted to 0. 
  1035.  
  1036.  o Magnitudes which overflow during conversion are converted to the largest 
  1037.    representable number. 
  1038.  
  1039.  See also Floating Point Numbers for additional considerations. 
  1040.  
  1041.  Known bugs 
  1042.  
  1043.  None. 
  1044.  
  1045.  
  1046. ΓòÉΓòÉΓòÉ 5.1.5. zhpIEEEtoS370float ΓòÉΓòÉΓòÉ
  1047.  
  1048. Convert an OS/2 single precision IEEE floating point number to a S/370 single 
  1049. precision floating point number. 
  1050.  
  1051. Prototype 
  1052.  
  1053.  VOID EXPENTRY zhpIEEEtoS370float
  1054.  (
  1055.   ULONG *fIEEE ,
  1056.   ULONG *fS370
  1057.  )
  1058.  
  1059. Parameters 
  1060.  
  1061.  fIEEE 
  1062.       The pointer to an unsigned long integer which contains the number in the 
  1063.       OS/2 IEEE format (32-bit). 
  1064.  
  1065.  fS370 
  1066.       The pointer to an unsigned long integer which should receive the number 
  1067.       in the S/370 format (32-bit). 
  1068.  
  1069.  result 
  1070.       The unsigned long integer whose pointer is passed as the second argument 
  1071.       is filled. 
  1072.  
  1073.  Notes 
  1074.  
  1075.  See Single precision floating point number formats and Double precision 
  1076.  floating point number formats for details about floating point number formats. 
  1077.  
  1078.  The input value is not checked. The function assumes the number is valid and 
  1079.  provided according to the IEEE format. 
  1080.  
  1081.  Because the S/370 format and the IEEE format are not equivalent, the following 
  1082.  rules apply: 
  1083.  
  1084.  o Magnitudes which underflow during conversion are converted to 0. 
  1085.  
  1086.  o Magnitudes which overflow during conversion are converted to the largest 
  1087.    representable number. 
  1088.  
  1089.  See also Floating Point Numbers for additional considerations. 
  1090.  
  1091.  Known bugs 
  1092.  
  1093.  None. 
  1094.  
  1095.  
  1096. ΓòÉΓòÉΓòÉ 5.1.6. zhpLongToS370Word ΓòÉΓòÉΓòÉ
  1097.  
  1098. Convert an OS/2 long integer to a S/370 32-bit integer. 
  1099.  
  1100. Prototype 
  1101.  
  1102.  VOID EXPENTRY zhpLongToS370Word
  1103.  (
  1104.   LONG  *xLong ,
  1105.   CHAR  *xWord
  1106.  )
  1107.  
  1108. Parameters 
  1109.  
  1110.  xLong 
  1111.       The pointer to a long integer which contains the number in the 80x86 
  1112.       format. 
  1113.  
  1114.  xWord 
  1115.       The pointer to a 4-byte array which should receive the S/370 32-bit 
  1116.       integer. 
  1117.  
  1118.  result 
  1119.       The 4-byte array whose pointer is passed as the second argument is 
  1120.       filled. 
  1121.  
  1122.  Notes 
  1123.  
  1124.  See Long integer formats and Short integer formats for details about integer 
  1125.  formats. 
  1126.  
  1127.  Array size is not checked. The caller is responsible for providing an array of 
  1128.  four characters as target memory area. 
  1129.  
  1130.  The input value is not checked. The function assumes the integer is valid and 
  1131.  provided according to the OS/2 80x86 format. 
  1132.  
  1133.  Known bugs 
  1134.  
  1135.  None. 
  1136.  
  1137.  
  1138. ΓòÉΓòÉΓòÉ 5.1.7. zhpPackedToSortedDate ΓòÉΓòÉΓòÉ
  1139.  
  1140. Convert a date from the S/370 Packed format to the OS/2 Sorted String format. 
  1141.  
  1142. Prototype 
  1143.  
  1144.  VOID EXPENTRY zhpPackedToSortedDate
  1145.  (
  1146.   CHAR *packed ,
  1147.   CHAR *sorted
  1148.  )
  1149.  
  1150. Parameters 
  1151.  
  1152.  packed 
  1153.       The pointer to a 4-byte array which contains the date in the S/370 Packed 
  1154.       format. 
  1155.  
  1156.  sorted 
  1157.       The pointer to a null terminated string which should receive the date in 
  1158.       the OS/2 Sorted String format. String must be at least 9-bytes long. 
  1159.  
  1160.  result 
  1161.       The string whose pointer is passed as the second argument is filled. 
  1162.  
  1163.  Notes 
  1164.  
  1165.  See Date formats and Time formats for details about date and time formats. 
  1166.  
  1167.  String lengths and array sizes are not checked. The caller is responsible for 
  1168.  providing strings and arrays of appropriate size. 
  1169.  
  1170.  The input date is not checked. The function assumes the date is valid and 
  1171.  provided according to the S/370 Packed format. 
  1172.  
  1173.  Known bugs 
  1174.  
  1175.  This function works with dates whose year range is 1000 AD to 2999 AD. 
  1176.  
  1177.  
  1178. ΓòÉΓòÉΓòÉ 5.1.8. zhpPackedToSortedTime ΓòÉΓòÉΓòÉ
  1179.  
  1180. Convert a time from the S/370 Packed format to the OS/2 Sorted String format. 
  1181.  
  1182. Prototype 
  1183.  
  1184.  VOID EXPENTRY zhpPackedToSortedTime
  1185.  (
  1186.   CHAR *packed ,
  1187.   CHAR *sorted
  1188.  )
  1189.  
  1190. Parameters 
  1191.  
  1192.  packed 
  1193.       The pointer to a 4-byte array which contains the time in the S/370 Packed 
  1194.       format. 
  1195.  
  1196.  sorted 
  1197.       The pointer to a null terminated string which should receive the time in 
  1198.       the OS/2 Sorted String format. String must be at least 9-byte long. 
  1199.  
  1200.  result 
  1201.       The string whose pointer is passed as the second argument is filled. 
  1202.  
  1203.  Notes 
  1204.  
  1205.  See Date formats and Time formats for details about date and time formats. 
  1206.  
  1207.  String lengths and array sizes are not checked. The caller is responsible for 
  1208.  providing strings and arrays of appropriate size. 
  1209.  
  1210.  The input time is not checked. The function assumes the time is valid and 
  1211.  provided according to the S/370 Packed format. 
  1212.  
  1213.  Known bugs 
  1214.  
  1215.  None. 
  1216.  
  1217.  
  1218. ΓòÉΓòÉΓòÉ 5.1.9. zhpShortToS370Halfword ΓòÉΓòÉΓòÉ
  1219.  
  1220. Convert an OS/2 short integer to a S/370 16-bit integer. 
  1221.  
  1222. Prototype 
  1223.  
  1224.  VOID EXPENTRY zhpShortToS370Halfword
  1225.  (
  1226.   SHORT *xShort ,
  1227.   CHAR  *xHword
  1228.  )
  1229.  
  1230. Parameters 
  1231.  
  1232.  xShort 
  1233.       The pointer to a short integer which contains the number in the 80x86 
  1234.       format. 
  1235.  
  1236.  xHword 
  1237.       The pointer to a 2-byte array which should receive the S/370 16-bit 
  1238.       integer. 
  1239.  
  1240.  result 
  1241.       The 2-byte array whose pointer is passed as the second argument is 
  1242.       filled. 
  1243.  
  1244.  Notes 
  1245.  
  1246.  See Long integer formats and Short integer formats for details about integer 
  1247.  formats. 
  1248.  
  1249.  Array size is not chedked. The caller is responsible for providing an array of 
  1250.  two characters as target memory area. 
  1251.  
  1252.  The input value is not checked. The function assumes the integer is valid and 
  1253.  provided according to the OS/2 80x86 format. 
  1254.  
  1255.  Known bugs 
  1256.  
  1257.  None. 
  1258.  
  1259.  
  1260. ΓòÉΓòÉΓòÉ 5.1.10. zhpSortedToPackedDate ΓòÉΓòÉΓòÉ
  1261.  
  1262. Convert a date from the OS/2 Sorted String format to the S/370 Packed format. 
  1263.  
  1264. Prototype 
  1265.  
  1266.  VOID EXPENTRY zhpSortedToPackedDate
  1267.  (
  1268.   CHAR *sorted ,
  1269.   CHAR *packed
  1270.  )
  1271.  
  1272. Parameters 
  1273.  
  1274.  sorted 
  1275.       The pointer to a null terminated string which contains the date in the 
  1276.       OS/2 Sorted String format. String must be at least 9-byte long. 
  1277.  
  1278.  packed 
  1279.       The pointer to a 4-byte array which should receive the date in the S/370 
  1280.       Packed format. 
  1281.  
  1282.  result 
  1283.       The array whose pointer is passed as the second argument is filled. 
  1284.  
  1285.  Notes 
  1286.  
  1287.  See Date formats and Time formats for details about date and time formats. 
  1288.  
  1289.  String lengths and array sizes are not checked. The caller is responsible for 
  1290.  providing strings and arrays of appropriate size. 
  1291.  
  1292.  The input date is not checked. The function assumes the date is valid and 
  1293.  provided according to the OS/2 Sorted String format. 
  1294.  
  1295.  Known bugs 
  1296.  
  1297.  This function works with dates whose year range is 1000 AD to 2999 AD. 
  1298.  
  1299.  
  1300. ΓòÉΓòÉΓòÉ 5.1.11. zhpSortedToPackedTime ΓòÉΓòÉΓòÉ
  1301.  
  1302. Convert a time from the OS/2 Sorted String format to the S/370 Packed format. 
  1303.  
  1304. Prototype 
  1305.  
  1306.  VOID EXPENTRY zhpSortedToPackedTime
  1307.  (
  1308.   CHAR *sorted ,
  1309.   CHAR *packed
  1310.  )
  1311.  
  1312. Parameters 
  1313.  
  1314.  sorted 
  1315.       The pointer to a null terminated string which contains the time in the 
  1316.       OS/2 Sorted String format. String must be at least 9-bytes long (see 
  1317.       Notes below). 
  1318.  
  1319.  packed 
  1320.       The pointer to a 4-byte array which should receive the time in the S/370 
  1321.       Packed format. 
  1322.  
  1323.  result 
  1324.       The array whose pointer is passed as the second argument is filled. 
  1325.  
  1326.  Notes 
  1327.  
  1328.  The sorted parameter can only be 7-bytes long.  The two trailing blanks are 
  1329.  not requested. However, you cannot use the same string as a target for 
  1330.  zhpPackedToSortedTime(), which requires a 9-byte string as target. 
  1331.  
  1332.  See Date formats and Time formats for details about date and time formats. 
  1333.  
  1334.  String lengths and array sizes are not checked. The caller is responsible for 
  1335.  providing strings and arrays of appropriate size. 
  1336.  
  1337.  The input time is not checked. The function assumes the time is valid and 
  1338.  provided according to the OS/2 Sorted String format. 
  1339.  
  1340.  Known bugs 
  1341.  
  1342.  None. 
  1343.  
  1344.  
  1345. ΓòÉΓòÉΓòÉ 5.1.12. zhpS370HalfwordToShort ΓòÉΓòÉΓòÉ
  1346.  
  1347. Convert a S/370 16-bit integer to an OS/2 short integer. 
  1348.  
  1349. Prototype 
  1350.  
  1351.  VOID EXPENTRY zhpS370HalfwordToShort
  1352.  (
  1353.   CHAR  *xHword ,
  1354.   SHORT *xShort
  1355.  )
  1356.  
  1357. Parameters 
  1358.  
  1359.  xHword 
  1360.       The pointer to a 2-byte array which contains the S/370 16-bit integer. 
  1361.  
  1362.  xShort 
  1363.       The pointer to a short integer which should receive the number in the 
  1364.       80x86 format. 
  1365.  
  1366.  result 
  1367.       The short integer whose pointer is passed as the second argument is 
  1368.       filled. 
  1369.  
  1370.  Notes 
  1371.  
  1372.  See Long integer formats and Short integer formats for details about integer 
  1373.  formats. 
  1374.  
  1375.  Array size is not checked. The caller is responsible for providing the S/370 
  1376.  16-bit integer as an array of two characters. 
  1377.  
  1378.  The input value is not checked. The function assumes the integer is valid and 
  1379.  provided according to the S/370 format. 
  1380.  
  1381.  Known bugs 
  1382.  
  1383.  None. 
  1384.  
  1385.  
  1386. ΓòÉΓòÉΓòÉ 5.1.13. zhpS370toIEEEdouble ΓòÉΓòÉΓòÉ
  1387.  
  1388. Convert a S/370 double precision floating point number to an OS/2 double 
  1389. precision IEEE floating point number. 
  1390.  
  1391. Prototype 
  1392.  
  1393.  VOID EXPENTRY zhpS370toIEEEdouble
  1394.  (
  1395.   ULONG *dS370 ,
  1396.   ULONG *dIEEE
  1397.  )
  1398.  
  1399. Parameters 
  1400.  
  1401.  dS370 
  1402.       The pointer to an array of 2 unsigned long integers which contains the 
  1403.       number in the S/370 format (64-bit). 
  1404.  
  1405.  dIEEE 
  1406.       The pointer to an array of 2 unsigned long integers which should receive 
  1407.       the number in the OS/2 IEEE format (64-bit). 
  1408.  
  1409.  result 
  1410.       The array of unsigned long integers whose pointer is passed as the second 
  1411.       argument is filled. 
  1412.  
  1413.  Notes 
  1414.  
  1415.  See Single precision floating point number formats  and Double precision 
  1416.  floating point number formats  for details about floating point number 
  1417.  formats. 
  1418.  
  1419.  Array sizes are not checked. The caller is responsible for providing the 
  1420.  64-bit numbers as arrays of two unsigned long integers. 
  1421.  
  1422.  The input value is not checked. The function assumes the number is valid and 
  1423.  provided according to the S/370 format. 
  1424.  
  1425.  Because the S/370 format and the IEEE format are not equivalent, the following 
  1426.  rules apply: 
  1427.  
  1428.  o Magnitudes which underflow during conversion are converted to 0. 
  1429.  
  1430.  o Magnitudes which overflow during conversion are converted to the largest 
  1431.    representable number. 
  1432.  
  1433.  See also Floating Point Numbers  for additional considerations. 
  1434.  
  1435.  Known bugs 
  1436.  
  1437.  None. 
  1438.  
  1439.  
  1440. ΓòÉΓòÉΓòÉ 5.1.14. zhpS370toIEEEfloat ΓòÉΓòÉΓòÉ
  1441.  
  1442. Convert a S/370 single precision floating point number to an OS/2 single 
  1443. precision IEEE floating point number. 
  1444.  
  1445. Prototype 
  1446.  
  1447.  VOID EXPENTRY zhpS370toIEEEfloat
  1448.  (
  1449.   ULONG *fS370 ,
  1450.   ULONG *fIEEE
  1451.  )
  1452.  
  1453. Parameters 
  1454.  
  1455.  fS370 
  1456.       The pointer to an unsigned long integer which contains the number in the 
  1457.       S/370 format (32-bit). 
  1458.  
  1459.  fIEEE 
  1460.       The pointer to an unsigned long integer which should receive the number 
  1461.       in the OS/2 IEEE format (32-bit). 
  1462.  
  1463.  result 
  1464.       The unsigned long integer whose pointer is passed as the second argument 
  1465.       is filled. 
  1466.  
  1467.  Notes 
  1468.  
  1469.  See Single precision floating point number formats and Double precision 
  1470.  floating point number formats for details about floating point number formats. 
  1471.  
  1472.  The input value is not checked. The function assumes the number is valid and 
  1473.  provided according to the S/370 format. 
  1474.  
  1475.  Because the S/370 format and the IEEE format are not equivalent, the following 
  1476.  rules apply: 
  1477.  
  1478.  o Magnitudes which underflow during conversion are converted to 0. 
  1479.  
  1480.  o Magnitudes which overflow during conversion are converted to the largest 
  1481.    representable number. 
  1482.  
  1483.  See also Floating Point Numbers for additional considerations. 
  1484.  
  1485.  Known bugs 
  1486.  
  1487.  None. 
  1488.  
  1489.  
  1490. ΓòÉΓòÉΓòÉ 5.1.15. zhpS370WordToLong ΓòÉΓòÉΓòÉ
  1491.  
  1492. Convert a S/370 32-bit integer to an OS/2 long integer. 
  1493.  
  1494. Prototype 
  1495.  
  1496.  VOID EXPENTRY zhpS370WordToLong
  1497.  (
  1498.   CHAR  *xWord ,
  1499.   LONG  *xLong
  1500.  )
  1501.  
  1502. Parameters 
  1503.  
  1504.  xWord 
  1505.       The pointer to a 4-byte array which contains the S/370 32-bit integer. 
  1506.  
  1507.  xLong 
  1508.       The pointer to a long integer which should receive the number in the 
  1509.       80x86 format. 
  1510.  
  1511.  result 
  1512.       The long integer whose pointer is passed as the second argument is 
  1513.       filled. 
  1514.  
  1515.  Notes 
  1516.  
  1517.  See Long integer formats and Short integer formats for details about integer 
  1518.  formats. 
  1519.  
  1520.  Array size is not checked. The caller is responsible for providing the S/370 
  1521.  32-bit integer as an array of four characters. 
  1522.  
  1523.  The input value is not checked. The function assumes the integer is valid and 
  1524.  provided according to the S/370 format. 
  1525.  
  1526.  Known bugs 
  1527.  
  1528.  None. 
  1529.  
  1530.  
  1531. ΓòÉΓòÉΓòÉ 5.2. Macro sheets ΓòÉΓòÉΓòÉ
  1532.  
  1533. This library has no macros. 
  1534.  
  1535.  
  1536. ΓòÉΓòÉΓòÉ 5.3. Data sheets ΓòÉΓòÉΓòÉ
  1537.  
  1538. Select one: 
  1539.  
  1540. Γûá zLIBVERS
  1541. Γûá Signal handling types
  1542. Γûá Library constants
  1543. Γûá Z Family/2 general constants
  1544.  
  1545.  
  1546. ΓòÉΓòÉΓòÉ 5.3.1. zLIBVERS ΓòÉΓòÉΓòÉ
  1547.  
  1548. This structure is used by all Z Family/2 DLL's to maintain information about 
  1549. the level of the library, and the date and time of compilation of library 
  1550. source code. 
  1551.  
  1552. Structure 
  1553.  
  1554.  typedef struct zLibVersion
  1555.  {
  1556.   USHORT Version       ;
  1557.   USHORT Release       ;
  1558.   USHORT Modification    ;
  1559.   CHAR  String[zLEVELSIZE] ;
  1560.   CHAR  Stamp[zSTAMPSIZE]  ;
  1561.   CHAR  Name[zNAMESIZE]   ;
  1562.  }
  1563.  zLIBVERS, *zPLIBVERS ;
  1564.  
  1565. Fields 
  1566.  
  1567.  Version 
  1568.       Library version.  Updated only when major functional changes are applied 
  1569.       to the library code. 
  1570.  
  1571.  Release 
  1572.       Library release.  Updated only when minor functional changes are applied 
  1573.       to the library code. 
  1574.  
  1575.  Modification 
  1576.       Library modification.  Updated when fixes are applied to the library 
  1577.       code. 
  1578.  
  1579.  String 
  1580.       A string containing the library level (version plus release). It must 
  1581.       match the values of version and release. 
  1582.  
  1583.  Stamp 
  1584.       A string containing the compilation time stamp. Usually the C Set/2 
  1585.       predefined constant __TIMESTAMP__ is assigned to this field. 
  1586.  
  1587.  Name 
  1588.       A string containing the library name. If the library was cloned with a 
  1589.       different name, and zhpSetLibraryName() was previously called, this 
  1590.       string contains the name of the clone. 
  1591.  
  1592.  Include file 
  1593.  
  1594.  zgeneral.h 
  1595.  
  1596.  Notes 
  1597.  
  1598.  This structure is the same for all the Z Family/2 DLL's. 
  1599.  
  1600.  
  1601. ΓòÉΓòÉΓòÉ 5.3.2. Signal handling types ΓòÉΓòÉΓòÉ
  1602.  
  1603. Two types are used in the signal handling feature of FMZHPFUN.DLL: zSIGHAND 
  1604. and zSIGNAL. 
  1605.  
  1606. zSIGHAND is the pointer to a signal handler function that can be used as 
  1607. argument when zhpRegisterSignal() is called (see Signal handling for details 
  1608. about how to write a signal handler). 
  1609.  
  1610. zSIGNAL  is the signal event that may be returned by zhpRegisterSignal() if the 
  1611. registration of the signal handler fails. 
  1612.  
  1613. Definition 
  1614.  
  1615.  typedef int  zSIGNAL      ;
  1616.  typedef void (*zSIGHAND)(int) ;
  1617.  
  1618. Signals 
  1619.  
  1620. This is the list of the possible values whose type is zSIGNAL. 
  1621.  
  1622.  SIGILL 
  1623.       Illegal instruction (invalid function image) 
  1624.  
  1625.  SIGSEGV 
  1626.       Invalid access to memory 
  1627.  
  1628.  SIGFPE 
  1629.       Floating point exception 
  1630.  
  1631.  SIGTERM 
  1632.       OS/2 SIGTERM (killprocess) signal 
  1633.  
  1634.  SIGABRT 
  1635.       Abort() signal 
  1636.  
  1637.  SIGINT 
  1638.       OS/2 SIGINTR signal 
  1639.  
  1640.  SIGUSR1 
  1641.       User exception in range 0xA0000000-0xBFFFFFFF 
  1642.  
  1643.  SIGUSR2 
  1644.       User exception in range 0xC0000000-0xDFFFFFFF 
  1645.  
  1646.  SIGUSR3 
  1647.       User exception in range 0xE0000000-0xFFFFFFFF 
  1648.  
  1649.  SIGBREAK 
  1650.       OS/2 Ctrl-Break sequence 
  1651.  
  1652.  Include file 
  1653.  
  1654.  zgeneral.h 
  1655.  
  1656.  Notes 
  1657.  
  1658.  These types are the same for all the Z Family/2 DLL's. 
  1659.  
  1660.  
  1661. ΓòÉΓòÉΓòÉ 5.3.3. Library constants ΓòÉΓòÉΓòÉ
  1662.  
  1663. The following constants can be used by the applications that are dynamically 
  1664. linked to FMZHPFUN.DLL. 
  1665.  
  1666.  zhpDLLNAME 
  1667.       The default name of this library. Note that, if you clone this library, 
  1668.       the real name must be changed by using the zhpSetLibraryName() function. 
  1669.       In such a case, you cannot use any more this constant. 
  1670.  
  1671.  zhpZPREFIX 
  1672.       The Z Family/2 identifier of this library. 
  1673.  
  1674.  Include file 
  1675.  
  1676.  zhpdefs.h 
  1677.  
  1678.  Notes 
  1679.  
  1680.  None. 
  1681.  
  1682.  
  1683. ΓòÉΓòÉΓòÉ 5.3.4. Z Family/2 general constants ΓòÉΓòÉΓòÉ
  1684.  
  1685. The following constants are shared by all Z Family/2 DLL's. 
  1686.  
  1687.  zPRODPREF 
  1688.       Z Family/2 three-character product prefix (ZHP). 
  1689.  
  1690.  zPRODNUMB 
  1691.       Z Family/2 product number (5641-504). 
  1692.  
  1693.  zCOPYRIGHT 
  1694.       Z Family/2 copyright statement. 
  1695.  
  1696.  zNAMESIZE 
  1697.       Maximum size of Name string in zLIBVERS. 
  1698.  
  1699.  zLEVELSIZE 
  1700.       Maximum size of Level string in zLIBVERS. 
  1701.  
  1702.  zSTAMPSIZE 
  1703.       Maximum size of Stamp string in zLIBVERS. 
  1704.  
  1705.  zNULLERRORID 
  1706.       Null error identifier. To be used when the error identifier can be 
  1707.       ignored by the called function. 
  1708.  
  1709.  zEXEMINERRID 
  1710.       Minimum value of error identifiers for user applications. 
  1711.  
  1712.  zEXEMAXERRID 
  1713.       Maximum value of error identifiers for user applications. 
  1714.  
  1715.  zDLLMINERRID 
  1716.       Minimum value of error identifiers for the Z Family/2 DLL's. 
  1717.  
  1718.  zDLLMAXERRID 
  1719.       Maximum value of error identifiers for the Z Family/2 DLL's. 
  1720.  
  1721.  zSIGNAL 
  1722.       Z Family/2 signal type for signal handling. 
  1723.  
  1724.  zSIGHAND 
  1725.       Z Family/2 signal handler type for signal handling. 
  1726.  
  1727.  zBIT 
  1728.       Z Family/2 type used for unsigned bits. 
  1729.  
  1730.  Include file 
  1731.  
  1732.  zgeneral.h 
  1733.  
  1734.  Notes 
  1735.  
  1736.  Error identifiers are used to identify both the error itself, and the message 
  1737.  associated with it. 
  1738.  
  1739.  
  1740. ΓòÉΓòÉΓòÉ 6. Sample Program ΓòÉΓòÉΓòÉ
  1741.  
  1742. Select one: 
  1743.  
  1744.  Running the sample program 
  1745.  
  1746.  Sample program tutorial 
  1747.  
  1748.  
  1749. ΓòÉΓòÉΓòÉ 6.1. Running the sample program ΓòÉΓòÉΓòÉ
  1750.  
  1751.  Important 
  1752.  
  1753.  To run the sample program, you must already have installed the library as 
  1754.  described in How to install the library. 
  1755.  
  1756.  Do not double-click on the item below unless 
  1757.  
  1758.   1. you copied the sample program to a directory listed in your PATH, or added 
  1759.      the directory where the sample program is to your PATH. 
  1760.  
  1761.   2. you copied all the needed dynamic libraries to a directory listed in your 
  1762.      LIBPATH, or added the directory where such libraries are to your LIBPATH. 
  1763.  
  1764.    Hit me to run the sample 
  1765.  
  1766.  
  1767. ΓòÉΓòÉΓòÉ 6.2. Sample program tutorial ΓòÉΓòÉΓòÉ
  1768.  
  1769. The FMZHPFUN.DLL package also contains a sample program that shows how to use 
  1770. the DLL functions. 
  1771.  
  1772. The program is called PCHOST  and can be launched either from an OS/2 window 
  1773. (or full-screen), or from the OS/2 Desktop, double-clicking on its icon. 
  1774.  
  1775. When the program is executed, a small windows appear on the screen. 
  1776.  
  1777. PCHOST window has only a single pull-down menu, called Convert. If you open 
  1778. that menu you can see four items: 
  1779.  
  1780.    PC to Host... 
  1781.         To this item is linked a submenu with five items: 
  1782.  
  1783.       Dates               To convert dates from PC format to S/370 one. 
  1784.       Times               To convert times from PC format to S/370 one. 
  1785.       Integers            To convert integers from PC format to S/370 one. 
  1786.       Single float        To convert single precision floating point numbers 
  1787.                           from PC format to S/370 one. 
  1788.       Double float        To convert double precision floating point numbers 
  1789.                           from PC format to S/370 one. 
  1790.  
  1791.    Host to PC... 
  1792.         To this item is linked a submenu with five items: 
  1793.  
  1794.       Dates               To convert dates from S/370 format to PC one. 
  1795.       Times               To convert times from S/370 format to PC one. 
  1796.       Integers            To convert integers from S/370 format to PC one. 
  1797.       Single float        To convert single precision floating point numbers 
  1798.                           from S/370 format to PC one. 
  1799.       Double float        To convert double precision floating point numbers 
  1800.                           from S/370 format to PC one. 
  1801.  
  1802.    About 
  1803.         A message box containing the name of the library, its version, the 
  1804.         author and some other related information (eg. copyright) is displayed. 
  1805.         The first two fields are obtained by the zhpLibraryVersion()  function. 
  1806.  
  1807.    Exit 
  1808.         The user is prompted for the confirmation of the EXIT request. 
  1809.  
  1810.         Program ends. 
  1811.