*DECK STOFUNC 
USETEXT CCTTEXT 
USETEXT DNTEXT
          PROC STOFUNC; 
  
#**       STOFUNC -  STORE INTO A FUNCTION
* 
*         INT$VFUN = VALUE TO BE STORED.
* 
*         STOFUNC 
* 
* 
*         PARAMETERS ARE PASSED IN INT$ COMMON- 
*                INT$FUN = FUNCTION ORDINAL 
*                INT$VFUN = VALUE TO BE STORED. 
*                INT$ARG = ORDINAL OF ARGUMENT. 
*                INT$VARG = CONTENTS OF FIXED CELL *INT$ARG*
*                INT$VFIX = O"77777777777777777777" 
# 
  
          BEGIN 
          CONTROL PACK; 
  
          XREF
              BEGIN 
              PROC  CGABORT;           # INTERNAL COMPILER ERROR       #
              FUNC  VIRTUAL      I;    # INDEX TO A MANAGED TABLE      #
              END 
  
  
*CALL M$
  
  
  
*CALL FIXCOM
  
*CALL,FIXED 
  
*CALL FUNCTIONL 
  
*CALL GTEXT 
  
  
*CALL INT$
*CALL,LDSET 
  
*CALL REGTABL 
  
*CALL SUBTYPE 
  
*CALL SUBINFO 
  
*CALL TABLETYP
  
*CALL W$
  
          $BEGIN
*CALL BUG202C 
          $END
  
  
          BASED ARRAY CCTREFARRAY [0:199] S(1); 
              ITEM  CCTENTRY     U(0, 0,60);
  
          ITEM  DNATINDEX    I;        # VIRTUALIZED INDEX TO DNAT     #
          ITEM  T            I;        # USED BY GETFIX, GETDNATINDEX  #
          ITEM  TEMP         I;        # SCRATCH                       #
          ITEM  TEMP1        I;        # SCRATCH                       #
          ITEM TEMP2; 
          ITEM TEMP3; 
  
          DEF  $C1$ 
 #$BEGIN INT$VFIX=INT$VARG; INT$VARG=DNATINDEX; $END#;
  
          DEF  GETDNATINDEX 
 # DNATINDEX=VIRTUAL(TABLETYPE"DNAT$",REGDNATADDR[INT$VARG]); $C1$ T=T#;
  
