.............. begin common deck SYA$CYBIL_INTERFACE_PROCEDURES .........................
          proc
procedur  pname
xxxploc   set       0,0,0,0
          align     0,8
f:(0,0)   bss       0
          def       f:(0,0)
          pend
.
         proc
function pname
         do       sn:(f:(2,0))=sn:(integer)
xxxploc    set    0,1,1,8
yyyploc    set    0
         else
           do     sn:(f:(2,0))=sn:(subrange)
xxxploc      set  0,1,3,f:(2,1)
yyyploc      set  0
           else
             do   sn:(f:(2,0))=sn:(boolean)
xxxploc        set 0,1,4,1
yyyploc        set 0
             else
               do  sn:(f:(2,0))=sn:(pointer)
xxxploc          set 0,1,2,6
yyyploc          set 1
               else
               flag fatal  .unknown return type
               dend
             dend
           dend
         dend
         align    0,8
f:(0,0)  bss      0
         def      f:(0,0)
         pend
.
         proc
freturnx pname
          do     xxxploc[1]=1
          do     yyyploc=0
            do   #regtyp[f:(2,0)]=#xreg
              do   f:(2,0)=15
                return
              else
                cpyxx  xf,f:(2,0)
              dend
            else
              flag fatal       .Incorrect register usage
            dend
          else
            do   #regtyp[f:(2,0)]=#areg
              do f:(2,0)=15
                return
              else
                cpyaa  af,f:(2,0)
              dend
            else
              cpyxa     af,f:(2,0)
            dend
          dend
          return
          else
            flag fatal       .not in a function
          dend
         pend
.
          proc
param     pname
          local  data_t,param_t,param_l,field_l,offset
param_l   set    0
offset    set    0
          do     sn:(f:(2,1))=sn:(integer)
data_t    set    1
field_l   set    8
          dend
          do     sn:(f:(2,1))=sn:(pointer)
data_t    set    2
field_l   set    6
offset    set    2
          dend
          do     sn:(f:(2,1))=sn:(subrange)
data_t    set    3
field_l   set    f:(2,2)[0]
offset    set    8-f:(2,2)[0]
          dend
          do     sn:(f:(2,1))=sn:(boolean)
data_t    set    4
field_l   set    1
offset    set    7
          dend
          do     sn:(f:(2,1))=sn:(string)
            do     f:(2,2)<=8
data_t    set    5
field_l   set    f:(2,2)[0]
offset    set    8-f:(2,2)[0]
            dend
            do     f:(2,2)>8
data_t    set    6
field_l   set    6
param_l   set    f:(2,2)[0]
            dend
          dend
           do     sn:(f:(2,1))=sn:(astring)
data_t    set    7
field_l   set    8
          dend
.
          do     sn:(f:(2,0))=sn:(ref)
            do     data_t<=5
param_t   set    1
param_l   set    field_l
field_l   set    6
offset    set    0
            dend
          else
param_t   set    2
          dend
.
f:(0,0)   set    xxxploc[0]+offset,data_t,param_t,field_l,param_l
xxxploc[0]  set    xxxploc[0]+8
          pend
.
.
          proc
ploada    pname
          do     f:(2,1)[1]=6
f:(0,0)   la     f:(2,0),a_plist,f:(2,1)[0]
          else
            do     f:(2,1)[2]=1
              do     f:(2,1)[1]=2
f:(0,0)       la     amacsr,a_plist,f:(2,1)[0]
              la     f:(2,0),amacsr,0
              else
f:(0,0)         la     f:(2,0),a_plist,f:(2,1)[0]
              dend
            else
              do     f:(2,1)[1]=2
f:(0,0)       la     f:(2,0),a_plist,f:(2,1)[0]
              else
                flag  fatal    .Wrong macro usage
              dend
            dend
          dend
          pend
.
.
          proc
ploadx    pname
          do     f:(2,1)[1]=2
          flag   fatal       .Wrong macro usage
          else
            do     f:(2,1)[1]=6
            flag   fatal     .Wrong macro usage
            else
              do     f:(2,1)[1]=7
              flag   fatal    .Wrong macro usage
              dend
            dend
          dend
          do     f:(2,1)[2]=1
f:(0,0)   la     amacsr,a_plist,f:(2,1)[0]
          lbyts,f:(2,1)[4]  f:(2,0),amacsr,x0,0
          else
f:(0,0)   lbyts,f:(2,1)[3]  f:(2,0),a_plist,x0,f:(2,1)[0]
          dend
          pend
.
.    PSTRING  This macro is used only for adaptable strings.
.
          proc
pstring   pname
          do     f:(2,2)[1]=7
f:(0,0)   la     f:(2,0),a_plist,f:(2,2)[0]
          lbyts,2  f:(2,1),a_plist,x0,f:(2,2)[0]+6
          else
            flag   fatal    .Wrong macro usage
          dend
          pend
.
.
          proc
pstorxp   pname
          do        f:(2,1)[2]=1
f:(0,0)     la      amacscr,a_plist,f:(2,1)[0]
            sbyts,f:(2,1)[4]  f:(2,0),amacscr,x0,0
          else
            flag    fatal  .must be pointer type
          dend
          pend
.
          proc
pstorap   pname
          do        f:(2,1)[1]=2
            do f:(2,1)[4]=6
f:(0,0)       la    amacscr,a_plist,f:(2,1)[0]
              sa    f:(2,0),amacscr,0
            else
              flag   fatal  .param length must be 6
             dend
          else
            flag    fatal  .must be pointer type
          dend
          pend
.
................end common deck SYA$CYBIL_INTERFACE_PROCEDURES ..........................
