home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / Fortran.51 / DISK6 / BSEDOS.FI$ / BSEDOS.bin
Text File  |  1989-02-05  |  52KB  |  1,665 lines

  1. C****************************** Module Header *******************************
  2. C*
  3. C* Module Name: BSEDOS.FI
  4. C*
  5. C* OS/2 Base Include File
  6. C*
  7. C* Copyright (c) 1988, 1989  Microsoft Corporation
  8. C*
  9. C****************************************************************************
  10. C
  11. * Subcomponents marked with "+" are partially included by default
  12. *
  13. *   $DEFINE:                To include:
  14. *
  15. * + INCL_DOSPROCESS         Process and thread support
  16. *   INCL_DOSINFOSEG         InfoSeg support
  17. * + INCL_DOSFILEMGR         File Management
  18. * + INCL_DOSMEMMGR          Memory Management
  19. * + INCL_DOSSEMAPHORES      Semaphore support
  20. * + INCL_DOSDATETIME        Date/Time and Timer support
  21. *   INCL_DOSMODULEMGR       Module manager
  22. * + INCL_DOSRESOURCES       Resource support
  23. *   INCL_DOSNLS             National Language Support
  24. *   INCL_DOSSIGNALS         Signals
  25. *   INCL_DOSMONITORS        Monitors
  26. *   INCL_DOSQUEUES          Queues
  27. *   INCL_DOSSESMGR          Session Manager Support
  28. *   INCL_DOSDEVICES         Device specific, ring 2 support
  29. *   INCL_DOSNMPIPES         Named Pipes Support
  30. *   INCL_DOSPROFILE         DosProfile API
  31. *
  32.  
  33. $DEFINE INCL_DOSINCLUDED
  34.  
  35. $IF defined(INCL_DOS)
  36.  
  37. $DEFINE INCL_DOSPROCESS
  38. $DEFINE INCL_DOSINFOSEG
  39. $DEFINE INCL_DOSFILEMGR
  40. $DEFINE INCL_DOSMEMMGR
  41. $DEFINE INCL_DOSSEMAPHORES
  42. $DEFINE INCL_DOSDATETIME
  43. $DEFINE INCL_DOSMODULEMGR
  44. $DEFINE INCL_DOSRESOURCES
  45. $DEFINE INCL_DOSNLS
  46. $DEFINE INCL_DOSSIGNALS
  47. $DEFINE INCL_DOSMONITORS
  48. $DEFINE INCL_DOSQUEUES
  49. $DEFINE INCL_DOSSESMGR
  50. $DEFINE INCL_DOSDEVICES
  51. $DEFINE INCL_DOSNMPIPES
  52. $DEFINE INCL_DOSPROFILE
  53.  
  54. $ENDIF         ! INCL_DOS
  55.  
  56. $IF defined(INCL_ERRORS)
  57. $DEFINE INCL_DOSERRORS
  58. $ENDIF         !  INCL_ERRORS
  59.  
  60. $IF (defined(INCL_DOSPROCESS) .OR. .NOT.defined(INCL_NOCOMMON))
  61. C
  62. C    ! Process and Thread support
  63. C
  64.     INTERFACE TO INTEGER*2 FUNCTION DosBeep
  65.      +  [ALIAS: 'DOSBEEP']
  66.      +  (Frequency [VALUE],                          ! Hertz (25H-7FFFH)
  67.      +   Duration [VALUE])                           ! Sound length in ms
  68.  
  69.     INTEGER*2 Frequency, Duration
  70.  
  71.     END
  72.  
  73.     INTERFACE TO SUBROUTINE DosExit
  74.      +  [ALIAS: 'DOSEXIT']
  75.      +  (ActionCode [VALUE],                         ! Indicates end subprocess
  76.      +   ExitCode [VALUE])                           ! Result code for DosCwait
  77.  
  78.     INTEGER*2 ActionCode, ExitCode
  79.  
  80.     END
  81.  
  82.  
  83. $ENDIF                                  ! common INCL_DOSPROCESS interfaces
  84.  
  85. $IF defined(INCL_DOSPROCESS)         ! INCL_DOSPROCESS interfaces
  86.  
  87.     INTERFACE TO INTEGER*2 FUNCTION DosCreateThread
  88.      +  [ALIAS: 'DOSCREATETHREAD']
  89.      +  (FuncAddress [VALUE],                 ! Address of program
  90.      +   ThreadIDWord,                        ! Address of new thread identifier
  91.      +   NewThreadStack)                      ! Address of stack for new thread
  92.  
  93.     INTEGER*2 FuncAddress*4, ThreadIDWord, NewThreadStack*1(*)
  94.  
  95.     END
  96.  
  97.     INTERFACE TO INTEGER*2 FUNCTION DosResumeThread
  98.      +  [ALIAS: 'DOSRESUMETHREAD']
  99.      +  (ThreadID [VALUE])                    ! Thread id
  100.  
  101.     INTEGER*2 ThreadID
  102.  
  103.     END
  104.  
  105.     INTERFACE TO INTEGER*2 FUNCTION DosSuspendThread
  106.      +  [ALIAS: 'DOSSUSPENDTHREAD']
  107.      +  (ThreadID [VALUE])                    ! Thread id
  108.  
  109.     INTEGER*2 ThreadID
  110.  
  111.     END
  112.  
  113.     INTERFACE TO INTEGER*2 FUNCTION DosCWait
  114.      +  [ALIAS: 'DOSCWAIT']
  115.      +  (ActionCode [VALUE],                  ! Action codes
  116.      +   WaitOption [VALUE],                  ! Wait options
  117.      +   Results,                             ! Address for result code
  118.      +   PidWord,                             ! Loc for process ID
  119.      +   ProcessID [VALUE])                   ! ProcessID of process to wait for
  120.  
  121.     INTEGER*2 ActionCode, WaitOption, PidWord, ProcessID
  122.  
  123.     STRUCTURE/RESULTCODES/
  124.        INTEGER*2 codeTerminate
  125.        INTEGER*2 codeResult
  126.     END STRUCTURE
  127.     RECORD/RESULTCODES/Results
  128.  
  129.     END
  130.  
  131.     INTERFACE TO INTEGER*2 FUNCTION DosSleep
  132.      +  [ALIAS: 'DOSSLEEP']
  133.      +  (TimeIntrvl [VALUE])                  ! Time interval
  134.  
  135.     INTEGER*4 TimeIntrvl
  136.  
  137.     END
  138.  
  139.     INTERFACE TO SUBROUTINE DosEnterCritSec
  140.      +  [ALIAS: 'DOSENTERCRITSEC']
  141.  
  142.     END
  143.  
  144.     INTERFACE TO SUBROUTINE DosExitCritSec
  145.      +  [ALIAS: 'DOSEXITCRITSEC']
  146.  
  147.     END
  148.  
  149.     INTERFACE TO INTEGER*2 FUNCTION DosExitList
  150.      +  [ALIAS: 'DOSEXITLIST']
  151.      +  (FnCode [VALUE],                      ! Function request code
  152.      +   RtnAddress [VALUE])                  ! Address of routine
  153.  
  154.     INTEGER*2 FnCode, RtnAddress*4
  155.  
  156.     END
  157.  
  158.     INTERFACE TO INTEGER*2 FUNCTION DosExecPgm
  159.      +  [ALIAS: 'DOSEXECPROGRAM']
  160.      +  (ObjNameBuf,                          ! Object name buffer
  161.      +   ObjBufLen [VALUE],                   ! Length of obj. name
  162.      +   AsyncTraceFlags [VALUE],             ! Execs async, traces
  163.      +   ArgPointer,                          ! Pointer to args
  164.      +   EnvPointer,                          ! Pointer to enviornment
  165.      +   RESULTCODES,                         ! Address of result code
  166.      +   PgmPointer)                          ! Address of filename
  167.  
  168.     INTEGER*2 ObjNameBuf*1(*), ObjBufLen, AsyncTraceFlags,
  169.      +            RESULTCODES(2)
  170.     CHARACTER*(*) ArgPointer, EnvPointer, PgmPointer
  171.  
  172.     END
  173.  
  174.     INTERFACE TO INTEGER*2 FUNCTION DosGetPid
  175.      +  [ALIAS: 'DOSGETPID']
  176.      +  (PidPointer)                             ! ProcID structure
  177.  
  178.     STRUCTURE/PIDINFO/
  179.        INTEGER*2 pid
  180.        INTEGER*2 tid
  181.        INTEGER*2 pidParent
  182.     END STRUCTURE
  183.     RECORD/PIDINFO/PidPointer
  184.  
  185.     END
  186.  
  187.     INTERFACE TO INTEGER*2 FUNCTION DosGetPrty
  188.      +  [ALIAS: 'DOSGETPRTY']
  189.      +  (Scope [VALUE],                       ! Thread or process ID
  190.      +   Priority,                            ! Address to put priority
  191.      +   ID [VALUE])                          ! PID of interest
  192.  
  193.     INTEGER*2 Scope, Priority, ID
  194.  
  195.     END
  196.  
  197.     INTERFACE TO INTEGER*2 FUNCTION DosSetPrty
  198.      +  [ALIAS: 'DOSSETPRTY']
  199.      +  (Scope [VALUE],                       ! Indicate scope of change
  200.      +   Class [VALUE],                       ! Priority class to set
  201.      +   Change [VALUE],                      ! Priority delta to apply
  202.      +   ID [VALUE])                          ! ID of target
  203.  
  204.     INTEGER*2 Scope, Class, Change, ID
  205.  
  206.     END
  207.  
  208.     INTERFACE TO INTEGER*2 FUNCTION DosKillProcess
  209.      +  [ALIAS: 'DOSKILLPROCESS']
  210.      +  (ActionCode [VALUE],                  ! Specifies to terminate
  211.      +   ProcessID [VALUE])                   ! ID of process to end
  212.  
  213.     INTEGER*2 ActionCode, ProcessID
  214.  
  215.     END
  216.  
  217. $ENDIF                                  ! INCL_DOSPROCESS interfaces
  218.  
  219.  
  220. $IF defined(INCL_DOSINFOSEG)          ! INCL_DOSINFOSEG interfaces
  221.  
  222.     INTERFACE TO INTEGER*2 FUNCTION DosGetInfoSeg
  223.      +  [ALIAS: 'DOSGETINFOSEG']
  224.      +  (selGlobalSeg,                        ! Address to place global segment
  225.      +   selLocalSeg)                         ! Address to place local segment
  226.  
  227.     INTEGER*2 selGlobalSeg, selLocalSeg
  228.  
  229.     END
  230.  
  231. $ENDIF                                  ! INCL_DOSINFOSEG interfaces
  232.  
  233.  
  234. $IF defined(INCL_DOSFILEMGR) .OR. .NOT. defined(INCL_NOCOMMON)
  235.  
  236. C    ! File manager
  237.  
  238.     INTERFACE TO INTEGER*2 FUNCTION DosOpen
  239.      +  [ALIAS: 'DOSOPEN']
  240.      +  (FileName,                            ! File name
  241.      +  Handle,                               ! New file's handle
  242.      +  ActionTaken,                          ! Action taken
  243.      +  Size [VALUE],                         ! Primary alloc size
  244.      +  FileAttribute [VALUE],                ! File attribute
  245.      +  OpenFlag [VALUE],                     ! Open function type
  246.      +  OpenMode [VALUE],                     ! Open mode of file
  247.      +  Reserved [VALUE])                     ! Reserved (must =0)
  248.  
  249.     CHARACTER*(*) FileName
  250.     INTEGER*2 Handle, ActionTaken, Size*4, FileAttribute,
  251.      +            OpenFlag, OpenMode, Reserved*4
  252.  
  253.     END
  254.  
  255.     INTERFACE TO INTEGER*2 FUNCTION DosClose
  256.      +  [ALIAS: 'DOSCLOSE']
  257.      +  (FileHandle [VALUE])                  ! File handle
  258.  
  259.     INTEGER*2 FileHandle
  260.  
  261.     END
  262.  
  263.     INTERFACE TO INTEGER*2 FUNCTION DosRead
  264.      +  [ALIAS: 'DOSREAD']
  265.      +  (FileHandle [VALUE],                  ! File handle
  266.      +   Buffer,                              ! Buffer address
  267.      +   BufferLength [VALUE],                ! Length of buffer
  268.      +   BytesRead)                           ! Returned bytes read
  269.  
  270.     INTEGER*2 FileHandle, Buffer*1(*), BufferLength, BytesRead
  271.  
  272.     END
  273.  
  274.     INTERFACE TO INTEGER*2 FUNCTION DosWrite
  275.      +  [ALIAS: 'DOSWRITE']
  276.      +  (FileHandle [VALUE],                  ! File handle
  277.      +   Buffer,                              ! Buffer address
  278.      +   BufferLength [VALUE],                ! Length of buffer
  279.      +   BytesWritten)                        ! Returned bytes written
  280.  
  281.     INTEGER*2 FileHandle, Buffer*1(*), BufferLength, BytesWritten
  282.  
  283.     END
  284.  
  285.     INTERFACE TO INTEGER*2 FUNCTION DosDelete
  286.      +  [ALIAS: 'DOSDELETE']
  287.      +  (PathName,                            ! Pathname of file
  288.      +   Reserved [VALUE])                    ! Reserved (must =0)
  289.  
  290.     CHARACTER*(*) PathName
  291.     INTEGER*4 Reserved
  292.  
  293.     END
  294.  
  295.     INTERFACE TO INTEGER*2 FUNCTION DosDupHandle
  296.      +  [ALIAS: 'DOSDUPHANDLE']
  297.      +  (OldFH [VALUE],                       ! Existing file handle
  298.      +   NewFH)                               ! New file handle
  299.  
  300.     INTEGER*2 OldFH, NewFH
  301.  
  302.     END
  303.  
  304.     INTERFACE TO INTEGER*2 FUNCTION DosQFHandState
  305.      +  [ALIAS: 'DOSQFHANDSTATE']
  306.      +  (FileHandle [VALUE],                  ! File handle
  307.      +   State)                               ! Location for state
  308.  
  309.     INTEGER*2 FileHandle, State
  310.  
  311.     END
  312.  
  313.     INTERFACE TO INTEGER*2 FUNCTION DosSetFHandState
  314.      +  [ALIAS: 'DOSSETFHANDSTATE']
  315.      +  (FileHandle [VALUE],                  ! File handle
  316.      +   State [VALUE])                       ! New state
  317.  
  318.  
  319.     INTEGER*2 FileHandle, State
  320.  
  321.     END
  322.  
  323.     INTERFACE TO INTEGER*2 FUNCTION DosQHandType
  324.      +  [ALIAS: 'DOSQHANDTYPE']
  325.      +  (FileHandle [VALUE],                  ! File handle
  326.      +   HandType,                            ! Handle type response
  327.      +   FlagWord)                            ! Device descriptor
  328.  
  329.     INTEGER*2 FileHandle, HandType, FlagWord
  330.  
  331.     END
  332.  
  333.     INTERFACE TO INTEGER*2 FUNCTION DosReadAsync
  334.      +  [ALIAS: 'DOSREADASYNC']
  335.      +  (FileHandle [VALUE],                  ! File handle
  336.      +   RamSemaphore,                        ! Address of RAM sem.
  337.      +   ReturnCode,                          ! Loc for return code
  338.      +   BufferArea,                          ! Address of buffer
  339.      +   BufferLength [VALUE],                ! Length of buffer
  340.      +   BytesRead)                           ! Bytes read from buffer
  341.  
  342.     INTEGER*2 FileHandle, RamSemaphore*4, ReturnCode,
  343.      +            BufferArea*1(*), BufferLength, BytesRead
  344.  
  345.     END
  346.  
  347.     INTERFACE TO INTEGER*2 FUNCTION DosWriteAsync
  348.      +  [ALIAS: 'DOSWRITEASYNC']
  349.      +  (FileHandle [VALUE],                  ! File handle
  350.      +   RamSemaphore,                        ! Address of RAM sem.
  351.      +   ReturnCode,                          ! Loc for return code
  352.      +   BufferArea,                          ! Address of buffer
  353.      +   BufferLength [VALUE],                ! Length of buffer
  354.      +   BytesWritten)                        ! Bytes written to buffer
  355.  
  356.     INTEGER*2 FileHandle, RamSemaphore*4, ReturnCode,
  357.      +            BufferArea*1(*), BufferLength, BytesWritten
  358.  
  359.     END
  360.  
  361.     INTERFACE TO INTEGER*2 FUNCTION DosFindFirst
  362.      +  [ALIAS: 'DOSFINDFIRST']
  363.      +  (FileName,                            ! File pathname
  364.      +   DirHandle,                           ! Dir search handle
  365.      +   Attribute [VALUE],                   ! Search attribute
  366.      +   FindbufPtr,                          ! Result buffer
  367.      +   ResultBufLen [VALUE],                ! Result buffer length
  368.      +   SearchCount,                         ! Num. entries to find
  369.      +   Reserved [VALUE])                    ! Reserved (must =0)
  370.  
  371.     CHARACTER*(*) FileName
  372.     INTEGER*2 DirHandle, Attribute, ResultBufLen,
  373.      +            SearchCount, Reserved*4
  374.     STRUCTURE/FILEFINDBUF/
  375.        INTEGER*2 fdateCreation
  376.        INTEGER*2 ftimeCreation
  377.        INTEGER*2 fdateLastAccess
  378.        INTEGER*2 ftimeLastAccess
  379.        INTEGER*2 fdateLastWrite
  380.        INTEGER*2 ftimeLastWrite
  381.        INTEGER*4 cbFile                   ! End of file data
  382.        INTEGER*4 cbFileAlloc              ! File size allocated
  383.        INTEGER*2 attrFile                 ! File attribute
  384.        INTEGER*1 cchName                  ! Length of null-terminated name
  385.        CHARACTER*13 achName               ! Null-terminated name
  386.     END STRUCTURE
  387.     RECORD/FILEFINDBUF/ FindbufPtr
  388.  
  389.     END
  390.  
  391.     INTERFACE TO INTEGER*2 FUNCTION DosFindNext
  392.      +  [ALIAS: 'DOSFINDNEXT']
  393.      +  (DirHandle [VALUE],                   ! Directory handle
  394.      +   FindbufPtr,                          ! Result buffer
  395.      +   ResultBufLen [VALUE],                ! Result buffer length
  396.      +   SearchCount)                         ! Num. entries to find
  397.  
  398.     INTEGER*2 DirHandle, ResultBufLen, SearchCount
  399.     STRUCTURE/FILEFINDBUF/
  400.        INTEGER*2 fdateCreation
  401.        INTEGER*2 ftimeCreation
  402.        INTEGER*2 fdateLastAccess
  403.        INTEGER*2 ftimeLastAccess
  404.        INTEGER*2 fdateLastWrite
  405.        INTEGER*2 ftimeLastWrite
  406.        INTEGER*4 cbFile                   ! End of file data
  407.        INTEGER*4 cbFileAlloc              ! File size allocated
  408.        INTEGER*2 attrFile                 ! File attribute
  409.        INTEGER*1 cchName                  ! Length of null-terminated name
  410.        CHARACTER*13 achName               ! Null-terminated name
  411.     END STRUCTURE
  412.     RECORD/FILEFINDBUF/ FindbufPtr
  413.  
  414.     END
  415.  
  416.     INTERFACE TO INTEGER*2 FUNCTION DosFindClose
  417.      +  [ALIAS: 'DOSFINDCLOSE']
  418.      +  (DirHandle [VALUE])                   ! Directory handle
  419.  
  420.     INTEGER*2 DirHandle
  421.  
  422.     END
  423.  
  424.     INTERFACE TO INTEGER*2 FUNCTION DosNewSize
  425.      +  [ALIAS: 'DOSNEWSIZE']
  426.      +  (FileHandle [VALUE],                  ! File handle
  427.      +   Size [VALUE])                        ! File's new size
  428.  
  429.     INTEGER*2 FileHandle, Size*4
  430.  
  431.     END
  432.  
  433.     INTERFACE TO INTEGER*2 FUNCTION DosBufReset
  434.      +  [ALIAS: 'DOSBUFRESET']
  435.      +  (FileHandle [VALUE])                  ! File handle
  436.  
  437.     INTEGER*2 FileHandle
  438.  
  439.     END
  440.  
  441.     INTERFACE TO INTEGER*2 FUNCTION DosChgFilePtr
  442.      +  [ALIAS: 'DOSCHGFILEPTR']
  443.      +  (FileHandle [VALUE],                  ! File handle
  444.      +   Distance [VALUE],                    ! Move distance in bytes
  445.      +   MoveType [VALUE],                    ! Method of moving
  446.      +   NewPointer)                          ! New pointer location
  447.  
  448.     INTEGER*2 FileHandle, Distance*4, MoveType, NewPointer*4
  449.  
  450.     END
  451.  
  452.     INTERFACE TO INTEGER*2 FUNCTION DosFileLocks
  453.      +  [ALIAS: 'DOSFILELOCKS']
  454.      +  (FileHandle [VALUE],                  ! File handle
  455.      +   UnlockRange,                         ! Unlock range
  456.      +   LockRange)                           ! Lock range
  457.  
  458.     INTEGER*2 FileHandle, UnlockRange*4, LockRange*4
  459.  
  460.     END
  461.  
  462.     INTERFACE TO INTEGER*2 FUNCTION DosMove
  463.      +  [ALIAS: 'DOSMOVE']
  464.      +  (OldName,                             ! Old pathname
  465.      +   NewName,                             ! New pathname
  466.      +   Reserved [VALUE])                    ! Reserved (must =0)
  467.  
  468.     CHARACTER*(*) OldName, NewName
  469.     INTEGER*4 Reserved
  470.  
  471.     END
  472.  
  473.     INTERFACE TO INTEGER*2 FUNCTION DosMkdir
  474.      +  [ALIAS: 'DOSMKDIR']
  475.      +  (DirName,                             ! New directory name
  476.      +   Reserved [VALUE])                    ! Reserved (must =0)
  477.  
  478.     CHARACTER*(*) DirName
  479.     INTEGER*4 Reserved
  480.  
  481.     END
  482.  
  483.     INTERFACE TO INTEGER*2 FUNCTION DosRmdir
  484.      +  [ALIAS: 'DOSRMDIR']
  485.      +  (DirName,                             ! Directory to delete
  486.      +   Reserved [VALUE])                    ! Reserved (must =0)
  487.  
  488.     CHARACTER*(*) DirName
  489.     INTEGER*4 Reserved
  490.  
  491.     END
  492.  
  493.     INTERFACE TO INTEGER*2 FUNCTION DosSelectDisk
  494.      +  [ALIAS: 'DOSSELECTDISK']
  495.      +  (DriveNumber [VALUE])                 ! Default drive number
  496.  
  497.     INTEGER*2 DriveNumber
  498.  
  499.     END
  500.  
  501.     INTERFACE TO INTEGER*2 FUNCTION DosQCurDisk
  502.      +  [ALIAS: 'DOSQCURDISK']
  503.      +  (DriveNumber,                         ! Default drive number
  504.      +   LogicalDriveMap)                     ! Drive map area
  505.  
  506.     INTEGER*2 DriveNumber, LogicalDriveMap*4
  507.  
  508.     END
  509.  
  510.     INTERFACE TO INTEGER*2 FUNCTION DosChDir
  511.      +  [ALIAS: 'DOSCHDIR']
  512.      +  (DirName,                             ! Directory path name
  513.      +   Reserved [VALUE])                    ! Reserved (must be 0)
  514.  
  515.     CHARACTER*(*) DirName
  516.     INTEGER*4 Reserved
  517.  
  518.     END
  519.  
  520.     INTERFACE TO INTEGER*2 FUNCTION DosQCurDir
  521.      +  [ALIAS: 'DOSQCURDIR']
  522.      +  ( DriveNumber [VALUE],                ! Drive number
  523.      +   DirPath,                             ! Path buffer
  524.      +   DirPathLen)                          ! Path buffer length
  525.  
  526.     INTEGER*2 DriveNumber, DirPathLen
  527.     CHARACTER*(*) DirPath
  528.  
  529.     END
  530.  
  531.     INTERFACE TO INTEGER*2 FUNCTION DosQFSInfo
  532.      +  [ALIAS: 'DOSQFSINFO']
  533.      +  (DriveNumber [VALUE],                 ! Drive number
  534.      +   FSInfoLevel [VALUE],                 ! Info required
  535.      +   FSInfoBufPtr,                        ! Info buffer
  536.      +   FSInfoBufSize [VALUE])               ! Info buffer size
  537.  
  538.     INTEGER*2 DriveNumber, FSInfoLevel, FSInfoBufSize
  539.     STRUCTURE/QFSINFO/
  540.        UNION
  541.           MAP                             ! used if FSInfoLevel = 1
  542.              INTEGER*4 idFileSystem
  543.              INTEGER*4 cSectorUnit
  544.              INTEGER*4 cUnit
  545.              INTEGER*4 cUnitAvail
  546.              INTEGER*2 cbSector
  547.           END MAP
  548.           MAP                             ! used if FSInfoLevel = 2
  549.              INTEGER*2 fdateCreation
  550.              INTEGER*2 ftimeCreation
  551.              INTEGER*1 cchName
  552.              CHARACTER*14 achname
  553.           END MAP
  554.        END UNION
  555.     END STRUCTURE
  556.     RECORD/QFSINFO/ FSInfoBufPtr
  557.  
  558.     END
  559.  
  560.     INTERFACE TO INTEGER*2 FUNCTION DosSetFSInfo
  561.      +  [ALIAS: 'DOSSETFSINFO']
  562.      +  (DriveNumber [VALUE],                 ! Drive number
  563.      +   FSInfoLevel [VALUE],                 ! Info required
  564.      +   FSInfoBufPtr,                        ! Info buffer
  565.      +   FSInfoBufSize [VALUE])               ! Info buffer size
  566.  
  567.     INTEGER*2 DriveNumber, FSInfoLevel, FSInfoBufSize
  568.     STRUCTURE/SETFSINFO/
  569.        INTEGER*1 volid_len
  570.        CHARACTER*13 volid
  571.     END STRUCTURE
  572.     RECORD/SETFSINFO/ FSInfoBufPtr
  573.  
  574.     END
  575.  
  576.     INTERFACE TO INTEGER*2 FUNCTION DosQVerify
  577.      +  [ALIAS: 'DOSQVERIFY']
  578.      +  (VerifyMode)                          ! Verification mode
  579.  
  580.     INTEGER*2 VerifyMode
  581.  
  582.     END
  583.  
  584.     INTERFACE TO INTEGER*2 FUNCTION DosSetVerify
  585.      +  [ALIAS: 'DOSSETVERIFY']
  586.      +  (Setting [VALUE])                     ! Verify switch value
  587.  
  588.     INTEGER*2 Setting
  589.  
  590.     END
  591.  
  592.     INTERFACE TO INTEGER*2 FUNCTION DosSetMaxFH
  593.      +  [ALIAS: 'DOSSETMAXFH']
  594.      +  (Handles [VALUE])                     ! Number of file handles
  595.  
  596.     INTEGER*2 Handles
  597.  
  598.     END
  599.  
  600.     INTERFACE TO INTEGER*2 FUNCTION DosQFileInfo
  601.      +  [ALIAS: 'DOSQFILEINFO']
  602.      +  (FileHandle [VALUE],                  ! File handle
  603.      +   FileInfoLevel [VALUE],               ! File data required
  604.      +   FileInfoBufPtr,                      ! File data buffer
  605.      +   FileInfoBufSize [VALUE])             ! File data buffer size
  606.  
  607.     INTEGER*2 FileHandle, FileInfoLevel, FileInfoBufSize
  608.     STRUCTURE/FILESTATUS/
  609.        INTEGER*2 fdateCreation
  610.        INTEGER*2 ftimeCreation
  611.        INTEGER*2 fdateLastAccess
  612.        INTEGER*2 ftimeLastAccess
  613.        INTEGER*2 fdateLastWrite
  614.        INTEGER*2 ftimeLastWrite
  615.        INTEGER*4 cbFile
  616.        INTEGER*4 cbFileAlloc
  617.        INTEGER*2 attrFile
  618.     END STRUCTURE
  619.     RECORD/FILESTATUS/ FileInfoBufPtr
  620.  
  621.     END
  622.  
  623.     INTERFACE TO INTEGER*2 FUNCTION DosSetFileInfo
  624.      +  [ALIAS: 'DOSSETFILEINFO']
  625.      +  (FileHandle [VALUE],                  ! File handle
  626.      +   FileInfoLevel [VALUE],               ! File data required
  627.      +   FileInfoBufPtr,                      ! File data buffer
  628.      +   FileInfoBufSize [VALUE])             ! File data buffer size
  629.  
  630.     INTEGER*2 FileHandle, FileInfoLevel, FileInfoBufSize
  631.     STRUCTURE/FILESTATUS/
  632.        INTEGER*2 fdateCreation
  633.        INTEGER*2 ftimeCreation
  634.        INTEGER*2 fdateLastAccess
  635.        INTEGER*2 ftimeLastAccess
  636.        INTEGER*2 fdateLastWrite
  637.        INTEGER*2 ftimeLastWrite
  638.        INTEGER*4 cbFile
  639.        INTEGER*4 cbFileAlloc
  640.        INTEGER*2 attrFile
  641.     END STRUCTURE
  642.     RECORD/FILESTATUS/ FileInfoBufPtr
  643.  
  644.     END
  645.  
  646.     INTERFACE TO INTEGER*2 FUNCTION DosQFileMode
  647.      +  [ALIAS: 'DOSQFILEMODE']
  648.      +  (FileName,                            ! Pathname
  649.      +   Attribute,                           ! Data area
  650.      +   Reserved [VALUE])                    ! Reserved (must =0)
  651.  
  652.     CHARACTER*(*) Filename
  653.     INTEGER*2 Attribute, Reserved*4
  654.  
  655.     END
  656.  
  657.     INTERFACE TO INTEGER*2 FUNCTION DosSetFileMode
  658.      +  [ALIAS: 'DOSSETFILEMODE']
  659.      +  (FileName,                            ! Pathname
  660.      +   Attribute [VALUE],                   ! New attribute
  661.      +   Reserved [VALUE])                    ! Reserved (must =0)
  662.  
  663.     CHARACTER*(*) Filename
  664.     INTEGER*2 Attribute, Reserved*4
  665.  
  666.     END
  667.  
  668. $ENDIF                                  ! common INCL_DOSFILEMGR interfaces
  669.  
  670.  
  671.  
  672. $IF defined(INCL_MEMMGR) .OR. .NOT. defined(INCL_NOCOMMON)
  673.  
  674. C    ! Memory management
  675.  
  676.     INTERFACE TO INTEGER*2 FUNCTION DosAllocSeg
  677.      +  [ALIAS: 'DOSALLOCSEG']
  678.      +  (Size [VALUE],                        ! Number of bytes requested
  679.      +   Selector,                            ! Selector allocated
  680.      +   AllocFlags [VALUE])                  ! Sharing indicator
  681.  
  682.     INTEGER*2 Size, Selector, AllocFlags
  683.  
  684.     END
  685.  
  686.     INTERFACE TO INTEGER*2 FUNCTION DosReallocSeg
  687.      +  [ALIAS: 'DOSREALLOCSEG']
  688.      +  (Size [VALUE],                        ! New segment size in bytes
  689.      +   Selector)                            ! Selector
  690.  
  691.     INTEGER*2 Size, Selector
  692.  
  693.     END
  694.  
  695.     INTERFACE TO INTEGER*2 FUNCTION DosFreeSeg
  696.      +  [ALIAS: 'DOSFREESEG']
  697.      +  (Selector [VALUE])                    ! Selector
  698.  
  699.     INTEGER*2 Selector
  700.  
  701.     END
  702.  
  703.     INTERFACE TO INTEGER*2 FUNCTION DosGiveSeg
  704.      +  [ALIAS: 'DOSGIVESEG']
  705.      +  (CallerSegHandle [VALUE],             ! Caller's segment handle
  706.      +   ProcessID [VALUE],                   ! Process ID of recipient
  707.      +   RecipientSegHandle)                  ! Recipient's segment handle
  708.  
  709.     INTEGER*2 CallerSegHandle, ProcessID, RecipientSegHandle
  710.  
  711.     END
  712.  
  713.     INTERFACE TO INTEGER*2 FUNCTION DosGetSeg
  714.      +  [ALIAS: 'DOSGETSEG']
  715.      +  (Selector [VALUE])                    ! Selector to access
  716.  
  717.     INTEGER*2 Selector
  718.  
  719.     END
  720.  
  721. $ENDIF                                  ! common INCL_DOSMEMMGR interfaces
  722.  
  723.  
  724. $IF defined(INCL_DOSMEMMGR)          ! INCL_DOSMEMMGR interfaces
  725.  
  726.     INTERFACE TO INTEGER*2 FUNCTION DosAllocHuge
  727.      +  [ALIAS: 'DOSALLOCHUGE']
  728.      +  (NumSeg [VALUE],                      ! Number of 64k byte segments
  729.      +   Size [VALUE],                        ! Bytes in last segment
  730.      +   Selector,                            ! Selector allocated (returned)
  731.      +   MaxNumSeg [VALUE],                   ! Max number of 64k-byte segments
  732.      +   AllocFlags [VALUE])                  ! Specifies segment will be shared
  733.  
  734.     INTEGER*2 Numseg, Size, Selector, MaxNumSeg, AllocFlags
  735.  
  736.     END
  737.  
  738.     INTERFACE TO INTEGER*2 FUNCTION DosReallocHuge
  739.      +  [ALIAS: 'DOSREALLOCHUGE']
  740.      +  (NumSeg [VALUE],                      ! Number of 64k byte segments
  741.      +   Size [VALUE],                        ! Bytes in last segment
  742.      +   Selector [VALUE])                    ! Selector
  743.  
  744.     INTEGER*2 Numseg, Size, Selector
  745.  
  746.     END
  747.  
  748.     INTERFACE TO INTEGER*2 FUNCTION DosGetHugeShift
  749.      +  [ALIAS: 'DOSGETHUGESHIFT']
  750.      +  (ShiftCount)                          ! Shift count
  751.  
  752.     INTEGER*2 ShiftCount
  753.  
  754.     END
  755.  
  756.     INTERFACE TO INTEGER*2 FUNCTION DosAllocShrSeg
  757.      +  [ALIAS: 'DOSALLOCSHRSEG']
  758.      +  (Size [VALUE],                        ! Number of bytes requested
  759.      +   Name,                                ! Name string
  760.      +   Selector)                            ! Selector allocated
  761.  
  762.     CHARACTER*(*) Name
  763.     INTEGER*2 Size, Selector
  764.  
  765.     END
  766.  
  767.     INTERFACE TO INTEGER*2 FUNCTION DosLockSeg
  768.      +  [ALIAS: 'DOSLOCKSEG']
  769.      +  (Selector [VALUE])                    ! Selector to access
  770.  
  771.     INTEGER*2 Selector
  772.  
  773.     END
  774.  
  775.     INTERFACE TO INTEGER*2 FUNCTION DosUnLockSeg
  776.      +  [ALIAS: 'DOSUNLOCKSEG']
  777.      +  (Selector [VALUE])                    ! Selector to access
  778.  
  779.     INTEGER*2 Selector
  780.  
  781.     END
  782.  
  783.     INTERFACE TO INTEGER*2 FUNCTION DosGetShrSeg
  784.      +  [ALIAS: 'DOSGETSHRSEG']
  785.      +  (Name,                                ! Name string
  786.      +   Selector)                            ! Selector (returned)
  787.  
  788.     CHARACTER*(*) Name
  789.     INTEGER*2 Selector
  790.  
  791.     END
  792.  
  793.     INTERFACE TO INTEGER*2 FUNCTION DosMemAvail
  794.      +  [ALIAS: 'DOSMEMAVAIL']
  795.      +  (MemAvailSize)                        ! Memory size
  796.  
  797.     INTEGER*4 MemAvailSize
  798.  
  799.     END
  800.  
  801.     INTERFACE TO INTEGER*2 FUNCTION DosCreateCSAlias
  802.      +  [ALIAS: 'DOSCREATECSALIAS']
  803.      +  (DataSelector [VALUE],                ! Data segment selector
  804.      +   CodeSelector)                        ! Code segment selector
  805.  
  806.     INTEGER*2 DataSelector, CodeSelector
  807.  
  808.     END
  809.  
  810.     INTERFACE TO INTEGER*2 FUNCTION DosSubAlloc
  811.      +  [ALIAS: 'DOSSUBALLOC']
  812.      +  (SegSelector [VALUE],                 ! Segment selector
  813.      +   BlockOffset,                         ! Address of block offset
  814.      +   Size [VALUE])                        ! Size of requested block
  815.  
  816.     INTEGER*2 SegSelector, BlockOffset, Size
  817.  
  818.     END
  819.  
  820.     INTERFACE TO INTEGER*2 FUNCTION DosSubFree
  821.      +  [ALIAS: 'DOSSUBFREE']
  822.      +  (SegSelector [VALUE],                 ! Segment selector
  823.      +   BlockOffset [VALUE],                 ! Offset of block to free
  824.      +   Size [VALUE])                        ! Size of block in bytes
  825.  
  826.     INTEGER*2 SegSelector, BlockOffset, Size
  827.  
  828.     END
  829.  
  830.     INTERFACE TO INTEGER*2 FUNCTION DosSubSet
  831.      +  [ALIAS: 'DOSSUBSET']
  832.      +  (SegSelector [VALUE],                 ! Segment selector
  833.      +   Flags [VALUE],                       ! Parameter flags
  834.      +   Size [VALUE])                        ! New size of block
  835.  
  836.     INTEGER*2 SegSelector, Flags, Size
  837.  
  838.     END
  839.  
  840. $ENDIF                                  ! INCL_DOSMEMMGR interfaces
  841.  
  842.  
  843. $IF defined(INCL_SEMAPHORES) .OR. .NOT. defined(INCL_NOCOMMON)
  844.  
  845. C    ! Semaphore support
  846.  
  847.     INTERFACE TO INTEGER*2 FUNCTION DosSemClear
  848.      +  [ALIAS: 'DOSSEMCLEAR']
  849.      +  (SemHandle [VALUE])                   ! Semaphore handle
  850.  
  851.     INTEGER*4 SemHandle
  852.  
  853.     END
  854.  
  855.     INTERFACE TO INTEGER*2 FUNCTION DosSemSet
  856.      +  [ALIAS: 'DOSSEMSET']
  857.      +  (SemHandle [VALUE])                   ! Semaphore handle
  858.  
  859.     INTEGER*4 SemHandle
  860.  
  861.     END
  862.  
  863.     INTERFACE TO INTEGER*2 FUNCTION DosSemWait
  864.      +  [ALIAS: 'DOSSEMWAIT']
  865.      +  (SemHandle [VALUE],                   ! Semaphore handle
  866.      +   Timeout [VALUE])                     ! Timeout
  867.  
  868.     INTEGER*4 SemHandle, TimeOut
  869.  
  870.     END
  871.  
  872.     INTERFACE TO INTEGER*2 FUNCTION DosSemSetWait
  873.      +  [ALIAS: 'DOSSEMSETWAIT']
  874.      +  (SemHandle [VALUE],                   ! Semaphore handle
  875.      +   Timeout [VALUE])                     ! Timeout
  876.  
  877.     INTEGER*4 SemHandle, TimeOut
  878.  
  879.     END
  880.  
  881.     INTERFACE TO INTEGER*2 FUNCTION DosSemRequest
  882.      +  [ALIAS: 'DOSSEMREQUEST']
  883.      +  (SemHandle [VALUE],                   ! Semaphore handle
  884.      +   Timeout [VALUE])                     ! Timeout
  885.  
  886.     INTEGER*4 SemHandle, TimeOut
  887.  
  888.     END
  889.  
  890. $ENDIF                                  ! common INCL_DOSSEMAPHORES interfaces
  891.  
  892.  
  893. $IF defined(INCL_DOSSEMAPHORES)      ! INCL_DOSSEMAPHORES interfaces
  894.  
  895.     INTERFACE TO INTEGER*2 FUNCTION DosCreateSem
  896.      +  [ALIAS: 'DOSCREATESEM']
  897.      +  (NoExclusive [VALUE],                 ! Exclusive ownership
  898.      +   SemHandle,                           ! Address of semaphore handle
  899.      +   SemName)                             ! Name of semaphore
  900.  
  901.     CHARACTER*(*) SemName
  902.     INTEGER*2 NoExclusive, SemHandle*4
  903.  
  904.     END
  905.  
  906.     INTERFACE TO INTEGER*2 FUNCTION DosOpenSem
  907.      +  [ALIAS: 'DOSOPENSEM']
  908.      +  (SemHandle,                           ! Address of semaphore handle
  909.      +   SemName)                             ! Name of semaphore
  910.  
  911.     CHARACTER*(*) SemName
  912.     INTEGER*4 SemHandle
  913.  
  914.     END
  915.  
  916.     INTERFACE TO INTEGER*2 FUNCTION DosCloseSem
  917.      +  [ALIAS: 'DOSCLOSESEM']
  918.      +  (SemHandle [VALUE])                   ! Semaphore handle
  919.  
  920.     INTEGER*4 SemHandle
  921.  
  922.     END
  923.  
  924.     INTERFACE TO INTEGER*2 FUNCTION DosMuxSemWait
  925.      +  [ALIAS: 'DOSMUXSEMWAIT']
  926.      +  (IndexNum,                            ! Address of index num
  927.      +   SemListPtr,                          ! Address of sem list
  928.      +   Timeout [VALUE])                     ! Timeout
  929.  
  930.     INTEGER*2 IndexNum, TimeOut*4
  931.     STRUCTURE/MUXSEM/
  932.        INTEGER*2 zero
  933.        INTEGER*2 hsem
  934.     END STRUCTURE
  935.  
  936.     STRUCTURE/MUXSEMLIST/
  937.        INTEGER*2 cmxs
  938.        RECORD/MUXSEM/ amxs(16)
  939.     END STRUCTURE
  940.     RECORD/MUXSEMLIST/ SemListPtr
  941.  
  942.     END
  943.  
  944. $ENDIF                                  ! INCL_DOSSEMAPHORES interfaces
  945.  
  946.  
  947. $IF defined(INCL_DOSDATETIME) .OR. .NOT. defined(INCL_NOCOMMON)
  948.  
  949.     INTERFACE TO INTEGER*2 FUNCTION DosGetDateTime
  950.      +  [ALIAS: 'DOSGETDATETIME']
  951.      +  (DateTimePtr)                         ! Address of date/time
  952.  
  953.     STRUCTURE/DATETIME/
  954.        INTEGER*1 hours
  955.        INTEGER*1 minutes
  956.        INTEGER*1 seconds
  957.        INTEGER*1 hundredths
  958.        INTEGER*1 day
  959.        INTEGER*1 month
  960.        INTEGER*2 year
  961.        INTEGER*2 timezone
  962.        INTEGER*1 weekday
  963.     END STRUCTURE
  964.     RECORD/DATETIME/ DateTimePtr
  965.  
  966.     END
  967.  
  968.     INTERFACE TO INTEGER*2 FUNCTION DosSetDateTime
  969.      +  [ALIAS: 'DOSSETDATETIME']
  970.      +  (DateTimePtr)                         ! Address of date/time
  971.  
  972.     STRUCTURE/DATETIME/
  973.        INTEGER*1 hours
  974.        INTEGER*1 minutes
  975.        INTEGER*1 seconds
  976.        INTEGER*1 hundredths
  977.        INTEGER*1 day
  978.        INTEGER*1 month
  979.        INTEGER*2 year
  980.        INTEGER*2 timezone
  981.        INTEGER*1 weekday
  982.     END STRUCTURE
  983.     RECORD/DATETIME/ DateTimePtr
  984.  
  985.     END
  986.  
  987. $ENDIF                                  ! common INCL_DOSDATETIME interfaces
  988.  
  989.  
  990. $IF defined(INCL_DOSDATETIME)        ! INCL_DOSDATETIME interfaces
  991.  
  992.     INTERFACE TO INTEGER*2 FUNCTION DosTimerAsync
  993.      +  [ALIAS: 'DOSTIMERASYNC']
  994.      +  (TimerInterval [VALUE],               ! Interval size
  995.      +   SemHandle [VALUE],                   ! Handle of semaphore
  996.      +   Handle)                              ! Handle of timer
  997.  
  998.     INTEGER*2 TimerInterval*4, SemHandle*4, Handle
  999.  
  1000.     END
  1001.  
  1002.     INTERFACE TO INTEGER*2 FUNCTION DosTimerStart
  1003.      +  [ALIAS: 'DOSTIMERSTART']
  1004.      +  (TimerInterval [VALUE],               ! Interval size
  1005.      +   SemHandle [VALUE],                   ! Handle of semaphore
  1006.      +   Handle)                              ! Handle of timer
  1007.  
  1008.     INTEGER*2 TimerInterval*4, SemHandle*4, Handle
  1009.  
  1010.     END
  1011.  
  1012.     INTERFACE TO INTEGER*2 FUNCTION DosTimerStop
  1013.      +  [ALIAS: 'DOSTIMERSTOP']
  1014.      +  (Handle [VALUE])                      ! Handle of the timer
  1015.  
  1016.     INTEGER*2 Handle
  1017.  
  1018.     END
  1019.  
  1020. $ENDIF                                  ! INCL_DOSDATETIME interfaces
  1021.  
  1022.  
  1023. $IF defined(INCL_DOSMODULEMGR)       ! INCL_DOSMODULEMGR interfaces
  1024.  
  1025.     INTERFACE TO INTEGER*2 FUNCTION DosLoadModule
  1026.      +  [ALIAS: 'DOSLOADMODULE']
  1027.      +  (ObjName,                             ! Object name buffer
  1028.      +   ObjNameLen [VALUE],                  ! Length of object name
  1029.      +   ModuleName,                          ! Module name string
  1030.      +   ModuleHandle)                        ! Module handle
  1031.  
  1032.     CHARACTER*(*) ModuleName
  1033.     INTEGER*2 ObjName*1(*), ObjNameLen, ModuleHandle
  1034.  
  1035.     END
  1036.  
  1037.     INTERFACE TO INTEGER*2 FUNCTION DosFreeModule
  1038.      +  [ALIAS: 'DOSFREEMODULE']
  1039.      +  (ModuleHandle [VALUE])                ! Module handle
  1040.  
  1041.     INTEGER*2 ModuleHandle
  1042.  
  1043.     END
  1044.  
  1045.     INTERFACE TO INTEGER*2 FUNCTION DosGetProcAddr
  1046.      +  [ALIAS: 'DOSGETPROCADDR']
  1047.      +  (ModuleHandle [VALUE],                ! Module handle
  1048.      +   ProcName,                            ! Module name string
  1049.      +   ProcAddr)                            ! Procedure address
  1050.  
  1051.     CHARACTER*(*) ProcName
  1052.     INTEGER*2 ModuleHandle, ProcAddr*4
  1053.  
  1054.  
  1055.     END
  1056.  
  1057.     INTERFACE TO INTEGER*2 FUNCTION DosGetModHandle
  1058.      +  [ALIAS: 'DOSGETMODHANDLE']
  1059.      +  (ModuleName,                          ! Module name
  1060.      +   ModuleHandle)                        ! Module handle
  1061.  
  1062.     CHARACTER*(*) ModuleName
  1063.     INTEGER*2 ModuleHandle
  1064.  
  1065.     END
  1066.  
  1067.     INTERFACE TO INTEGER*2 FUNCTION DosGetModName
  1068.      +  [ALIAS: 'DOSGETMODNAME']
  1069.      +  (ModuleHandle [VALUE],                ! Module handle
  1070.      +   BufferLength [VALUE],                ! Maximum buffer length
  1071.      +   Buffer)                              ! Buffer (returned)
  1072.  
  1073.     INTEGER*2 ModuleHandle, BufferLength, Buffer*1(*)
  1074.  
  1075.     END
  1076.  
  1077. $ENDIF                                  ! INCL_DOSMODULEMGR interfaces
  1078.  
  1079.  
  1080. $IF defined(INCL_DOSRESOURCES)       ! INCL_DOSRESOURCES interfaces
  1081.  
  1082.     INTERFACE TO INTEGER*2 FUNCTION DosGetResource
  1083.      +  [ALIAS: 'DOSGETRESOURCE']
  1084.      +  (ModuleHandle [VALUE],                ! Module handle
  1085.      +   TypeID [VALUE],                      ! Type ID
  1086.      +   NameID [VALUE],                      ! Name ID
  1087.      +   Selector)                            ! Selector (returned)
  1088.  
  1089.     INTEGER*2 ModuleHandle, TypeID, NameID, Selector
  1090.  
  1091.     END
  1092.  
  1093. $ENDIF                                  ! INCL_DOSRESOURCES interfaces
  1094.  
  1095.  
  1096. $IF defined(INCL_DOSNLS)             ! INCL_DOSNLS interfaces
  1097.  
  1098. C    ! NLS Support
  1099.  
  1100.     INTERFACE TO INTEGER*2 FUNCTION DosGetCtryInfo
  1101.      +  [ALIAS: 'DOSGETCTRYINFO']
  1102.      +  (Length [VALUE],                      ! Data area length
  1103.      +   CountryCodePtr,                      ! Country code
  1104.      +   CountryInfoBuf,                      ! Country info
  1105.      +   DataLength)                          ! Data length
  1106.  
  1107.     INTEGER*2 Length, DataLength
  1108.     STRUCTURE/COUNTRYCODE/
  1109.        INTEGER*2 country
  1110.        INTEGER*2 codepage
  1111.     END STRUCTURE
  1112.     RECORD/COUNTRYCODE/ CountryCodePtr
  1113.     STRUCTURE/COUNTRYINFO/
  1114.        INTEGER*2 country                 ! country code
  1115.        INTEGER*2 codepage                ! Reserved value (must =0)
  1116.        INTEGER*2 fsDateFmt               ! Date format
  1117.        CHARACTER*5 szCurrency
  1118.        CHARACTER*2 szThousandsSeparator
  1119.        CHARACTER*2 szDecimal
  1120.        CHARACTER*2 szDateSeparator
  1121.        CHARACTER*2 szTimeSeparator
  1122.        INTEGER*1 fsCurrencyFmt
  1123.        INTEGER*1 cDecimalPlace
  1124.        INTEGER*1 fsTimeFmt
  1125.        INTEGER*2 abReserved(2)           ! Reserved (must =0)
  1126.        CHARACTER*2 szDataSeparator
  1127.        INTEGER*2 abReserved2(2)          ! Reserved (must =0)
  1128.     END STRUCTURE
  1129.     RECORD/COUNTRYINFO/ CountryInfoBuf
  1130.  
  1131.     END
  1132.  
  1133.     INTERFACE TO INTEGER*2 FUNCTION DosGetDBCSEv
  1134.      +  [ALIAS: 'DOSGETDBCSEV']
  1135.      +  (Length [VALUE],                      ! Data area length
  1136.      +   CountryCodePtr,                      ! Country code
  1137.      +   EnvVector)                           ! Data area
  1138.  
  1139.     INTEGER*2 Length, EnvVector*1(*)
  1140.     STRUCTURE/COUNTRYCODE/
  1141.        INTEGER*2 country
  1142.        INTEGER*2 codepage
  1143.     END STRUCTURE
  1144.     RECORD/COUNTRYCODE/ CountryCodePtr
  1145.  
  1146.     END
  1147.  
  1148.     INTERFACE TO INTEGER*2 FUNCTION DosCaseMap
  1149.      +  [ALIAS: 'DOSCASEMAP']
  1150.      +  (Length [VALUE],                      ! String's length
  1151.      +   CountryCodePtr,                      ! Country code
  1152.      +   String)                              ! String to map
  1153.  
  1154.     INTEGER*2 Length
  1155.     CHARACTER*(*) String
  1156.     STRUCTURE/COUNTRYCODE/
  1157.        INTEGER*2 country
  1158.        INTEGER*2 codepage
  1159.     END STRUCTURE
  1160.     RECORD/COUNTRYCODE/ CountryCodePtr
  1161.  
  1162.     END
  1163.  
  1164.     INTERFACE TO INTEGER*2 FUNCTION DosGetCollate
  1165.      +  [ALIAS: 'DOSGETCOLLATE']
  1166.      +  (Length [VALUE],                      ! Data area length
  1167.      +   CountryCodePtr,                      ! Country code
  1168.      +   CollateTable,                        ! Data area
  1169.      +   DataLength)                          ! Table length
  1170.  
  1171.     INTEGER*2 Length, CollateTable*1(*), DataLength
  1172.     STRUCTURE/COUNTRYCODE/
  1173.        INTEGER*2 country
  1174.        INTEGER*2 codepage
  1175.     END STRUCTURE
  1176.     RECORD/COUNTRYCODE/ CountryCodePtr
  1177.  
  1178.     END
  1179.  
  1180.     INTERFACE TO INTEGER*2 FUNCTION DosGetCp
  1181.      +  [ALIAS: 'DOSGETCP']
  1182.      +  (Length [VALUE],                      ! Length of list
  1183.      +   CodePageList,                        ! Address of list
  1184.      +   DataLength)                          ! Length returned list
  1185.  
  1186.     INTEGER*2 Length, CodePageList(*), DataLength
  1187.  
  1188.     END
  1189.  
  1190.     INTERFACE TO INTEGER*2 FUNCTION DosSetCp
  1191.      +  [ALIAS: 'DOSSETCP']
  1192.      +  (CodePage [VALUE],                    ! Code page id
  1193.      +   Reserved [VALUE])                    ! Reserved (must =0)
  1194.  
  1195.     INTEGER*2 CodePage, Reserved
  1196.  
  1197.     END
  1198.  
  1199. $ENDIF                                  ! INCL_DOSNLS interfaces
  1200.  
  1201.  
  1202. $IF defined(INCL_DOSSIGNALS)         ! INCL_DOSSIGNALS interfaces
  1203.  
  1204. C    ! Signal support
  1205.  
  1206.     INTERFACE TO INTEGER*2 FUNCTION DosSetSigHandler
  1207.      +  [ALIAS: 'DOSSETSIGHANDLER']
  1208.      +  (RoutineAddress [VALUE],              ! Signal handler address
  1209.      +   PrevAddress,                         ! Address of previous handler
  1210.      +   PrevAction,                          ! Address of previous action
  1211.      +   Action [VALUE],                      ! Request type
  1212.      +   SigNumber [VALUE])                   ! Signal number
  1213.  
  1214.     INTEGER*4 RoutineAddress, PrevAddress
  1215.     INTEGER*2 PrevAction, Action, SigNumber
  1216.  
  1217.     END
  1218.  
  1219.     INTERFACE TO INTEGER*2 FUNCTION DosFlagProcess
  1220.      +  [ALIAS: 'DOSFLAGPROCESS']
  1221.      +  (ProcessID [VALUE],                   ! Process id to flag
  1222.      +   Action [VALUE],                      ! Process/subtree
  1223.      +   FlagNum [VALUE],                     ! Flag number
  1224.      +   FlagArg [VALUE])                     ! Flag argument
  1225.  
  1226.     INTEGER*2 ProcessID, Action, FlagNum, FlagArg
  1227.  
  1228.     ENd
  1229.  
  1230.     INTERFACE TO INTEGER*2 FUNCTION DosHoldSignal
  1231.      +  [ALIAS: 'DOSHOLDSIGNAL']
  1232.      +  (ActionCode [VALUE])                  ! Disable/enable signal
  1233.  
  1234.     INTEGER*2 ActionCode
  1235.  
  1236.     END
  1237.  
  1238.     INTERFACE TO INTEGER*2 FUNCTION DosSendSignal
  1239.      +  [ALIAS: 'DOSSENDSIGNAL']
  1240.      +  (ProcessID [VALUE],                   ! PID of root of subtree
  1241.      +   SigNumber [VALUE])                   ! Signal to send
  1242.  
  1243.     INTEGER*2 ProcessID, SigNumber
  1244.  
  1245.     END
  1246.  
  1247. $ENDIF                                  ! INCL_DOSSIGNALS interfaces
  1248.  
  1249.  
  1250. $IF defined(INCL_DOSMONITORS)        ! INCL_DOSMONITORS interfaces
  1251.  
  1252. C    ! Monitor support
  1253.  
  1254.     INTERFACE TO INTEGER*2 FUNCTION DosMonOpen
  1255.      +  [ALIAS: 'DOSMONOPEN']
  1256.      +  (DevName,                             ! Address of device name
  1257.      +   Handle)                              ! Address of handle return
  1258.  
  1259.     CHARACTER*(*) DevName
  1260.     INTEGER*2 Handle
  1261.  
  1262.     END
  1263.  
  1264.     INTERFACE TO INTEGER*2 FUNCTION DosMonClose
  1265.      +  [ALIAS: 'DOSMONCLOSE']
  1266.      +  (Handle [VALUE])                      ! Handle from DosMonOpen
  1267.  
  1268.     INTEGER*2 Handle
  1269.  
  1270.     END
  1271.  
  1272.     INTERFACE TO INTEGER*2 FUNCTION DosMonReg
  1273.      +  [ALIAS: 'DOSMONREG']
  1274.      +  (Handle [VALUE],                      ! Handle from DosMonOpen
  1275.      +   BUFFERI,                             ! Monitor input buffer
  1276.      +   BUFFERO,                             ! Monitor output buffer
  1277.      +   PosFlag [VALUE],                     ! Position flag
  1278.      +   Index [VALUE])                       ! Index
  1279.  
  1280.     INTEGER*2 Handle, BUFFERI(*), BUFFERO(*), PosFlag, Index
  1281.  
  1282.     END
  1283.  
  1284.     INTERFACE TO INTEGER*2 FUNCTION DosMonRead
  1285.      +  [ALIAS: 'DOSMONREAD']
  1286.      +  (BUFFERI,                           ! Monitor input buffer
  1287.      +   WaitFlag [VALUE],                  ! Block/Run indicator
  1288.      +   DataBuffer,                        ! Buffer into which records are read
  1289.      +   ByteCnt)                           ! Size of buffer, number of bytes copied
  1290.  
  1291.     INTEGER*2 BUFFERI(*), WaitFlag, DataBuffer*1(*), ByteCnt
  1292.  
  1293.     END
  1294.  
  1295.     INTERFACE TO INTEGER*2 FUNCTION DosMonWrite
  1296.      +  [ALIAS: 'DOSMONWRITE']
  1297.      +  (BUFFERO,                          ! Monitor output buffer
  1298.      +   DataBuffer,                       ! Buffer from which records are taken
  1299.      +   ByteCnt)                          ! Number of bytes of data records
  1300.  
  1301.     INTEGER*2 BUFFERO(*), DataBuffer*1(*), ByteCnt
  1302.  
  1303.     END
  1304.  
  1305. $ENDIF                                  ! INCL_DOSMONITORS interfaces
  1306.  
  1307.  
  1308. $IF defined(INCL_DOSQUEUES)          ! INCL_DOSQUEUES interfaces
  1309.  
  1310. C    ! Pipe and queue support
  1311.  
  1312.     INTERFACE TO INTEGER*2 FUNCTION DosMakePipe
  1313.      +  [ALIAS: 'DOSMAKEPIPE']
  1314.      +  (ReadHandle,                          ! Address read handle
  1315.      +   WriteHandle,                         ! Address write handle
  1316.      +   PipeSize [VALUE])                    ! Size to reserve for pipe
  1317.  
  1318.     INTEGER*2 ReadHandle, WriteHandle, PipeSize
  1319.  
  1320.     END
  1321.  
  1322.     INTERFACE TO INTEGER*2 FUNCTION DosCloseQueue
  1323.      +  [ALIAS: 'DOSCLOSEQUEUE']
  1324.      +  (QueueHandle [VALUE])                 ! Queue handle
  1325.  
  1326.     INTEGER*2 QueueHandle
  1327.  
  1328.     END
  1329.  
  1330.     INTERFACE TO INTEGER*2 FUNCTION DosCreateQueue
  1331.      +  [ALIAS: 'DOSCREATEQUEUE']
  1332.      +  (QueueHandle,                         ! Queue handle
  1333.      +   QueuePrty [VALUE],                   ! Queue priority
  1334.      +   QueueName)                           ! Queue name
  1335.  
  1336.     INTEGER*2 QueueHandle, QueuePrty
  1337.     CHARACTER*(*) QueueName
  1338.  
  1339.     END
  1340.  
  1341.     INTERFACE TO INTEGER*2 FUNCTION DosOpenQueue
  1342.      +  [ALIAS: 'DOSOPENQUEUE']
  1343.      +  (OwnerPID,                            ! PID of queue owner
  1344.      +   QueueHandle,                         ! Queue handle
  1345.      +   QueueName)                           ! Queue name
  1346.  
  1347.     INTEGER*2 OwnerPID, QueueHandle
  1348.     CHARACTER*(*) QueueName
  1349.  
  1350.     END
  1351.  
  1352.     INTERFACE TO INTEGER*2 FUNCTION DosPeekQueue
  1353.      +  [ALIAS: 'DOSPEEKQUEUE']
  1354.      +  (QueueHandle [VALUE],                 ! Queue handle
  1355.      +   REQUEST,                             ! Requests identification data
  1356.      +   DataLength,                          ! Length of element returned
  1357.      +   DataAddress,                         ! Address of element received
  1358.      +   ElementCode,                         ! Indicator of element received
  1359.      +   NoWait [VALUE],                      ! Indicate no wait if queue empty
  1360.      +   ElementPriority,                     ! Priority of element
  1361.      +   SemHandle [VALUE])                   ! Semaphore handle
  1362.  
  1363.     INTEGER*2 QueueHandle, REQUEST(2), DataLength, DataAddress*4,
  1364.      +            ElementCode, NoWait, ElementPriority*1, SemHandle*4
  1365.  
  1366.     END
  1367.  
  1368.     INTERFACE TO INTEGER*2 FUNCTION DosPurgeQueue
  1369.      +  [ALIAS: 'DOSPURGEQUEUE']
  1370.      +  (QueueHandle [VALUE])                 ! Queue handle
  1371.  
  1372.     INTEGER*2 QueueHandle
  1373.  
  1374.     END
  1375.  
  1376.     INTERFACE TO INTEGER*2 FUNCTION DosQueryQueue
  1377.      +  [ALIAS: 'DOSQUERYQUE']
  1378.      +  (QueueHandle [VALUE],                 ! Queue handle
  1379.      +   Count)                               ! Element count
  1380.  
  1381.     INTEGER*2 QueueHandle, Count
  1382.  
  1383.     END
  1384.  
  1385.     INTERFACE TO INTEGER*2 FUNCTION DosReadQueue
  1386.      +  [ALIAS: 'DOSREADQUEUE']
  1387.      +  (QueueHandle [VALUE],                 ! Queue handle
  1388.      +   REQUEST,                             ! Requests identification data
  1389.      +   DataLength,                          ! Length of element returned
  1390.      +   DataAddress,                         ! Address of element received
  1391.      +   ElementCode,                         ! Indicator of element received
  1392.      +   NoWait [VALUE],                      ! Indicate no wait if queue empty
  1393.      +   ElementPriority,                     ! Priority of element
  1394.      +   SemHandle [VALUE])                   ! Semaphore handle
  1395.  
  1396.     INTEGER*2 QueueHandle, REQUEST(2), DataLength, DataAddress*4,
  1397.      +            ElementCode, NoWait, ElementPriority*1, SemHandle*4
  1398.  
  1399.     END
  1400.  
  1401.     INTERFACE TO INTEGER*2 FUNCTION DosWriteQueue
  1402.      +  [ALIAS: 'DOSWRITEQUEUE']
  1403.      +  (QueueHandle [VALUE],                 ! Queue handle
  1404.      +   Request [VALUE],                     ! Requests identification data
  1405.      +   DataLength [VALUE],                  ! Length of element being added
  1406.      +   DataBuffer,                          ! Element being added
  1407.      +   ElementPriority [VALUE])             ! Priority of element being added
  1408.  
  1409.     INTEGER*2 QueueHandle, Request, DataLength, DataBuffer*1(*),
  1410.      +            ElementPriority
  1411.  
  1412.     END
  1413.  
  1414.     INTERFACE TO INTEGER*2 FUNCTION DosError
  1415.      +  [ALIAS: 'DOSERROR']
  1416.      +  (Flag [VALUE])                        ! Action flag
  1417.  
  1418.     INTEGER*2 Flag
  1419.  
  1420.     END
  1421.  
  1422.     INTERFACE TO INTEGER*2 FUNCTION DosSetVec
  1423.      +  [ALIAS: 'DOSSETVEC']
  1424.      +  (VecNum [VALUE],                      ! Function request code
  1425.      +   RoutineAddress [VALUE],              ! Address of routine
  1426.      +   PrevFunc)                            ! Previous handler address
  1427.  
  1428.     INTEGER*2 VecNum, RoutineAddress*4, PrevFunc*4
  1429.  
  1430.     END
  1431.  
  1432.     INTERFACE TO INTEGER*2 FUNCTION DosGetMessage
  1433.      +  [ALIAS: 'DOSGETMESSAGE']
  1434.      +  (IvTable,                             ! Table to insert
  1435.      +   IvCount [VALUE],                     ! Entries in table
  1436.      +   DataArea,                            ! Message Buffer
  1437.      +   DataLength [VALUE],                  ! Buffer length
  1438.      +   MsgNumber [VALUE],                   ! Message number
  1439.      +   FileName,                            ! Message file name
  1440.      +   MsgLength)                           ! Length of returned message
  1441.  
  1442.     CHARACTER IvTable*(*), FileName*(*)
  1443.     INTEGER*2 IvCount, DataArea*1(*), DataLength, MsgNumber,
  1444.      +            MsgLength
  1445.  
  1446.     END
  1447.  
  1448.     INTERFACE TO INTEGER*2 FUNCTION DosErrClass
  1449.      +  [ALIAS: 'DOSERRCLASS']
  1450.      +  (Code [VALUE],                        ! Error code
  1451.      +   Class,                               ! Error classification
  1452.      +   Action,                              ! Recommended action
  1453.      +   Locus)                               ! Error origin
  1454.  
  1455.     INTEGER*2 Code, Class, Action, Locus
  1456.  
  1457.     END
  1458.  
  1459.     INTERFACE TO INTEGER*2 FUNCTION DosInsMessage
  1460.      +  [ALIAS: 'DOSINSMESSAGE']
  1461.      +  (IvTable,                             ! Variable table
  1462.      +   IvCount [VALUE],                     ! Entries in table
  1463.      +   MsgInput,                            ! Input message
  1464.      +   MsgInLength [VALUE],                 ! Length of input message
  1465.      +   DataArea,                            ! Updated message buffer
  1466.      +   DataLength [VALUE],                  ! Length of buffer
  1467.      +   MsgLength)                           ! Updated length
  1468.  
  1469.     CHARACTER IvTable*(*), MsgInput*(*)
  1470.     INTEGER*2 IvCount, MsgInLength, DataArea*1(*), DataLength,
  1471.      +            MsgLength
  1472.  
  1473.     END
  1474.  
  1475.     INTERFACE TO INTEGER*2 FUNCTION DosPutMessage
  1476.      +  [ALIAS: 'DOSPUTMESSAGE']
  1477.      +  (FileHandle [VALUE],                  ! File handle
  1478.      +   MessageLength [VALUE],               ! Message length
  1479.      +   MessageBuffer)                       ! Message buffer
  1480.  
  1481.     INTEGER*2 FileHandle, MessageLength
  1482.     CHARACTER*(*) MessageBuffer
  1483.  
  1484.     END
  1485.  
  1486.     INTERFACE TO INTEGER*2 FUNCTION DosGetEnv
  1487.      +  [ALIAS: 'DOSGETENV']
  1488.      +  (selEnvironment,                      ! Segment handle
  1489.      +   offCommand)                          ! Command line start
  1490.  
  1491.     INTEGER*2 selEnvironment, offCommand
  1492.  
  1493.     END
  1494.  
  1495.     INTERFACE TO INTEGER*2 FUNCTION DosScanEnv
  1496.      +  [ALIAS: 'DOSSCANENV']
  1497.      +  (EnvVarName,                          ! Environment variable name
  1498.      +   ResultPointer)                       ! Search result
  1499.  
  1500.     CHARACTER*(*) EnvVarName
  1501.     INTEGER*4 ResultPointer
  1502.  
  1503.     END
  1504.  
  1505.     INTERFACE TO INTEGER*2 FUNCTION DosSearchPath
  1506.      +  [ALIAS: 'DOSSEARCHPATH']
  1507.      +  (Control [VALUE],                     ! Control vector
  1508.      +   PathRef,                             ! Search path reference
  1509.      +   Filename,                            ! Filename
  1510.      +   ResultBuffer,                        ! Result buffer
  1511.      +   ResultBufferLen)                     ! Result buffer length
  1512.  
  1513.     CHARACTER*(*) PathRef, Filename
  1514.     INTEGER*2 Control, ResultBuffer*1(*), ResultBufferLen
  1515.  
  1516.     END
  1517.  
  1518.     INTERFACE TO INTEGER*2 FUNCTION DosGetVersion
  1519.      +  [ALIAS: 'DOSGETVERSION']
  1520.      +  (Version)                             ! DOS version
  1521.  
  1522.     INTEGER*2 Version
  1523.  
  1524.     END
  1525.  
  1526.     INTERFACE TO INTEGER*2 FUNCTION DosGetMachineMode
  1527.      +  [ALIAS: 'DOSGETMACHINEMODE']
  1528.      +  (Mode)                                ! Machine mode
  1529.  
  1530.     INTEGER*1 Mode
  1531.  
  1532.     END
  1533.  
  1534. $ENDIF                                  ! INCL_DOSQUEUES interfaces
  1535.  
  1536.  
  1537. $IF defined(INCL_DOSSESMGR)          ! INCL_DOSSESMGR interfaces
  1538.  
  1539. C    ! Session manager support
  1540.  
  1541.     INTERFACE TO INTEGER*2 FUNCTION DosStartSession
  1542.      +  [ALIAS: 'DOSSTARTSESSION']
  1543.      +  (StartDataPtr,                        ! Starts session data
  1544.      +   SessID,                              ! Session id
  1545.      +   PID)                                 ! Process id
  1546.  
  1547.     INTEGER*2 SessID, PID
  1548.     STRUCTURE/STARTDATA/
  1549.        INTEGER*2 Length
  1550.        INTEGER*2 Related
  1551.        INTEGER*2 FgBg
  1552.        INTEGER*2 TraceOpt
  1553.        INTEGER*4 PgmTitle                 ! Pointer to string
  1554.        INTEGER*4 PgmName                  ! Pointer to string
  1555.        INTEGER*4 PgmInputs                ! Pointer to string
  1556.        INTEGER*4 TermQ                    ! Pointer to string
  1557.     END STRUCTURE
  1558.     RECORD/STARTDATA/ StartDataPtr
  1559.  
  1560.     END
  1561.  
  1562.     INTERFACE TO INTEGER*2 FUNCTION DosSetSession
  1563.      +  [ALIAS: 'DOSSETSESSION']
  1564.      +  (SessID [VALUE],                      ! Session id
  1565.      +   StatusDataPtr)                       ! Session status data
  1566.  
  1567.     INTEGER*2 SessID
  1568.     STRUCTURE/STATUSDATA/
  1569.        INTEGER*2 Length
  1570.        INTEGER*2 SelectInd
  1571.        INTEGER*2 BondInd
  1572.     END STRUCTURE
  1573.     RECORD/STATUSDATA/ StatusDataPtr
  1574.  
  1575.     END
  1576.  
  1577.     INTERFACE TO INTEGER*2 FUNCTION DosSelectSession
  1578.      +  [ALIAS: 'DOSSELECTSESSION']
  1579.      +  (SessID [VALUE],                      ! Session id
  1580.      +   Reserved [VALUE])                    ! Reserved (must =0)
  1581.  
  1582.     INTEGER*2 SessID, Reserved*4
  1583.  
  1584.     END
  1585.  
  1586.     INTERFACE TO INTEGER*2 FUNCTION DosStopSession
  1587.      +  [ALIAS: 'DOSSTOPSESSION']
  1588.      +  (TargetOption [VALUE],                ! Target option
  1589.      +   SessID [VALUE],                      ! Session identifier
  1590.      +   Reserved [VALUE])                    ! Reserved (must =0)
  1591.  
  1592.     INTEGER*2 TargetOption, SessID, Reserved*4
  1593.  
  1594.     END
  1595.  
  1596. $ENDIF                                  ! INCL_DOSSESMGR interfaces
  1597.  
  1598.  
  1599. $IF defined(INCL_DOSDEVICES)         ! INCL_DOSDEVICES interfaces
  1600.  
  1601. C    ! Device support
  1602.  
  1603.     INTERFACE TO INTEGER*2 FUNCTION DosDevConfig
  1604.      +  [ALIAS: 'DOSDEVCONFIG']
  1605.      +  (DevInfo,                             ! Returned device information
  1606.      +   Item [VALUE],                        ! Item number
  1607.      +   Reserved [VALUE])                    ! Reserved
  1608.  
  1609.     INTEGER*2 DevInfo*1, Item, Reserved
  1610.  
  1611.     END
  1612.  
  1613.     INTERFACE TO INTEGER*2 FUNCTION DosDevIOCtl
  1614.      +  [ALIAS: 'DOSDEVIOCTL']
  1615.      +  (Data,                                ! Data area
  1616.      +   ParamList,                           ! Command arguments
  1617.      +   Function [VALUE],                    ! Device function
  1618.      +   Catagory [VALUE],                    ! Device category
  1619.      +   Handle [VALUE])                      ! Device handle
  1620.  
  1621.     INTEGER*2 Data*1(*), ParamLIst*1(*), Function, Catagory, Handle
  1622.  
  1623.     END
  1624.  
  1625.     INTERFACE TO INTEGER*2 FUNCTION DosSystemService
  1626.      +  [ALIAS: 'DOSSYSTEMSERVICE']
  1627.      +  (ServiceCat [VALUE],                  ! Service category
  1628.      +   REQUESTPACKET,                       ! Request packet
  1629.      +   RESPONSEPACKET)                      ! Response packet
  1630.  
  1631.     INTEGER*2 ServiceCat, REQUESTPACKET(3), RESPONSEPACKET(2)
  1632.  
  1633.     END
  1634.  
  1635.     INTERFACE TO INTEGER*2 FUNCTION DosCliAccess
  1636.      +  [ALIAS: 'DOSCLIACCESS']
  1637.  
  1638.     END
  1639.  
  1640.     INTERFACE TO INTEGER*2 FUNCTION DosPortAccess
  1641.      +  [ALIAS: 'DOSPORTACCESS']
  1642.      +  (Reserved [VALUE],                    ! Reserved (must =0)
  1643.      +   TypeOfAccess [VALUE],                ! Request or release
  1644.      +   FirstPort [VALUE],                   ! First port number
  1645.      +   LastPort [VALUE] )                   ! Last port number
  1646.  
  1647.     INTEGER*2 Reserved, TypeOfAccess, FirstPort, LastPort
  1648.  
  1649.     END
  1650.  
  1651.     INTERFACE TO INTEGER*2 FUNCTION DosPhysicalDisk
  1652.      +  [ALIAS: 'DOSPHYSICALDISK']
  1653.      +  (Function [VALUE],                    ! Type of information
  1654.      +   OutputBuf,                           ! Output buffer
  1655.      +   OutLength [VALUE],                   ! Output buffer length
  1656.      +   ParmBuf,                             ! User supplied information
  1657.      +   ParmLength [VALUE])                  ! Length of user information
  1658.  
  1659.     INTEGER*2 Function, OutputBuf*1(*), OutLength, ParmBuf*1(*),
  1660.      +            ParmLength
  1661.  
  1662.     END
  1663.  
  1664. $ENDIF                                  ! INCL_DOSDEVICES interfaces
  1665.