CONTROL EJECT;
  
          GOTO FUNCTIONL[INT$FUN];
  
  
 ALLBITOF:  
          RETURN; 
  
  
 BCPOF: 
          REGCHARPOS[INT$VARG] = INT$VFUN;
          RETURN; 
  
  
 BYTLENOF:  
          REGITMLEN[INT$VARG] = INT$VFUN; 
          IF REGGCODE[INT$VARG] EQ GTEMPREF  THEN RETURN; 
          GETDNATINDEX; 
          DN$ITMLEN[DNATINDEX] = INT$VFUN;
          RETURN; 
  
  
 CCTBIT:  
          B<INT$ARG,1>CCTFLAGINFO[0] = INT$VFUN;
          RETURN; 
  
  
 CCTWORD: 
          P<CCTREFARRAY> = LOC(CCTENTRIES[0]);
          CCTENTRY[INT$ARG] = INT$VFUN; 
          RETURN; 
  
  
 DNATOF:  
          DNATINDEX = VIRTUAL(TABLETYPE"DNAT$", INT$VFUN);
          TEMP = DN$WORD1[DNATINDEX]; 
          TEMP1 = DN$WORD2[DNATINDEX];
          TEMP2 = DN$WORD3 [DNATINDEX]; 
          TEMP3 = DN$WORD0 [DNATINDEX]; 
          GETDNATINDEX; 
          DN$WORD1[DNATINDEX] = TEMP; 
          DN$WORD2[DNATINDEX] = TEMP1;
          DN$WORD3 [DNATINDEX] = TEMP2; 
          DN$WORD0 [DNATINDEX] = TEMP3; 
          RETURN; 
  
  
 GCODEOF: 
          REGGATOM1[INT$VARG] = 0;
          REGGCODE[INT$VARG] = INT$VFUN;
          REGGATOM2[INT$VARG] = 0;
          RETURN; 
  
  
 GPTROF:  
          REGGPTR[INT$VARG] = INT$VFUN; 
          IF REGGCODE[INT$VARG] EQ GDATAREF 
           OR REGGCODE[INT$VARG] EQ GPROCREF
           OR REGGCODE[INT$VARG] EQ GLABLREF
           OR REGGCODE[INT$VARG] EQ GVERB  THEN 
              BEGIN 
              B<30,30>REGDNATADDR[INT$VARG] = INT$VFUN; 
              REGAUXTADDR[INT$VARG] = 0;
              END 
          IF  REGGCODE[INT$VARG] EQ GDATAREF
          THEN
              BEGIN 
              TEMP = VIRTUAL(TABLETYPE"DNAT$",INT$VFUN);
              REGSIGNBIT[INT$VARG] = DN$SIGNBIT[TEMP];
              REGNUMLEN[INT$VARG] = DN$NUMLEN[TEMP];
              REGPOINT[INT$VARG] = DN$POINT[TEMP];
              REGTYPE[INT$VARG] = DN$TYPE[TEMP];
              REGITMLEN[INT$VARG] = DN$ITMLEN[TEMP];
              REGTREG[INT$VARG] = DN$TREG[TEMP];
              REGCHARPOS[INT$VARG] = DN$CHARPOS[TEMP];
              END 
          RETURN; 
  
  
 GSCODEOF:  
          REGGSCODE[INT$VARG] = INT$VFUN; 
          RETURN; 
  
  
 JUSTOF:  
          REGJUST[INT$VARG] = INT$VFUN; 
          IF REGGCODE[INT$VARG] EQ GTEMPREF  THEN RETURN; 
          GETDNATINDEX; 
          DN$JUST[DNATINDEX] = INT$VFUN;
          RETURN; 
  
  
 LDROMIT:                    # ADD AN -OMIT- ENTRY TO THE LDSET TABLE  #
          CCTLDSETLEN = CCTLDSETLEN + 1;
          TEMP = VIRTUAL (TABLETYPE"LDSET$", CCTLDSETLEN);
          LDSETNAME[TEMP] = C<0,7>INT$VFUN; # ENTRY NAME TO BE OMITTED #
          LDSETTYPE [TEMP] = S"OMIT"; 
          LDSETOVL [TEMP] = FIXEDCELL [FIXED"CUROVL"];
          RETURN; 
  
  
 LDRUSE:                     # ADD A -USE- ENTRY TO THE LDSET TABLE    #
          CCTLDSETLEN = CCTLDSETLEN + 1;
          TEMP = VIRTUAL (TABLETYPE"LDSET$", CCTLDSETLEN);
          LDSETNAME[TEMP] = C<0,7>INT$VFUN;      #ENTRY NAME TO BE USED#
          LDSETTYPE [TEMP] = S"USE";
          LDSETOVL [TEMP] = FIXEDCELL [FIXED"CUROVL"];
          RETURN; 
  
  
 LDSIGNOF:  
          GETDNATINDEX; 
          DN$LSIGN[DNATINDEX] = INT$VFUN; 
          RETURN; 
  
  
 LEVELOF: 
          REGLEVEL[INT$VARG] = INT$VFUN;
          IF REGGCODE[INT$VARG] EQ GTEMPREF  THEN RETURN; 
          GETDNATINDEX; 
          DN$LEVEL[DNATINDEX] = INT$VFUN; 
          RETURN; 
  
  
 LNGOFFOF:  
          GETDNATINDEX; 
          DN$LONGOFF[DNATINDEX] = INT$VFUN; 
          RETURN; 
  
  
 MAJMSCOF:  
          GETDNATINDEX; 
          DN$MAJMSEC[DNATINDEX] = INT$VFUN; 
          RETURN; 
  
  
 NUMLENOF:  
          REGNUMLEN[INT$VARG] = INT$VFUN; 
          IF REGGCODE[INT$VARG] EQ GTEMPREF  THEN RETURN; 
          GETDNATINDEX; 
          DN$NUMLEN[DNATINDEX] = INT$VFUN;
          RETURN; 
  
  
 POINTOF: 
          REGPOINT[INT$VARG] = INT$VFUN;
          IF REGGCODE[INT$VARG] EQ GTEMPREF  THEN RETURN; 
          GETDNATINDEX; 
          DN$POINT[DNATINDEX] = INT$VFUN; 
          RETURN; 
  
  
 REGPTROF:  
          B<30,30>REGDNATADDR[INT$VARG] = INT$VFUN; 
          RETURN; 
  
  
 REGWIXOF:  
          REGWORDINDX[INT$VARG] = INT$VFUN; 
          RETURN; 
  
 RFLENTYP:  
          RFLENTYPE[INT$VARG] = INT$VFUN; 
          RETURN; 
 RFLENVAL:  
          RFLENVALUE[INT$VARG] = INT$VFUN;
          RETURN; 
 RFLCPTYP:  
          RFLCPTYPE[INT$VARG] = INT$VFUN; 
          RETURN; 
 RFLCPVAL:  
          RFLCPVALUE[INT$VARG] = INT$VFUN;
          RETURN; 
  
 SCHAROF: 
          GETDNATINDEX; 
          DN$SCHAR[DNATINDEX] = INT$VFUN; 
          RETURN; 
  
  
 SIGNOF:  
          REGSIGNBIT[INT$VARG] = INT$VFUN;
          IF REGGCODE[INT$VARG] EQ GTEMPREF  THEN RETURN; 
          GETDNATINDEX; 
          DN$SIGNBIT[DNATINDEX] = INT$VFUN; 
          RETURN; 
  
  
 SUBLOCOF:  
          SUBLOC[INT$VARG] = INT$VFUN;
          RETURN; 
  
  
 SUBMSCOF:  
          GETDNATINDEX; 
          DN$SUBMSEC[DNATINDEX] = INT$VFUN; 
          RETURN; 
 SUBNUMOF:  
          SUBNUMBER[INT$VARG] = INT$VFUN; 
          RETURN; 
  
 SUBOFFOF:  
          SUBOFFS[INT$VARG] = INT$VFUN; 
          RETURN; 
  
 SUBTYPOF:  
          SUBTYP[INT$VARG] = INT$VFUN;
          RETURN; 
 SYNCHOF: 
          REGSYNC[INT$VARG] = INT$VFUN; 
          IF  REGGCODE[INT$VARG] EQ GTEMPREF  THEN RETURN;
          GETDNATINDEX; 
          DN$SYNC[DNATINDEX] = INT$VFUN;
           RETURN;
  
  
 TREGOF:  
          REGTREG[INT$VARG] = INT$VFUN; 
          IF REGGCODE[INT$VARG] EQ GTEMPREF  THEN RETURN; 
          GETDNATINDEX; 
          DN$TREG[DNATINDEX] = INT$VFUN;
          RETURN; 
  
  
 TYPEOF:  
          REGTYPE[INT$VARG] = INT$VFUN; 
          IF REGGCODE[INT$VARG] EQ GTEMPREF  THEN RETURN; 
          GETDNATINDEX; 
          DN$TYPE[DNATINDEX] = INT$VFUN;
          RETURN; 
  
  
 VREFOF:  
          FIXEDCELL[INT$ARG] = INT$VFUN;
          RETURN; 
  
  
 WRDOFFOF:  
          GETDNATINDEX; 
          DN$WORDOFF[DNATINDEX] = INT$VFUN; 
          RETURN; 
  
  
 ABSVALOF:  
 ANTYPEOF:  
 ARITH1:  
 ARITH2:  
 ARITH3:  
 ARITH4:  
 ARITH4N: 
 ARITH5:  
 ARITH6:  
 ARITH7:  
 ARITH8:  
 ARITH9:  
 ARITH10: 
 ARITH11: 
 ARITH12: 
 ARITH13: 
 ARITH14: 
 ARITH15: 
 ARITH16:   
 ARITH17: 
 ARITH18: 
 ARITH19: 
 ARITH20: 
 ARITH21: 
 ARITH22: 
 ARITH23: 
 AUXDNPOF:  
 AUXFNPOF:  
 AUXMAXOC:  
 AUXNXTOF:  
 AUXOCCLN:  
 AUXRCVOF:  
 AUXREFOF:  
 BINVALOF:  
 BITLENOF:  
 CLASSOF: 
 CONSTOF: 
 DEPNAMOF:  
 DMIORDOF:  
 DMFUTOF: 
 DMLOSZOF:  
 DMLOWDOF:  
 DMPLTSTR:  
 DMPRGID: 
 DMRELOF: 
 DMRELOOF:  
 DMRORDOF:  
 EQUALS:  
 FIGVALOF:  
 FINDDP:  
 FNALTK:  
 FNBLKNB: 
 FNDNATOF:  
 FNELEMR: 
 FNKNBOF: 
 FNLABTS: 
 FNLINAG: 
 FNMRLOF: 
 FNRLKOF: 
 FNRRCOF: 
 FNRTOF:  
 FNFOOF:  
 FNVLREC: 
 GETDCCT: 
 IMPNMOF: 
 INTLENOF:  
 LATALLOF:  
 LITREFOF:  
 LOCLAB:  
 MNVALOF: 
 MXOCC1OF:  
 MXOCC2OF:  
 MXOCC3OF:  
 OCCLN1OF:  
 OCCLN2OF:  
 OCCLN3OF:  
 REFOF: 
 PALTEROF:  
 PARANAM: 
 PARNAM0: 
 PEQUOF:  
 PFSSECOF:  
 PKINDOF: 
 PLOCALOF:  
 PNXSECOF:  
 PPERFBOF:  
 PPERFEOF:  
 PLTQUOTE:  
 PSEGNOOF:  
 PSGALTOF:  
 PSGENTOF:  
 PSGEXTOF:  
 RCTENTOF:  
 ROOTLNOF:  
 ROUNDOF: 
 SBDPTHOF:  
 SEQUENCE:  
 SETSYOF: 
 SHL30OF: 
 SHOLITOF:  
 SMBYTLOF:  
 SMFBYTOF:  
 SMKCNTOF:  
 SMLGTHOF:  
 SMSEQOF: 
 SMSIGNOF:  
 SMTYPOF: 
 SPACESOF:  
 STATICOF:  
 SUBLVLOF:  
 SUBOCCLN:  
 SUBSCOF: 
 TREGP1OF:  
 VREGOF:  
 VREGP1OF:  
 ZEROSOF: 
          $BEGIN
          CGABORT("STOFUNC-1"); 
          RETURN; 
          $END
  
  
          END 
          TERM
