User Tools

Site Tools


cdc:nos2.source:opl.opl871:deck:sform.001

Deck SFORM Part 001

49 Modifications

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
Line S00573 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01152  M02S00573.242l642 ---|      VDTPOS(0,NUMLINES);
01153  M01S00179.242l642 +++|      VDTPOS(0,TERNUMLNES[0]);
01154  M01S00574.sform   +++|      END
01155  M01S00575.sform   +++|    FOR PLTCOUNT = 1 STEP 1 UNTIL PLTNUMENT[0] DO
01156  M01S00576.sform   +++|      BEGIN                          # CLEAR SEQUENCE NUMBERS #
01157  M01S00577.sform   +++|      PLTENTRYNM[PLTCOUNT] = 0;
01158  M01S00578.sform   +++|      END
01159  M01S00579.sform   +++|    PLTNUMONSC[0] = 0;               # NO PANELS ON SCREEN #
01160  M01S00580.sform   +++|    TERMESWRIT[0] = FALSE;
01161  M01S00581.sform   +++|    TERMESREAD[0] = FALSE;
Line S00582 Modification History
M01 (Added by) sform
M02 (Updated by) ns2231
Seq #  *Modification Id* Act 
----------------------------+
01162  M02S00582.ns2231  ---|    VDTSTM(TERMMODEL,LINE);          # SET LINE MODE #
01163  M01S00001.ns2231  +++|    VDTSTM(LINE,DUMMY);              # SET LINE MODE #
Line S00583 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01164  M02S00583.242l642 ---|    VDTCLO(RECALL);                  # FLUSH OUTPUT, RECALL #
01165  M01S00180.242l642 +++|*IF UNDEF,QTRM
Line S00001 Modification History
M01 (Added by) ns2524a
M02 (Updated by) ns2524b
Seq #  *Modification Id* Act 
----------------------------+
01166  M02S00001.ns2524b ---|    IF NOT TERNOVDTEO[0] THEN VDTEOO;
Line S00002 Modification History
M01 (Added by) ns2524a
M02 (Updated by) ns2524b
Seq #  *Modification Id* Act 
----------------------------+
01167  M02S00002.ns2524b ---|    TERVDTBOOC[0] = FALSE;
01168  M01S00181.242l642 +++|    VDTCLO(RECALL);                  # FLUSH OUTPUT WITH RECALL #
01169  M01S00001.ns2524b +++|    IF TERBLCKMDE[0] THEN TERVDTBOOC[0] = FALSE;
01170  M01S00182.242l642 +++|*ENDIF
01171  M01S00584.sform   +++|    END
Line S00585 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01172  M02S00585.242l642 ---|  ACTIVEPAN = "       ";             # CLEAR ACTIVE PANEL NAME #
Line S00586 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01173  M02S00586.242l642 ---|  ACTPANPLTI = 0;                    # CLEAR PLT INDEX #
01174  M01S00183.242l642 +++|  TERACTPANL[0] = "       ";         # CLEAR ACTIVE PANEL NAME #
01175  M01S00184.242l642 +++|  TERACTPLTI[0] = 0;                 # CLEAR PLT INDEX #
01176  M01S00587.sform   +++|  TERCNWRIOV[0] = FALSE;             # DO NOT ALLOW OVERLAY WRITE #
01177  M01S00588.sform   +++|  VDTMSG$(MSGB,1,1);                 # BLANK B DISPLAY MESSAGE #
01178  M01S00589.sform   +++|  TERSHOWFLG[0] = FALSE;
01179  M01S00590.sform   +++|  TERREADFLG[0] = FALSE;
01180  M01S00591.sform   +++|  END
01181  M01S00592.sform   +++|
01182  M01S00593.sform   +++|END  # SFCLOS$ #
01183  M01S00594.sform   +++|CONTROL EJECT;
01184  M01S00595.sform   +++|
01185  M01S00596.sform   +++|PROC SFCSET$(CSET,CLENGTH,COFFSET);
01186  M01S00597.sform   +++|
01187  M01S00598.sform   +++|# TITLE SFCSET$ - SET CHARACTER SET. #
01188  M01S00599.sform   +++|
01189  M01S00600.sform   +++|BEGIN  # SFCSET$ #
01190  M01S00601.sform   +++|
01191  M01S00602.sform   +++|#
01192  M01S00603.sform   +++|**    SFCSET$ - SET CHARACTER SET.
01193  M01S00604.sform   +++|*
01194  M01S00605.sform   +++|*     THIS PROCEDURE SETS AND CLEARS THE GLOBAL FLAGS THAT INDICATE
01195  M01S00606.sform   +++|*     WHAT CHARACTER SET IS IN USE BY THE APPLICATION CALLING THE
01196  M01S00607.sform   +++|*     SCREEN FORMATTING OBJECT ROUTINES.  IT INTERFACES TO COBOL AND
01197  M01S00608.sform   +++|*     FORTRAN APPLICATION PROGRAMS THROUGH A COMPASS INTERFACE MOD-
01198  M01S00609.sform   +++|*     ULE CALLED SFCSET.
01199  M01S00610.sform   +++|*
01200  M01S00611.sform   +++|*     PROC SFCSET$(CSET,CLENGTH,COFFSET)
01201  M01S00612.sform   +++|*
01202  M01S00613.sform   +++|*     ENTRY   CSET       = "DISPLAY", "ASCII", OR "ASCII8",
01203  M01S00614.sform   +++|*                          IN DISPLAY CODE.
01204  M01S00615.sform   +++|*             CLENGTH    = LENGTH IN SIX BIT CHARACTERS IN CHARSET.
01205  M01S00616.sform   +++|*             COFFSET    = OFFSET INTO CHARSET.
01206  M01S00617.sform   +++|*
01207  M01S00618.sform   +++|*     EXIT    CORRECT CHARACTER SET FLAG SET, OTHERS CLEARED.
01208  M01S00619.sform   +++|*
Line S00620 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01209  M02S00620.242l642 ---|*     USES    TERASCFLAG, TERAS8FLAG, TERDISFLAG.
01210  M01S00185.242l642 +++|*     USES    TERASCFLAG, TERAS8FLAG.
01211  M01S00621.sform   +++|*
01212  M01S00622.sform   +++|*     NOTES   IF SFCSET$ IS CALLED WITH AN UNRECOGNIZABLE
01213  M01S00623.sform   +++|*             CHARACTER SET THEN THE DEFAULT CHARACTER SET
01214  M01S00624.sform   +++|*             (DISPLAY) WILL BE SET AND ALL OTHERS CLEARED.
01215  M01S00625.sform   +++|*             SFCSET$ ACCEPTS ONLY BLANK FILLED DISPLAY CODE
01216  M01S00626.sform   +++|*             STRINGS FOR THE CHARACTER SET.
01217  M01S00627.sform   +++|#
01218  M01S00628.sform   +++|ITEM CSET       C(11);               # CHAR. SET NAME IN DISPLAY CODE #
01219  M01S00629.sform   +++|ITEM CLENGTH    I;                   # LENGTH IN SIX BIT CHARACTERS #
01220  M01S00630.sform   +++|ITEM COFFSET    I;                   # OFFSET INTO CSET #
01221  M01S00631.sform   +++|
01222  M01S00632.sform   +++|ITEM ASCII      C(7) = "ASCII  ";    # ASCII (IN DISPLAY CODE ) #
01223  M01S00633.sform   +++|ITEM ASCII8     C(7) = "ASCII8 ";    # ASCII8 (IN DISPLAY CODE) #
01224  M01S00634.sform   +++|ITEM SET        C(7);                # CHARACTER SET, LEFT JUSTIFIED #
01225  M01S00635.sform   +++|
Line S00636 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01226  M02S00636.242l642 ---|IF CLENGTH LS 1 THEN CLENGTH = 7;    # CRACK PARAMTER #
01227  M01S00186.242l642 +++|IF CLENGTH LS 1 THEN CLENGTH = 7;    # CRACK PARAMETER #
01228  M01S00637.sform   +++|SET = C<COFFSET,CLENGTH>CSET;
01229  M01S00638.sform   +++|
01230  M01S00639.sform   +++|IF SET EQ ASCII THEN
01231  M01S00640.sform   +++|  BEGIN                              # IF SIX TWELVE ASCII #
01232  M01S00641.sform   +++|  TERASCFLAG[0] = TRUE;
01233  M01S00642.sform   +++|  TERAS8FLAG[0] = FALSE;
Line S00643 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01234  M02S00643.242l642 ---|  TERDISFLAG[0] = FALSE;
01235  M01S00644.sform   +++|  END
01236  M01S00645.sform   +++|ELSE
01237  M01S00646.sform   +++|  BEGIN
01238  M01S00647.sform   +++|  IF SET EQ ASCII8 THEN
01239  M01S00648.sform   +++|    BEGIN                            # IF TWELVE BIT ASCII #
01240  M01S00649.sform   +++|    TERASCFLAG[0] = FALSE;
01241  M01S00650.sform   +++|    TERAS8FLAG[0] = TRUE;
Line S00651 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01242  M02S00651.242l642 ---|    TERDISFLAG[0] = FALSE;
01243  M01S00652.sform   +++|    END
01244  M01S00653.sform   +++|  ELSE
01245  M01S00654.sform   +++|    BEGIN                            # SET DISPLAY CODE #
01246  M01S00655.sform   +++|    TERASCFLAG[0] = FALSE;
01247  M01S00656.sform   +++|    TERAS8FLAG[0] = FALSE;
Line S00657 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01248  M02S00657.242l642 ---|    TERDISFLAG[0] = TRUE;
01249  M01S00658.sform   +++|    END
01250  M01S00659.sform   +++|  END
01251  M01S00660.sform   +++|
01252  M01S00661.sform   +++|END  # SFCSET$ #
01253  M01S00010.ns2605  +++|CONTROL EJECT;
01254  M01S00011.ns2605  +++|
01255  M01S00012.ns2605  +++|PROC SFGETF$(VNAME,VLEN,VOS,STRG,SLEN,SOS,CSET,CLEN,COS,STAT);
01256  M01S00013.ns2605  +++|  BEGIN
01257  M01S00014.ns2605  +++|#
01258  M01S00015.ns2605  +++|**        SFGETF$ - GET FIELD CHARACTER STRING.
01259  M01S00016.ns2605  +++|*
01260  M01S00017.ns2605  +++|*         SFGETF$ TRANSFERS CHARACTERS FROM A SPECIFIED PANEL FIELD TO
01261  M01S00018.ns2605  +++|*         A SPECIFIED STRING, USING *MOVEFLD*.
01262  M01S00019.ns2605  +++|*
01263  M01S00020.ns2605  +++|*         PROC SFGETF$(VNAME,VLEN,VOS,STRG,SLEN,SOS,CSET,CLEN,COS,STAT)
01264  M01S00021.ns2605  +++|*
01265  M01S00022.ns2605  +++|*         ENTRY  VNAME     = VARIABLE NAME OF FIELD.
01266  M01S00023.ns2605  +++|*                VLEN      = LENGTH OF VARNAME PARAMETER.
01267  M01S00024.ns2605  +++|*                VOS       = OFFSET OF VARNAME PARAMETER.
01268  M01S00025.ns2605  +++|*                STRG      = VARIABLE FIELD STRING.
01269  M01S00026.ns2605  +++|*                SLEN      = LENGTH OF STRING PARAMETER.
01270  M01S00027.ns2605  +++|*                SOS       = OFFSET OF STRING PARAMETER.
01271  M01S00028.ns2605  +++|*                CSET      = CHARACTER SET OF STRING (SEE SFCSET$).
01272  M01S00029.ns2605  +++|*                CLEN      = LENGTH OF CSET PARAMETER.
01273  M01S00030.ns2605  +++|*                COS       = OFFSET OF CSET PARAMETER.
01274  M01S00031.ns2605  +++|*
01275  M01S00032.ns2605  +++|*         EXIT   STAT     GQ 0, NUMBER OF 6 BIT CHARACTERS MOVED.
01276  M01S00033.ns2605  +++|*                         LS 0, VARIABLE NOT FOUND IN ACTIVE PANELS.
01277  M01S00034.ns2605  +++|*
01278  M01S00035.ns2605  +++|*         CALLS  MOVEFLD.
01279  M01S00036.ns2605  +++|#
01280  M01S00037.ns2605  +++|
01281  M01S00038.ns2605  +++|  ITEM VNAME      I;                 # VARIABLE NAME #
01282  M01S00039.ns2605  +++|  ITEM VLEN       I;                 # LENGTH OF VARNAME PARAMETER #
01283  M01S00040.ns2605  +++|  ITEM VOS        I;                 # OFFSET INTO VARNAME PARAMETER #
01284  M01S00041.ns2605  +++|  ITEM STRG       I;                 # INSTRING PARAMETER #
01285  M01S00042.ns2605  +++|  ITEM SLEN       I;                 # LENGTH OF INSTRING #
01286  M01S00043.ns2605  +++|  ITEM SOS        I;                 # OFFSET INTO INSTRING #
01287  M01S00044.ns2605  +++|  ITEM CSET       I;                 # CHARACTER SET #
01288  M01S00045.ns2605  +++|  ITEM CLEN       I;                 # LENGTH OF CHARACTER SET #
01289  M01S00046.ns2605  +++|  ITEM COS        I;                 # OFFSET INTO CHARACTER SET #
01290  M01S00047.ns2605  +++|  ITEM STAT       I;                 # STATUS FIELD #
01291  M01S00048.ns2605  +++|
01292  M01S00049.ns2605  +++|
01293  M01S00050.ns2605  +++|  STAT = 0;
01294  M01S00051.ns2605  +++|  MOVEFLD(VNAME,VLEN,VOS,STRG,SLEN,SOS,CSET,CLEN,COS,STAT);
01295  M01S00052.ns2605  +++|  RETURN;
01296  M01S00053.ns2605  +++|
01297  M01S00054.ns2605  +++|END  # SFGETF$#
01298  M01S00187.242l642 +++|*IF DEF,QTRM
01299  M01S00188.242l642 +++|CONTROL EJECT;
01300  M01S00189.242l642 +++|
01301  M01S00190.242l642 +++|PROC SFDQUE$(QNAME,QLEN,QOFF,BUFFER,RC,LENGTH);
01302  M01S00191.242l642 +++|
01303  M01S00192.242l642 +++|# TITLE SFDQUE$ - DEQUEUE A PIECE OF DATA FOR THIS TERMINAL. #
01304  M01S00193.242l642 +++|
01305  M01S00194.242l642 +++|BEGIN  # SFDQUE$ #
01306  M01S00195.242l642 +++|
01307  M01S00196.242l642 +++|#
01308  M01S00197.242l642 +++|**    SFDQUE$ - DEQUEUE A PIECE OF DATA FOR THIS TERMINAL.
01309  M01S00198.242l642 +++|*
01310  M01S00199.242l642 +++|*     THIS PROCEDURE REMOVES *LENGTH* CHARACTERS FROM THE SPECIFIED
01311  M01S00200.242l642 +++|*     QUEUE AND PLACES THE CHARACTERS INTO *BUFFER*.  IT INTERFACES
01312  M01S00201.242l642 +++|*     TO COBOL5 AND FTN5 APPLICATION PROGRAMS THROUGH A COMPASS
01313  M01S00202.242l642 +++|*     INTERFACE CALLED SFDQUE.
01314  M01S00203.242l642 +++|*
01315  M01S00204.242l642 +++|*     PROC SFDQUE$(QNAME,QLEN,QOFF,BUFFER,RC,LENGTH)
01316  M01S00205.242l642 +++|*
01317  M01S00206.242l642 +++|*     ENTRY   QNAME      = QUEUE TO PLACE DATA INTO (GET OR PUT).
01318  M01S00207.242l642 +++|*             QLEN       = LENGTH OF QUEUE NAME.
01319  M01S00208.242l642 +++|*             QOFF       = OFFSET OF QUEUE NAME.
01320  M01S00209.242l642 +++|*             LENGTH     = BUFFER SIZE IN 12 BIT CHARACTERS.
01321  M01S00210.242l642 +++|*
01322  M01S00211.242l642 +++|*     EXIT    NIT$CTLC   = COUNT OF CHARACTERS DEQUEUED.
01323  M01S00212.242l642 +++|*             RC         = 0, IF DATA DEQUEUED (NO ERROR).
01324  M01S00213.242l642 +++|*                          1, IF MORE DATA AVAILABLE.
01325  M01S00214.242l642 +++|*                          2, IF NO MESSAGES IN THE QUEUE.
01326  M01S00215.242l642 +++|*             BUFFER     = DEQUEUED DATA.
01327  M01S00216.242l642 +++|*
01328  M01S00217.242l642 +++|*     CALLS   CMMFRF.
01329  M01S00218.242l642 +++|#
01330  M01S00219.242l642 +++|ITEM QNAME      C(7);                # QUEUE NAME #
01331  M01S00220.242l642 +++|ITEM QLEN       I;                   # QUEUE NAME LENGTH #
01332  M01S00221.242l642 +++|ITEM QOFF       I;                   # QUEUE NAME OFFSET #
01333  M01S00222.242l642 +++|ARRAY BUFFER [0:0] P(1);             # BUFFER #
01334  M01S00223.242l642 +++|  BEGIN
01335  M01S00224.242l642 +++|  ITEM B$WD0      U(00,00,60);       # BUFFER WORD (INTEGER) #
01336  M01S00225.242l642 +++|  END
01337  M01S00226.242l642 +++|ITEM RC         I;                   # RETURN CODE #
01338  M01S00227.242l642 +++|ITEM LENGTH     I;                   # BUFFER SIZE IN CHARACTERS #
01339  M01S00228.242l642 +++|
01340  M01S00229.242l642 +++|ITEM BIT        I;                   # BIT POSITION #
01341  M01S00230.242l642 +++|ITEM B$CURBIT   I;                   # CURRENT BIT #
01342  M01S00231.242l642 +++|ITEM B$CURWORD  I;                   # CURRENT WORD #
01343  M01S00232.242l642 +++|ITEM I          I;                   # LOOP VARIABLE #
01344  M01S00233.242l642 +++|ITEM J          I;                   # LOOP VARIABLE #
01345  M01S00234.242l642 +++|ITEM MAX$CHARS  I;                   # MAXIMUM NUMBER OF CHARACTERS #
01346  M01S00235.242l642 +++|ITEM QUEUENAME  C(7);                # QUEUE NAME #
01347  M01S00236.242l642 +++|ITEM RCC        I;                   # RETURN CODE #
01348  M01S00237.242l642 +++|ITEM WORD       I;                   # BUFFER WORD #
01349  M01S00238.242l642 +++|
01350  M01S00239.242l642 +++|B$CURBIT = 0;                        # POSITION TO START OF BUFFER #
01351  M01S00240.242l642 +++|B$CURWORD = 0;
01352  M01S00241.242l642 +++|P<Q$HEADER> = CHAIN;
01353  M01S00242.242l642 +++|
01354  M01S00243.242l642 +++|IF QLEN LS 1 THEN QLEN = 7;          # CRACK PARAMETER #
01355  M01S00244.242l642 +++|QUEUENAME = C<QOFF,QLEN>QNAME;
01356  M01S00245.242l642 +++|
01357  M01S00246.242l642 +++|WHYLE P<Q$HEADER> NQ 0 DO
01358  M01S00247.242l642 +++|  BEGIN                              # SEARCH FOR QUEUE FOR THIS ACN #
01359  M01S00248.242l642 +++|  IF (( NIT$CON EQ Q$ACN ) AND
01360  M01S00249.242l642 +++|      ( C<0,3>QNAME EQ C<0,3>Q$NAME )) THEN
01361  M01S00250.242l642 +++|  IF NIT$CON EQ Q$ACN AND QUEUENAME EQ Q$NAME THEN
01362  M01S00251.242l642 +++|    BEGIN                            # IF QUEUE IS FOUND #
01363  M01S00252.242l642 +++|    P<Q$BUFFER> = P<Q$HEADER> + Q$HEADLEN;
01364  M01S00253.242l642 +++|    FOR I = 1 STEP 1 UNTIL LENGTH DO
01365  M01S00254.242l642 +++|      BEGIN                          # MOVE THIS USER-S DATA #
01366  M01S00255.242l642 +++|      WORD = Q$OUTCHAR / 5;
01367  M01S00256.242l642 +++|      BIT = (Q$OUTCHAR - (WORD * 5)) * 12;
01368  M01S00257.242l642 +++|      B<B$CURBIT,12> B$WD0[B$CURWORD] = B<BIT,12>Q$WORD[WORD];
01369  M01S00258.242l642 +++|      Q$OUTCHAR = Q$OUTCHAR + 1;
01370  M01S00259.242l642 +++|      B$CURBIT = B$CURBIT + 12;
01371  M01S00260.242l642 +++|      IF B$CURBIT GQ 60 THEN
01372  M01S00261.242l642 +++|        BEGIN                        # IF COMPLETE WORD MOVED #
01373  M01S00262.242l642 +++|        B$CURBIT = 0;
01374  M01S00263.242l642 +++|        B$CURWORD = B$CURWORD + 1;
01375  M01S00264.242l642 +++|        END
01376  M01S00265.242l642 +++|
01377  M01S00266.242l642 +++|      IF Q$OUTCHAR GR Q$INCHAR THEN
01378  M01S00267.242l642 +++|        BEGIN                        # IF #
01379  M01S00268.242l642 +++|        NIT$CTLC = I - 1;
01380  M01S00269.242l642 +++|        RC = 0;
01381  M01S00270.242l642 +++|        Q$INCHAR = 0;
01382  M01S00271.242l642 +++|        Q$OUTCHAR = 0;
01383  M01S00272.242l642 +++|        RCC = P<Q$HEADER>;           # ADDRESS FOR CMM #
01384  M01S00273.242l642 +++|        I = Q$BACK;                  # BACK POINTER #
01385  M01S00274.242l642 +++|        J = Q$FORWARD;               # FORWARD POINTER #
01386  M01S00275.242l642 +++|        P<Q$HEADER> = I;             # SET TO PREVIOUS PTR WORD #
01387  M01S00276.242l642 +++|        Q$FORWARD = J;               # AND SET TO NEXT PTR WORD #
01388  M01S00277.242l642 +++|        IF J NQ 0 THEN
01389  M01S00278.242l642 +++|          BEGIN                      # IF NEXT PTR WORD EXISTS #
01390  M01S00279.242l642 +++|          P<Q$HEADER> = J;           # SET PTR TO PREVIOUS PTR WORD #
01391  M01S00280.242l642 +++|          Q$BACK = I;
01392  M01S00281.242l642 +++|          END
01393  M01S00282.242l642 +++|        CMMFRF (RCC);                # RELEASE BUFFER #
01394  M01S00283.242l642 +++|        RETURN;                      # RETURN #
01395  M01S00284.242l642 +++|        END
01396  M01S00285.242l642 +++|      END
01397  M01S00286.242l642 +++|
01398  M01S00287.242l642 +++|    RC = 1;                          # USER-S BUFFER IS FULL #
01399  M01S00288.242l642 +++|    NIT$CTLC = LENGTH;
01400  M01S00289.242l642 +++|    RETURN;                          # RETURN #
01401  M01S00290.242l642 +++|    END
01402  M01S00291.242l642 +++|  P<Q$HEADER> = Q$FORWARD;
01403  M01S00292.242l642 +++|  END
01404  M01S00293.242l642 +++|
01405  M01S00294.242l642 +++|RC = 2;                              # NOTHING TO DEQUEUE #
01406  M01S00295.242l642 +++|
01407  M01S00296.242l642 +++|END  # SFDQUE$ #
01408  M01S00297.242l642 +++|*ENDIF
01409  M01S00662.sform   +++|CONTROL EJECT;
01410  M01S00663.sform   +++|
01411  M01S00664.sform   +++|PROC SFGETI$(VARNAME,VLEN,VOFF,VALUE);
01412  M01S00665.sform   +++|
01413  M01S00666.sform   +++|# TITLE SFGETI$ - GET INTEGER VALUE. #
01414  M01S00667.sform   +++|
01415  M01S00668.sform   +++|BEGIN  # SFGETI$ #
01416  M01S00669.sform   +++|
01417  M01S00670.sform   +++|#
01418  M01S00671.sform   +++|**    SFGETI$ - GET INTEGER VALUE.
01419  M01S00672.sform   +++|*
01420  M01S00673.sform   +++|*     SFGETI$ RETURNS THE INTEGER NUMERIC VALUE OF THE FIELD
01421  M01S00674.sform   +++|*     SPECIFIED BY VARNAME AND ROWNUM.
01422  M01S00675.sform   +++|*
01423  M01S00676.sform   +++|*     PROC SFGETI$(VARNAME,VLEN,VOFF,VALUE)
01424  M01S00677.sform   +++|*
01425  M01S00678.sform   +++|*     ENTRY   VARNAME    = VARIABLE NAME OF FIELD.
01426  M01S00679.sform   +++|*             VLEN       = LENGTH OF VARP.
01427  M01S00680.sform   +++|*             VOFF       = OFFSET OF VARP.
01428  M01S00681.sform   +++|*
01429  M01S00682.sform   +++|*     EXIT    VALUE      = INTEGER VALUE OF SPECIFIED FIELD.
01430  M01S00683.sform   +++|*
01431  M01S00684.sform   +++|*     CALLS   DATEVL, GFIELD, NCHECK.
01432  M01S00685.sform   +++|#
01433  M01S00686.sform   +++|ITEM VARNAME    C(11);               # VARIABLE NAME #
01434  M01S00687.sform   +++|ITEM VLEN       I;                   # LENGTH OF VARNAME PARAMETER #
01435  M01S00688.sform   +++|ITEM VOFF       I;                   # OFFSET INTO VARNAME PARAMETER #
01436  M01S00689.sform   +++|ITEM VALUE      I;                   # VALUE OF INPUT #
01437  M01S00690.sform   +++|
01438  M01S00691.sform   +++|ITEM ALLBLANK   B;                   # ALL BLANK CHARACTERS IN FIELD #
01439  M01S00692.sform   +++|ITEM CURRENCY   B;                   # TRUE IF DOLLAR SIGN INPUT #
01440  M01S00693.sform   +++|ITEM ERRORVAL   I = 0;               # RETURNED IF ERROR IN FIELD #
01441  M01S00694.sform   +++|ITEM EVALUE     I;                   # EXPONENT VALUE #
01442  M01S00695.sform   +++|ITEM FLDIND     I;                   # FIELD ORDINAL #
01443  M01S00696.sform   +++|ITEM FORMAT     I;                   # FORMAT OF INPUT #
01444  M01S00697.sform   +++|ITEM HOLDVALID  B;                   # SAVE FLDVALID VALUE #
01445  M01S00698.sform   +++|ITEM I          I;                   # LOOP COUNTER #
01446  M01S00699.sform   +++|ITEM IVALUE     I;                   # INTEGER VALUE #
Line S00700 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01447  M02S00700.242l642 ---|ITEM USEROW     B = FALSE;           # DO NOT USE CURSORROW #
01448  M01S00298.242l642 +++|ITEM USEROW     B = FALSE;           # DO NOT USE TERCURSROW #
01449  M01S00701.sform   +++|ITEM VNAME      C(7);                # VARIABLE NAME LEFT JUSTIFIED #
01450  M01S00702.sform   +++|
01451  M01S00703.sform   +++|IF VLEN LS 1 THEN VLEN = 7;          # CRACK PARAMETER #
01452  M01S00704.sform   +++|VNAME = C<VOFF,VLEN>VARNAME;
01453  M01S00705.sform   +++|
01454  M01S00706.sform   +++|GFIELD(VNAME,USEROW,FLDIND);         # GET ASSOCIATED FIELD #
01455  M01S00707.sform   +++|IF FLDIND EQ -1 THEN GOTO INTERROR;  # FIELD NOT FOUND #
01456  M01S00708.sform   +++|
01457  M01S00709.sform   +++|ALLBLANK = TRUE;
01458  M01S00710.sform   +++|FOR I = 0 STEP 1 WHILE ALLBLANK AND I LQ FLDLENGTH[FLDIND] -1 DO
01459  M01S00711.sform   +++|  BEGIN                              # CHECK IF BLANK FIELD #
01460  M01S00712.sform   +++|  IF NEXTCHAR(FLDIND,I) NQ BLANK THEN ALLBLANK = FALSE;
01461  M01S00713.sform   +++|  END
01462  M01S00714.sform   +++|IF ALLBLANK THEN
01463  M01S00715.sform   +++|  BEGIN                              # BLANK FIELD #
01464  M01S00716.sform   +++|  VALUE = 0;
01465  M01S00717.sform   +++|  RETURN;
01466  M01S00718.sform   +++|  END
01467  M01S00719.sform   +++|
01468  M01S00720.sform   +++|HOLDVALID = FLDVALID[FLDIND];        # SAVE VALID FLAG #
01469  M01S00721.sform   +++|FLDVALID[FLDIND] = TRUE;
01470  M01S00722.sform   +++|IF VARPICTYPE[FLDVARORD[FLDIND]] EQ FORMTYPE"Y"
01471  M01S00723.sform   +++|  OR VARPICTYPE[FLDVARORD[FLDIND]] EQ FORMTYPE"M"
01472  M01S00724.sform   +++|  OR VARPICTYPE[FLDVARORD[FLDIND]] EQ FORMTYPE"D" THEN
01473  M01S00725.sform   +++|  BEGIN                              # DATE FORMAT FIELD #
01474  M01S00001.sform10 +++|  FORMAT = VARPICTYPE[FLDVARORD[FLDIND]];  # SET FORMAT TYPE #
01475  M01S00726.sform   +++|  DATEVL(FLDIND,IVALUE);             # GET VALUE #
01476  M01S00727.sform   +++|  END
01477  M01S00728.sform   +++|ELSE
01478  M01S00729.sform   +++|  BEGIN                              # NUMERIC FIELD #
01479  M01S00730.sform   +++|  NCHECK(FLDIND,IVALUE,EVALUE,FORMAT,CURRENCY);
01480  M01S00731.sform   +++|  IF VARPICTYPE[FLDVARORD[FLDIND]] EQ FORMTYPE"$" THEN
01481  M01S00732.sform   +++|    BEGIN                            # WEIGHT CURRENCY INPUT #
01482  M01S00733.sform   +++|    IF EVALUE EQ 0 THEN IVALUE = IVALUE * 100;
01483  M01S00734.sform   +++|    ELSE IF EVALUE EQ -1 THEN IVALUE = IVALUE * 10;
01484  M01S00735.sform   +++|    END
01485  M01S00736.sform   +++|  ELSE
01486  M01S00737.sform   +++|    BEGIN                            # NOT CURRENCY #
01487  M01S00738.sform   +++|    IF EVALUE LS 0 THEN
01488  M01S00739.sform   +++|      BEGIN                          # TRUNCATE DECIMAL DIGITS #
01489  M01S00740.sform   +++|      FOR I = -1 STEP -1 UNTIL EVALUE DO IVALUE = IVALUE/10;
01490  M01S00741.sform   +++|      END
01491  M01S00742.sform   +++|    ELSE
01492  M01S00743.sform   +++|      BEGIN                          # RAISE TO POWER OF EXPONENT #
01493  M01S00744.sform   +++|      FOR I = 1 STEP 1 UNTIL EVALUE DO IVALUE = IVALUE*10;
01494  M01S00745.sform   +++|      END
01495  M01S00746.sform   +++|    END
01496  M01S00747.sform   +++|  END
01497  M01S00748.sform   +++|
01498  M01S00749.sform   +++|IF NOT FLDVALID[FLDIND] OR FORMAT EQ FORMTYPE"BAD"THEN
01499  M01S00750.sform   +++|  BEGIN                              # ERRORS IN INPUT #
01500  M01S00751.sform   +++|  GOTO INTERROR;
01501  M01S00752.sform   +++|  END
01502  M01S00753.sform   +++|FLDVALID[FLDIND] = HOLDVALID;        # RESET VALID FLAG #
01503  M01S00754.sform   +++|VALUE = IVALUE;
01504  M01S00755.sform   +++|RETURN;
01505  M01S00756.sform   +++|
01506  M01S00757.sform   +++|INTERROR:                            # CANNOT RETURN VALUE #
01507  M01S00758.sform   +++|
01508  M01S00759.sform   +++|  IF FLDIND NQ -1 THEN FLDVALID[FLDIND] = HOLDVALID;
01509  M01S00760.sform   +++|  VALUE = ERRORVAL;
01510  M01S00761.sform   +++|
01511  M01S00762.sform   +++|END  # SFGETI$ #
01512  M01S00763.sform   +++|CONTROL EJECT;
01513  M01S00764.sform   +++|
01514  M01S00765.sform   +++|PROC SFGETK(GENERIC,ORDINAL);
01515  M01S00766.sform   +++|
01516  M01S00767.sform   +++|# TITLE SFGETK - GET FUNCTION KEY. #
01517  M01S00768.sform   +++|
01518  M01S00769.sform   +++|BEGIN  # SFGETK #
01519  M01S00770.sform   +++|
01520  M01S00771.sform   +++|#
01521  M01S00772.sform   +++|**    SFGETK - GET FUNCTION KEY.
01522  M01S00773.sform   +++|*
01523  M01S00774.sform   +++|*     SFGETK RETURNS THE ORDINAL OF THE LAST FUNCTION KEY PROCESSED.
01524  M01S00775.sform   +++|*
01525  M01S00776.sform   +++|*     PROC SFGETK(GENERIC,ORDINAL)
01526  M01S00777.sform   +++|*
01527  M01S00778.sform   +++|*     ENTRY   TERFUNCGEN = TRUE IF GENERIC FUNCTION KEY.
Line S00779 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01528  M02S00779.242l642 ---|*             FUNCORD    = ORDINAL OF FUNCTION KEY.
01529  M01S00299.242l642 +++|*             TERFUNCORD = ORDINAL OF FUNCTION KEY.
01530  M01S00780.sform   +++|*
01531  M01S00781.sform   +++|*     EXIT    GENERIC    = TRUE IF GENERIC FUNCTION KEY.
01532  M01S00782.sform   +++|*             ORDINAL    = ORDINAL OF FUNCTION KEY.
01533  M01S00783.sform   +++|#
01534  M01S00784.sform   +++|ITEM GENERIC    B;                   # GENERIC/APPLICATION KEY FLAG #
01535  M01S00785.sform   +++|ITEM ORDINAL    I;                   # FUNCTION KEY ORDINAL #
01536  M01S00786.sform   +++|
01537  M01S00787.sform   +++|GENERIC = TERFUNCGEN[0];             # RETURN GENERIC FLAG #
Line S00788 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01538  M02S00788.242l642 ---|ORDINAL = FUNCORD;                   # RETURN FUNCTION ORDINAL #
01539  M01S00300.242l642 +++|ORDINAL = TERFUNCORD[0];             # RETURN FUNCTION ORDINAL #
Line S00789 Modification History
M01 (Added by) sform
M02 (Updated by) sform9
Seq #  *Modification Id* Act 
----------------------------+
01540  M02S00789.sform9  ---|IF TERFUNCGEN[0] AND FUNCORD GR 16 THEN ORDINAL = 1;  # RETURN NEXT #
01541  M01S00790.sform   +++|
01542  M01S00791.sform   +++|END  # SFGETK #
01543  M01S00792.sform   +++|CONTROL EJECT;
01544  M01S00793.sform   +++|
01545  M01S00002.241l630 +++|PROC SFGETN$(MODEL,MLEN,MOFF);
01546  M01S00003.241l630 +++|
01547  M01S00004.241l630 +++|# TITLE SFGETN$ - GET TERMINAL MODEL NAME. #
01548  M01S00005.241l630 +++|
01549  M01S00006.241l630 +++|BEGIN  # SFGETN$ #
01550  M01S00007.241l630 +++|
01551  M01S00008.241l630 +++|#
01552  M01S00009.241l630 +++|**    SFGETN$ - GET TERMINAL MODEL NAME.
01553  M01S00010.241l630 +++|*
Line S00011 Modification History
M01 (Added by) 241l630
M02 (Updated by) sform17
Seq #  *Modification Id* Act 
----------------------------+
01554  M02S00011.sform17 ---|*     SFGETN$ RETURNS THE TERMINAL MODEL NAME.
01555  M01S00001.sform17 +++|*     SFGETN$ RETURNS THE TERMINAL MODEL NAME LEFT JUSTIFIED BLANK
01556  M01S00002.sform17 +++|*     FILLED.  IF MODEL NAME IS NOT FOUND, SPACES ARE RETURNED.
01557  M01S00012.241l630 +++|*
01558  M01S00013.241l630 +++|*     PROC SFGETN$(MODEL,MLEN,MOFF)
01559  M01S00014.241l630 +++|*
01560  M01S00003.sform17 +++|*     ENTRY   MLEN       = LENGTH OF MODEL NAME FIELD.
01561  M01S00004.sform17 +++|*             MOFF       = OFFSET OF MODEL NAME FIELD.
01562  M01S00005.sform17 +++|*
01563  M01S00015.241l630 +++|*     EXIT    MODEL      = TERMINAL MODEL NAME.
Line S00016 Modification History
M01 (Added by) 241l630
M02 (Updated by) sform17
Seq #  *Modification Id* Act 
----------------------------+
01564  M02S00016.sform17 ---|*             MLEN       = LENGTH OF MODEL NAME.
Line S00017 Modification History
M01 (Added by) 241l630
M02 (Updated by) sform17
Seq #  *Modification Id* Act 
----------------------------+
01565  M02S00017.sform17 ---|*             MOFF       = OFFSET OF MODEL NAME.
01566  M01S00018.241l630 +++|*
01567  M01S00019.241l630 +++|*     CALLS   VDTITD.
01568  M01S00020.241l630 +++|#
01569  M01S00006.sform17 +++|
01570  M01S00007.sform17 +++|BASED ARRAY TEMP [0:0];
01571  M01S00008.sform17 +++|  BEGIN
01572  M01S00009.sform17 +++|  ITEM STRING     C(00,00,10);       # MODEL NAME TEMPLATE #
01573  M01S00010.sform17 +++|  END
01574  M01S00021.241l630 +++|ITEM MODEL      C(6);                # TERMINAL MODEL NAME #
01575  M01S00022.241l630 +++|ITEM MLEN       I;                   # LENGTH OF MODEL PARAMETER #
01576  M01S00023.241l630 +++|ITEM MOFF       I;                   # OFFSET INTO MODEL PARAMETER #
01577  M01S00011.sform17 +++|ITEM RETVAL     C(6);                # RETURNED VALUE #
01578  M01S00012.sform17 +++|ITEM OFFIND     I;                   # OFFSET INDEX #
01579  M01S00013.sform17 +++|ITEM I          I;                   # LOOP INDEX #
01580  M01S00024.241l630 +++|
Line S00025 Modification History
M01 (Added by) 241l630
M02 (Updated by) sform17
Seq #  *Modification Id* Act 
----------------------------+
01581  M02S00025.sform17 ---|MLEN = 6;                            # SET LENGTH #
Line S00026 Modification History
M01 (Added by) 241l630
M02 (Updated by) sform17
Seq #  *Modification Id* Act 
----------------------------+
01582  M02S00026.sform17 ---|VDTITD(MODEL);                       # GET MODEL NAME #
Line S00027 Modification History
M01 (Added by) 241l630
M02 (Updated by) sform17
Seq #  *Modification Id* Act 
----------------------------+
01583  M02S00027.sform17 ---|FOR MOFF = MLEN - 1 STEP -1 WHILE MOFF GQ 1 AND C<MOFF,1>MODEL EQ 0 DO
01584  M01S00014.sform17 +++|VDTITD(RETVAL);                      # GET MODEL NAME #
01585  M01S00015.sform17 +++|P<TEMP> = LOC(MODEL);
01586  M01S00016.sform17 +++|OFFIND = MOFF;
01587  M01S00017.sform17 +++|FOR I = 0 STEP 1 UNTIL MLEN - 1 DO
01588  M01S00028.241l630 +++|  BEGIN                              # BLANK FILL MODEL NAME #
Line S00029 Modification History
M01 (Added by) 241l630
M02 (Updated by) sform17
Seq #  *Modification Id* Act 
----------------------------+
01589  M02S00029.sform17 ---|  C<MOFF,1>MODEL = " ";
Line S00030 Modification History
M01 (Added by) 241l630
M02 (Updated by) sform17
Seq #  *Modification Id* Act 
----------------------------+
01590  M02S00030.sform17 ---|  END
Line S00031 Modification History
M01 (Added by) 241l630
M02 (Updated by) sform17
Seq #  *Modification Id* Act 
----------------------------+
01591  M02S00031.sform17 ---|MOFF = 0;                            # SET OFFSET #
01592  M01S00018.sform17 +++|  IF I GR 6 THEN                     # IF BEYOND POSSIBLE MODEL NAME #
01593  M01S00019.sform17 +++|    C<OFFIND,1>STRING = " ";
01594  M01S00020.sform17 +++|  ELSE
01595  M01S00021.sform17 +++|    IF C<I,1>RETVAL EQ 0 THEN        # IF BEYOND ACTUAL MODEL NAME #
01596  M01S00022.sform17 +++|      C<OFFIND,1>STRING = " ";
01597  M01S00023.sform17 +++|    ELSE
01598  M01S00024.sform17 +++|      C<OFFIND,1>STRING = C<I,1>RETVAL;
01599  M01S00025.sform17 +++|  OFFIND = OFFIND + 1;
01600  M01S00026.sform17 +++|  IF (OFFIND GR 9) THEN
01601  M01S00027.sform17 +++|    BEGIN                            # IF END OF CURRENT WORD #
01602  M01S00028.sform17 +++|    OFFIND = 0;
01603  M01S00029.sform17 +++|    P<TEMP> = P<TEMP> + 1;
01604  M01S00030.sform17 +++|    END
01605  M01S00031.sform17 +++|  END
01606  M01S00032.241l630 +++|
01607  M01S00033.241l630 +++|END  # SFGETN$ #
01608  M01S00034.241l630 +++|CONTROL EJECT;
01609  M01S00035.241l630 +++|
01610  M01S00794.sform   +++|PROC SFGETP$(VARNAME,VLEN,VOFF,OFFSET,ROWNUM);
01611  M01S00795.sform   +++|
01612  M01S00796.sform   +++|# TITLE SFGETP$ - GET LAST CURSOR POSITION. #
01613  M01S00797.sform   +++|
01614  M01S00798.sform   +++|BEGIN  # SFGETP$ #
01615  M01S00799.sform   +++|
01616  M01S00800.sform   +++|#
01617  M01S00801.sform   +++|**    SFGETP$ - GET LAST CURSOR POSITION.
01618  M01S00036.241l630 +++|*
01619  M01S00037.241l630 +++|*     SFGETP$ RETURNS VALUES THAT DEFINE THE LAST POSITION OF THE
01620  M01S00038.241l630 +++|*     SCREEN CURSOR.
01621  M01S00802.sform   +++|*
01622  M01S00803.sform   +++|*     PROC SFGETP$(VARNAME,VLEN,VOFF,OFFSET,ROWNUM)
01623  M01S00804.sform   +++|*
01624  M01S00805.sform   +++|*     ENTRY   VARNAME    = LOCATION OF VARIABLE PARAMETER.
01625  M01S00806.sform   +++|*             VLEN       = LENGTH OF VARNAME.
01626  M01S00807.sform   +++|*             VOFF       = OFFSET OF VARNAME.
01627  M01S00808.sform   +++|*
01628  M01S00809.sform   +++|*     EXIT    VARNAME    = VARIABLE NAME OF FIELD.
01629  M01S00810.sform   +++|*             OFFSET     = OFFSET OF CURSOR IN FIELD.
01630  M01S00811.sform   +++|*             ROWNUM     = ROW NUMBER OF FIELD.
01631  M01S00812.sform   +++|*
01632  M01S00813.sform   +++|*     CALLS   FFIELD.
01633  M01S00814.sform   +++|#
01634  M01S00815.sform   +++|ITEM VARNAME    C(11);               # VARIABLE NAME #
01635  M01S00816.sform   +++|ITEM VLEN       I;                   # LENGTH OF VARNAME PARAMETER #
01636  M01S00817.sform   +++|ITEM VOFF       I;                   # OFFSET INTO VARNAME PARAMETER #
01637  M01S00818.sform   +++|ITEM OFFSET     I;                   # OFFSET INTO FIELD #
01638  M01S00819.sform   +++|ITEM ROWNUM     I;                   # ROW NUMBER IN ARRAY #
01639  M01S00820.sform   +++|
01640  M01S00821.sform   +++|ITEM FIELD      I;                   # FUNCTION FIELD #
01641  M01S00822.sform   +++|ITEM I          I;                   # LOOP COUNTER #
01642  M01S00823.sform   +++|ITEM OUTSEARCH  B=TRUE;              # INCLUDE OUTPUT ONLY FIELDS #
01643  M01S00824.sform   +++|ITEM VARIND     I;                   # VARIABLE ORDINAL OF FIELD #
01644  M01S00825.sform   +++|
01645  M01S00826.sform   +++|IF VLEN LS 1 THEN VLEN = 7;          # CRACK PARAMETER #
01646  M01S00827.sform   +++|C<VOFF,VLEN>VARNAME = "       ";
01647  M01S00828.sform   +++|
01648  M01S00829.sform   +++|ROWNUM = 0;                          # FIND FIELD #
Line S00830 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01649  M02S00830.242l642 ---|FFIELD(FUNCPOS,FIELD,OFFSET,OUTSEARCH);
01650  M01S00301.242l642 +++|FFIELD(TERFUNCPOS[0],FIELD,OFFSET,OUTSEARCH);
01651  M01S00831.sform   +++|
01652  M01S00832.sform   +++|IF VALIDFIELD THEN
01653  M01S00833.sform   +++|  BEGIN                              # IF FIELD FOUND #
01654  M01S00834.sform   +++|  OFFSET = OFFSET + 1;
01655  M01S00835.sform   +++|  VARIND = FLDVARORD[FIELD];
01656  M01S00836.sform   +++|  C<VOFF,VLEN>VARNAME = VARNME[VARIND];
01657  M01S00837.sform   +++|  IF VARARRORD[VARIND] NQ 0 THEN
01658  M01S00838.sform   +++|    BEGIN                            # IF ARRAY MEMBER #
01659  M01S00839.sform   +++|    ROWNUM = VARROWNUM[VARIND] + 1;
01660  M01S00840.sform   +++|    END
01661  M01S00841.sform   +++|  END
01662  M01S00842.sform   +++|
01663  M01S00843.sform   +++|END  # SFGETP$ #
01664  M01S00844.sform   +++|CONTROL EJECT;
01665  M01S00845.sform   +++|
01666  M01S00846.sform   +++|PROC SFGETR$(VARNAME,VLEN,VOFF,VALUE);
01667  M01S00847.sform   +++|
01668  M01S00848.sform   +++|# TITLE SFGETR$ - GET REAL VALUE. #
01669  M01S00849.sform   +++|
01670  M01S00850.sform   +++|BEGIN  # SFGETR$ #
01671  M01S00851.sform   +++|
01672  M01S00852.sform   +++|#
01673  M01S00853.sform   +++|**    SFGETR$ - GET REAL VALUE.
01674  M01S00854.sform   +++|*
01675  M01S00855.sform   +++|*     SFGETR$ RETURNS THE REAL NUMERIC VALUE OF THE FIELD
01676  M01S00856.sform   +++|*     SPECIFIED BY VARNAME.
01677  M01S00857.sform   +++|*
01678  M01S00858.sform   +++|*     PROC SFGETR$(VARNAME,VLEN,VOFF,VALUE)
01679  M01S00859.sform   +++|*
01680  M01S00860.sform   +++|*     ENTRY   VARNAME    = VARIABLE NAME OF FIELD.
01681  M01S00861.sform   +++|*             VLEN       = LENGTH OF VARNAME.
01682  M01S00862.sform   +++|*             VOFF       = OFFSET OF VARNAME.
01683  M01S00863.sform   +++|*
01684  M01S00864.sform   +++|*     EXIT    VALUE      = REAL VALUE OF SPECIFIED FIELD.
01685  M01S00865.sform   +++|*
01686  M01S00866.sform   +++|*     CALLS   DATEVL, GFIELD, NCHECK.
01687  M01S00867.sform   +++|#
01688  M01S00868.sform   +++|ITEM VARNAME    C(11);               # VARIABLE NAME #
01689  M01S00869.sform   +++|ITEM VLEN       I;                   # LENGTH OF VARNAME PARAMETER #
01690  M01S00870.sform   +++|ITEM VOFF       I;                   # OFFSET INTO VARNAME PARAMETER #
01691  M01S00871.sform   +++|ITEM VALUE      R;                   # VALUE OF INPUT #
01692  M01S00872.sform   +++|
01693  M01S00873.sform   +++|ITEM ALLBLANK   B;                   # ALL CHARACTERS IN FIELD BLANK #
01694  M01S00874.sform   +++|ITEM CURRENCY   B;                   # TRUE IF DOLLAR SIGN INPUT #
01695  M01S00875.sform   +++|ITEM ERRORVAL   R = 0;               # RETURNED IF ERROR IN FIELD #
01696  M01S00876.sform   +++|ITEM EVALUE     I;                   # EXPONENT VALUE #
01697  M01S00877.sform   +++|ITEM FLDIND     I;                   # FIELD ORDINAL #
01698  M01S00878.sform   +++|ITEM FORMAT     I;                   # FORMAT OF INPUT #
01699  M01S00879.sform   +++|ITEM FPSTAT     I;                   # GFP OVERFLOW STATUS #
01700  M01S00880.sform   +++|ITEM HOLDVALID  B;                   # HOLD FLDVALID VALUE #
01701  M01S00881.sform   +++|ITEM I          I;                   # LOOP COUNTER #
01702  M01S00882.sform   +++|ITEM IVALUE     I;                   # INTEGER VALUE #
Line S00883 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01703  M02S00883.242l642 ---|ITEM USEROW     B = FALSE;           # DO NOT USE CURSORROW #
01704  M01S00302.242l642 +++|ITEM USEROW     B = FALSE;           # DO NOT USE TERCURSROW #
01705  M01S00884.sform   +++|ITEM VNAME      C(7);                # VARIABLE NAME LEFT JUSTIFIED #
01706  M01S00885.sform   +++|
01707  M01S00886.sform   +++|IF VLEN LS 1 THEN VLEN = 7;          # CRACK PARAMETER #
01708  M01S00887.sform   +++|VNAME = C<VOFF,VLEN>VARNAME;
01709  M01S00888.sform   +++|
01710  M01S00889.sform   +++|GFIELD(VNAME,USEROW,FLDIND);         # GET ASSOCIATED FIELD #
01711  M01S00890.sform   +++|IF FLDIND EQ -1 THEN GOTO REALERROR;  # FIELD NOT FOUND #
01712  M01S00891.sform   +++|
01713  M01S00892.sform   +++|ALLBLANK = TRUE;
01714  M01S00893.sform   +++|FOR I = 0 STEP 1 WHILE ALLBLANK AND I LQ FLDLENGTH[FLDIND] -1 DO
01715  M01S00894.sform   +++|  BEGIN                              # CHECK IF BLANK FIELD #
01716  M01S00895.sform   +++|  IF NEXTCHAR(FLDIND,I) NQ BLANK THEN ALLBLANK = FALSE;
01717  M01S00896.sform   +++|  END
01718  M01S00897.sform   +++|IF ALLBLANK THEN
01719  M01S00898.sform   +++|  BEGIN                              # BLANK FIELD #
01720  M01S00899.sform   +++|  VALUE = 0;
01721  M01S00900.sform   +++|  RETURN;
01722  M01S00901.sform   +++|  END
01723  M01S00902.sform   +++|
01724  M01S00903.sform   +++|HOLDVALID = FLDVALID[FLDIND];        # SAVE FLDVALID #
01725  M01S00904.sform   +++|FLDVALID[FLDIND] = TRUE;
01726  M01S00905.sform   +++|
01727  M01S00906.sform   +++|IF VARPICTYPE[FLDVARORD[FLDIND]] EQ FORMTYPE"Y"
01728  M01S00907.sform   +++|  OR VARPICTYPE[FLDVARORD[FLDIND]] EQ FORMTYPE"M"
01729  M01S00908.sform   +++|  OR VARPICTYPE[FLDVARORD[FLDIND]] EQ FORMTYPE"D" THEN
01730  M01S00909.sform   +++|  BEGIN                              # IF DATE FORMAT #
01731  M01S00910.sform   +++|  DATEVL(FLDIND,IVALUE);             # GET VALUE #
01732  M01S00911.sform   +++|  EVALUE = 0;
01733  M01S00912.sform   +++|  END
01734  M01S00913.sform   +++|ELSE
01735  M01S00914.sform   +++|  BEGIN                              # GET NUMERIC VALUE #
01736  M01S00915.sform   +++|  NCHECK(FLDIND,IVALUE,EVALUE,FORMAT,CURRENCY);
01737  M01S00916.sform   +++|  END
01738  M01S00917.sform   +++|
01739  M01S00918.sform   +++|IF NOT FLDVALID[FLDIND] OR FORMAT EQ FORMTYPE"BAD"THEN
01740  M01S00919.sform   +++|  BEGIN                              # ERRORS IN INPUT #
01741  M01S00920.sform   +++|  GOTO REALERROR;
01742  M01S00921.sform   +++|  END
01743  M01S00922.sform   +++|FLDVALID[FLDIND] = HOLDVALID;
01744  M01S00923.sform   +++|
01745  M01S00924.sform   +++|FPSTAT = GFP(IVALUE,EVALUE,VALUE);   # GENERATE REAL VALUE #
01746  M01S00925.sform   +++|IF FPSTAT EQ 0 THEN RETURN;          # IF NO OVERFLOW ERROR #
01747  M01S00926.sform   +++|
01748  M01S00927.sform   +++|REALERROR:                           # CANNOT RETURN VALUE #
01749  M01S00928.sform   +++|
01750  M01S00929.sform   +++|  IF FLDIND NQ -1 THEN FLDVALID[FLDIND] = HOLDVALID;
01751  M01S00930.sform   +++|  VALUE = ERRORVAL;
01752  M01S00931.sform   +++|
01753  M01S00932.sform   +++|END  # SFGETR$ #
01754  M01S00303.242l642 +++|*IF DEF,QTRM
01755  M01S00304.242l642 +++|CONTROL EJECT;
01756  M01S00305.242l642 +++|
01757  M01S00306.242l642 +++|PROC SFMODE$(MODE,MODEL,MLEN,MOFF);
01758  M01S00307.242l642 +++|
01759  M01S00308.242l642 +++|# TITLE SFMODE$ - QTRM MODE SWITCHING FUNCTION. #
01760  M01S00309.242l642 +++|
01761  M01S00310.242l642 +++|BEGIN  # SFMODE$ #
01762  M01S00311.242l642 +++|
01763  M01S00312.242l642 +++|#
01764  M01S00313.242l642 +++|**    SFMODE$ - QTRM MODE SWITCHING FUNCTION.
01765  M01S00314.242l642 +++|*
01766  M01S00315.242l642 +++|*     THIS PROCEDURE SWITCHES A TERMINAL TO AND FROM SCREEN MODE.  IT
01767  M01S00316.242l642 +++|*     INTERFACES TO COBOL5 AND FTN5 APPLICATION PROGRAMS THROUGH A
01768  M01S00317.242l642 +++|*     COMPASS INTERFACE CALLED SFMODE.
01769  M01S00318.242l642 +++|*
01770  M01S00319.242l642 +++|*     PROC SFMODE$(MODE,MODEL,MLEN,MOFF)
01771  M01S00320.242l642 +++|*
01772  M01S00321.242l642 +++|*     ENTRY   MODE       = 0, IF REQUESTED MODE IS SCREEN.
01773  M01S00322.242l642 +++|*                          1, IF REQUESTED MODE IS LINE.
01774  M01S00323.242l642 +++|*             MODEL      = TERMINAL MODEL NAME.
01775  M01S00324.242l642 +++|*             MLEN       = LENGTH OF MODEL NAME.
01776  M01S00325.242l642 +++|*             MOFF       = OFFSET OF MODEL NAME.
01777  M01S00326.242l642 +++|*
01778  M01S00327.242l642 +++|*     EXIT    THE NIT RETURN CODE FIELD IN THE NIT WILL BE SET TO 0 IF
01779  M01S00328.242l642 +++|*             THE REQUEST WAS SUCCESSFUL, NON-ZERO IF NOT.
01780  M01S00329.242l642 +++|#
01781  M01S00330.242l642 +++|ITEM MODE     I;                     # REQUESTED MODE #
01782  M01S00331.242l642 +++|ITEM MODEL    C(7);                  # TERMINAL MODEL (OR 'NONE') #
01783  M01S00332.242l642 +++|ITEM MLEN     I;                     # LENGTH OF MODEL NAME #
01784  M01S00333.242l642 +++|ITEM MOFF     I;                     # OFFSET OF MODEL NAME #
01785  M01S00334.242l642 +++|
01786  M01S00335.242l642 +++|ITEM I        I;                     # SCRATCH VARIABLE #
01787  M01S00336.242l642 +++|ITEM MODELNAME  C(7);                # TERMINAL MODEL NAME #
01788  M01S00337.242l642 +++|
01789  M01S00338.242l642 +++|IF MLEN LS 1 THEN MLEN = 7;          # CRACK PARAMETER #
01790  M01S00339.242l642 +++|MODELNAME = C<MOFF,MLEN>MODEL;
01791  M01S00340.242l642 +++|
01792  M01S00341.242l642 +++|IF NIT$STATE[NIT$CON] NQ 2 THEN
01793  M01S00342.242l642 +++|  BEGIN                              # IF CMM BLOCKS TO CLEAR UP #
01794  M01S00343.242l642 +++|  NIT$RC = NITRTC"OK";
01795  M01S00344.242l642 +++|  IF NIT$PCT [NIT$CON] EQ 0 THEN RETURN;
01796  M01S00345.242l642 +++|  P<PCT> = NIT$PCT [NIT$CON];
01797  M01S00346.242l642 +++|  IF PCT$VRDATA NQ 0 THEN CMMFRF (PCT$VRDATA);
01798  M01S00347.242l642 +++|  PCT$VRDATA = 0;                    # INSURE THIS IS DONE ONLY ONCE #
01799  M01S00348.242l642 +++|  CMMFRF (NIT$PCT[NIT$CON]);
01800  M01S00349.242l642 +++|  NIT$PCT[NIT$CON] = 0;
01801  M01S00350.242l642 +++|  RETURN;                            # RETURN #
01802  M01S00351.242l642 +++|  END
01803  M01S00352.242l642 +++|
01804  M01S00353.242l642 +++|IF NIT$PCT[NIT$CON] EQ 0 THEN
01805  M01S00354.242l642 +++|  BEGIN                              # IF CMM BLOCK NEEDED #
01806  M01S00355.242l642 +++|  CMMALF (PCTSIZE,0,0,I);            # GET A BLOCK FOR THE PCT #
01807  M01S00356.242l642 +++|  NIT$PCT[NIT$CON] = I;
01808  M01S00357.242l642 +++|  P<PCT> = I;
01809  M01S00358.242l642 +++|  FOR I = 0 STEP 1 UNTIL PCTSIZE - 1 DO
01810  M01S00359.242l642 +++|    BEGIN                            # ZERO THE ENTIRE PCT #
01811  M01S00360.242l642 +++|    PCT$WD0[I] = 0;
01812  M01S00361.242l642 +++|    END
01813  M01S00362.242l642 +++|
01814  M01S00363.242l642 +++|  FOR I = 0 STEP 1 UNTIL SFORMSIZE - 1 DO
01815  M01S00364.242l642 +++|    BEGIN                            # INITIALIZE TERMSTAT AREA #
01816  M01S00365.242l642 +++|    TERMSTATWD[I] = TERINITHLD[I];
01817  M01S00366.242l642 +++|    END
01818  M01S00367.242l642 +++|  FOR I = 0 STEP 1 UNTIL VTERMSIZE - 1 DO
01819  M01S00368.242l642 +++|    BEGIN
01820  M01S00369.242l642 +++|    COMVDT$WD0[I] = VDTINITHLD[I];   # INIT VDT AREAS #
01821  M01S00370.242l642 +++|    END
01822  M01S00371.242l642 +++|
01823  M01S00372.242l642 +++|  TERMODNAME[0] = "       ";
01824  M01S00373.242l642 +++|  TERACTPANL[0] = "       ";
01825  M01S00374.242l642 +++|  TERACTPLTI[0] = 0;
01826  M01S00375.242l642 +++|  TERFUNCPOS[0] = 0;
01827  M01S00376.242l642 +++|  TERNUMCOLS[0] = 0;
01828  M01S00377.242l642 +++|  TERNUMLNES[0] = 0;
01829  M01S00378.242l642 +++|
01830  M01S00379.242l642 +++|  P<PLTABLE> = LOC(PLT);             # INITIALIZE THE NIT PLT AREA #
01831  M01S00380.242l642 +++|  I = PLTNUMENT[0];
01832  M01S00381.242l642 +++|  P<PLTABLE> = NIT$PCT[NIT$CON] + PLTOFFSET;
01833  M01S00382.242l642 +++|  FOR I = 1 STEP 1 UNTIL 10 DO
01834  M01S00383.242l642 +++|    BEGIN                            # ZERO PLT WORD #
01835  M01S00384.242l642 +++|    PLTWORDONE[I] = 0;
01836  M01S00385.242l642 +++|    PLTWORDTWO[I] = 0;
01837  M01S00386.242l642 +++|    END
01838  M01S00387.242l642 +++|  PLTENTRYNM[0] = 10;
01839  M01S00388.242l642 +++|  IF MODELNAME NQ "NONE" THEN        # SET MODEL #
01840  M01S00389.242l642 +++|  NIT$TRNAM[NIT$CON] = MODELNAME;
01841  M01S00390.242l642 +++|  IF      MODELNAME EQ "NONE   " THEN NIT$MODEL [NIT$CON] = 0;
01842  M01S00391.242l642 +++|  ELSE IF MODELNAME EQ "721    " THEN NIT$MODEL [NIT$CON] = 2;
01843  M01S00392.242l642 +++|  ELSE                           NIT$MODEL [NIT$CON] = 1;
01844  M01S00393.242l642 +++|
01845  M01S00394.242l642 +++|  TERQTRMSOL[0] = MODE NQ 1;         # SAVE SCREEN/LINE MODE #
01846  M01S00395.242l642 +++|  END
01847  M01S00396.242l642 +++|
01848  M01S00397.242l642 +++|END  # SFMODE$ #
01849  M01S00398.242l642 +++|CONTROL EJECT;
01850  M01S00399.242l642 +++|
01851  M01S00400.242l642 +++|PROC SFNQUE$(QNAME,QLEN,QOFF,BUFFER,RC);
01852  M01S00401.242l642 +++|
01853  M01S00402.242l642 +++|#  TITLE SFNQUE$ - ENQUEUE A BLOCK FOR A TERMINAL (ACN). #
01854  M01S00403.242l642 +++|
01855  M01S00404.242l642 +++|BEGIN  # SFNQUE$ #
01856  M01S00405.242l642 +++|
01857  M01S00406.242l642 +++|#
01858  M01S00407.242l642 +++|**    SFNQUE$ - ENQUEUE A BLOCK FOR A TERMINAL (ACN).
01859  M01S00408.242l642 +++|*
01860  M01S00409.242l642 +++|*     THIS PROCEDURE ACCUMULATES DATA INTO A QUEUE FOR A SPECIFIED
01861  M01S00410.242l642 +++|*     TERMINAL.  VALID QUEUE NAMES ARE *GET* AND *PUT*. A BLOCK OF
01862  M01S00411.242l642 +++|*     1600 WORDS IS ALLOCATED FOR EACH QUEUE.  EACH SFNQUE$ CALL ADDS
01863  M01S00412.242l642 +++|*     DATA TO THE QUEUE WITH THE SPECIFIED QNAME AND TERMINAL NUMBER.
01864  M01S00413.242l642 +++|*     IT INTERFACES TO COBOL5 AND FTN5 APPLICATION PROGRAMS THROUGH
01865  M01S00414.242l642 +++|*     A COMPASS INTERFACE CALLED SFNQUE.
01866  M01S00415.242l642 +++|*
01867  M01S00416.242l642 +++|*     PROC SFNQUE$(QNAME,QLEN,QOFF,BUFFER,RC)
01868  M01S00417.242l642 +++|*
01869  M01S00418.242l642 +++|*     ENTRY   QNAME      = QUEUE TO PLACE DATA INTO (GET OR PUT).
01870  M01S00419.242l642 +++|*             QLEN       = LENGTH OF QUEUE NAME.
01871  M01S00420.242l642 +++|*             QOFF       = OFFSET OF QUEUE NAME.
01872  M01S00421.242l642 +++|*             BUFFER     = DATA TO ADD TO THE QUEUE.
01873  M01S00422.242l642 +++|*             RC         = RETURN CODE.
01874  M01S00423.242l642 +++|*             NIT$CTLC   = COUNT (IN 12 BIT CHARACTERS) IN BUFFER.
01875  M01S00424.242l642 +++|*
01876  M01S00425.242l642 +++|*     EXIT    RC         = 0, IF DATA ENQUEUED (NO ERROR).
01877  M01S00426.242l642 +++|*                          1, IF DATA NOT ENQUEUED.
01878  M01S00427.242l642 +++|*
01879  M01S00428.242l642 +++|*     CALLS   CMMALF.
01880  M01S00429.242l642 +++|#
01881  M01S00430.242l642 +++|ITEM QNAME      C(7);                # QUEUE TO PLACE DATA #
01882  M01S00431.242l642 +++|ITEM QLEN       I;                   # LENGTH OF QUEUE NAME #
01883  M01S00432.242l642 +++|ITEM QOFF       I;                   # OFFSET OF QUEUE NAME #
01884  M01S00433.242l642 +++|ITEM BUFFER     U;                   # DATA TO ADD TO QUEUE #
01885  M01S00434.242l642 +++|ITEM RC         I;                   # RETURN CODE #
01886  M01S00435.242l642 +++|
01887  M01S00436.242l642 +++|BASED ARRAY B$BUFF [0:0] P(1);       # BUFFER #
01888  M01S00437.242l642 +++|  BEGIN
01889  M01S00438.242l642 +++|  ITEM B$WD0      U(00,00,60);       # BUFFER WORD (INTEGER) #
01890  M01S00439.242l642 +++|  END
01891  M01S00440.242l642 +++|
01892  M01S00441.242l642 +++|ITEM BIT        I;                   # BIT POSITION #
01893  M01S00442.242l642 +++|ITEM B$CURBIT   I;                   # CURRENT BIT #
01894  M01S00443.242l642 +++|ITEM B$CURWORD  I;                   # CURRENT WORD #
01895  M01S00444.242l642 +++|ITEM ENTCT      I = 0;               # QTRM #
01896  M01S00445.242l642 +++|ITEM I          I = 0;               # LOOP VARIABLE #
01897  M01S00446.242l642 +++|ITEM QUEUENAME  C(7);                # QUEUE TO PLACE DATA #
01898  M01S00447.242l642 +++|ITEM RCC        I;                   # RETURN CODE #
01899  M01S00448.242l642 +++|ITEM WORD       I;                   # BUFFER WORD #
01900  M01S00449.242l642 +++|
01901  M01S00450.242l642 +++|IF QLEN LS 1 THEN QLEN = 7;          # LEFT JUSTIFY QUEUE NAME #
01902  M01S00451.242l642 +++|QUEUENAME = C<QOFF,QLEN>QNAME;
01903  M01S00452.242l642 +++|
01904  M01S00453.242l642 +++|P<B$BUFF> = LOC(BUFFER);
01905  M01S00454.242l642 +++|B$CURBIT = 0;                        # START AT BEGINNING OF BUFFER #
01906  M01S00455.242l642 +++|B$CURWORD = 0;
01907  M01S00456.242l642 +++|ENTCT = ENTCT + 1;
01908  M01S00457.242l642 +++|
01909  M01S00458.242l642 +++|SFNQUE1:
01910  M01S00459.242l642 +++|
01911  M01S00460.242l642 +++|  I = 0;
01912  M01S00461.242l642 +++|  P<Q$HEADER> = CHAIN;
01913  M01S00462.242l642 +++|  WHYLE P<Q$HEADER> NQ 0 DO
01914  M01S00463.242l642 +++|    BEGIN                            # FIND QUEUE NAME FOR THIS ACN #
01915  M01S00464.242l642 +++|    IF (( NIT$CON EQ Q$ACN ) AND
01916  M01S00465.242l642 +++|        ( C<0,3>QNAME EQ C<0,3>Q$NAME )) THEN
01917  M01S00466.242l642 +++|    IF NIT$CON EQ Q$ACN AND QUEUENAME EQ Q$NAME THEN
01918  M01S00467.242l642 +++|      BEGIN                          # IF FOUND #
01919  M01S00468.242l642 +++|      P<Q$BUFFER> = P<Q$HEADER> + Q$HEADLEN;
01920  M01S00469.242l642 +++|      FOR I = 1 STEP 1 UNTIL NIT$CTLC DO
01921  M01S00470.242l642 +++|        BEGIN                        # ADD DATA TO QUEUE #
01922  M01S00471.242l642 +++|        WORD = Q$INCHAR / 5;
01923  M01S00472.242l642 +++|        IF WORD GQ Q$SIZE THEN
01924  M01S00473.242l642 +++|          BEGIN                      # IF BLOCK OVERFLOW #
01925  M01S00474.242l642 +++|          RC = 1;                    # SET ERROR #
01926  M01S00475.242l642 +++|          RETURN;                    # RETURN #
01927  M01S00476.242l642 +++|          END
01928  M01S00477.242l642 +++|        BIT = (Q$INCHAR - (WORD * 5)) * 12;
01929  M01S00478.242l642 +++|        B<BIT,12>Q$WORD[WORD] = B<B$CURBIT,12>B$WD0[B$CURWORD];
01930  M01S00479.242l642 +++|        Q$INCHAR = Q$INCHAR + 1;
01931  M01S00480.242l642 +++|        B$CURBIT = B$CURBIT + 12;
01932  M01S00481.242l642 +++|        IF B$CURBIT GQ 60 THEN
01933  M01S00482.242l642 +++|          BEGIN                      # IF FULL WORD #
01934  M01S00483.242l642 +++|          B$CURBIT = 0;
01935  M01S00484.242l642 +++|          B$CURWORD = B$CURWORD + 1;
01936  M01S00485.242l642 +++|          END
01937  M01S00486.242l642 +++|        END
01938  M01S00487.242l642 +++|      RC = 0;                        # CLEAR RETURN CODE #
01939  M01S00488.242l642 +++|      RETURN;                        # RETURN #
01940  M01S00489.242l642 +++|      END
01941  M01S00490.242l642 +++|
01942  M01S00491.242l642 +++|    I = P<Q$HEADER>;                 # QUEUE DOESN-T EXIST, CREATE IT #
01943  M01S00492.242l642 +++|    P<Q$HEADER> = Q$FORWARD;         # ADD BLOCK TO END OF CHAIN #
01944  M01S00493.242l642 +++|    END
01945  M01S00494.242l642 +++|
01946  M01S00495.242l642 +++|  IF CHAIN EQ 0 THEN
01947  M01S00496.242l642 +++|    BEGIN                            # IF NO CHAIN HEADER #
01948  M01S00497.242l642 +++|    P<Q$HEADER> = LOC(CHAIN);
01949  M01S00498.242l642 +++|    END
01950  M01S00499.242l642 +++|  ELSE
01951  M01S00500.242l642 +++|    BEGIN                            # CHAIN HEADER EXISTS #
01952  M01S00501.242l642 +++|    P<Q$HEADER> = I;
01953  M01S00502.242l642 +++|    END
01954  M01S00503.242l642 +++|
01955  M01S00504.242l642 +++|  CMMALF (Q$BLKSIZE,0,0,RCC);
01956  M01S00505.242l642 +++|  Q$FORWARD = RCC;
01957  M01S00506.242l642 +++|  I = P<Q$HEADER>;
01958  M01S00507.242l642 +++|  P<Q$HEADER> = Q$FORWARD;
01959  M01S00508.242l642 +++|  Q$WD0 = 0;                         # CLEAR THE ENTRY HEADER AREA #
01960  M01S00509.242l642 +++|  Q$WD1 = 0;
01961  M01S00510.242l642 +++|  Q$WD2 = 0;
01962  M01S00511.242l642 +++|  Q$BACK = I;                        # SET THE BACKWARD POINTER #
01963  M01S00512.242l642 +++|  Q$ACN = NIT$CON;                   # SET THE TERMINAL ACN #
01964  M01S00513.242l642 +++|  Q$NAME = QUEUENAME;                # SET QUEUE NAME #
01965  M01S00514.242l642 +++|  Q$SIZE = Q$BLKSIZE - Q$HEADLEN;
01966  M01S00515.242l642 +++|  Q$CHARSET = NIT$CH$SET;            # DEFAULT IS 12 BIT ASCII #
01967  M01S00516.242l642 +++|
01968  M01S00517.242l642 +++|  GOTO SFNQUE1;                      # ADD THE DATA TO THE QUEUE #
01969  M01S00518.242l642 +++|
01970  M01S00519.242l642 +++|END  # SFNQUE$ #
01971  M01S00520.242l642 +++|*ENDIF
01972  M01S00933.sform   +++|CONTROL EJECT;
01973  M01S00934.sform   +++|
01974  M01S00003.ns2619  +++|PROC SFLUSH$;
01975  M01S00004.ns2619  +++|
01976  M01S00005.ns2619  +++|# TITLE SFLUSH$ - FLUSH DATA ALREADY WRITTEN TO SCREEN #
01977  M01S00006.ns2619  +++|
01978  M01S00007.ns2619  +++|BEGIN  # SFLUSH$ #
01979  M01S00008.ns2619  +++|
01980  M01S00009.ns2619  +++|#
01981  M01S00010.ns2619  +++|**    SFLUSH$ - FLUSH DATA ALREADY WRITTEN TO SCREEN.
01982  M01S00011.ns2619  +++|*
01983  M01S00012.ns2619  +++|*     THIS PROCEDURE FORCES DATA WHICH HAS ALREADY BEEN WRITTEN TO THE
01984  M01S00013.ns2619  +++|*     SCREEN BY MEANS OF *SFSWRI$* TO BE DISPLAYED UPON THE SCREEN, BY
01985  M01S00014.ns2619  +++|*     WRITING AN *EOR* TO THE SCREEN.  NO PARAMETERS ARE REQUIRED.
01986  M01S00015.ns2619  +++|*
01987  M01S00016.ns2619  +++|*     PROC SFLUSH$
01988  M01S00017.ns2619  +++|*
01989  M01S00018.ns2619  +++|*     ENTRY   NONE.
01990  M01S00019.ns2619  +++|*
01991  M01S00020.ns2619  +++|*     EXIT    PREVIOUSLY WRITTEN PANEL DATA FLUSHED TO SCREEN.
01992  M01S00021.ns2619  +++|*
01993  M01S00022.ns2619  +++|*     CALLS   VDTFOS.
01994  M01S00023.ns2619  +++|*
01995  M01S00024.ns2619  +++|*     USES    TERVDTBOOC.
01996  M01S00025.ns2619  +++|*
01997  M01S00026.ns2619  +++|#
01998  M01S00027.ns2619  +++|*IF UNDEF,QTRM
01999  M01S00028.ns2619  +++|ITEM RECALL     I = 1;               # RECALL PARAMETER FOR VDTFOS #
02000  M01S00029.ns2619  +++|
02001  M01S00030.ns2619  +++|IF TERVDTBOOC[0] THEN
02002  M01S00031.ns2619  +++|  BEGIN                              # IF DATA IN BUFFER TO FLUSH #
02003  M01S00032.ns2619  +++|  IF NOT TERNOVDTEO[0] THEN VDTEOO;
02004  M01S00033.ns2619  +++|  TERVDTBOOC[0] = FALSE;
02005  M01S00034.ns2619  +++|  VDTFOS(RECALL);                    # FLUSH OUTPUT TO SCREEN, RECALL #
02006  M01S00035.ns2619  +++|  END
02007  M01S00036.ns2619  +++|*ELSE
02008  M01S00037.ns2619  +++|
02009  M01S00038.ns2619  +++|NIT$RC = NITRTC"OK";                 # SET RETURN CODE #
02010  M01S00039.ns2619  +++|*ENDIF
02011  M01S00040.ns2619  +++|
02012  M01S00041.ns2619  +++|END  # SFLUSH$ #
02013  M01S00042.ns2619  +++|CONTROL EJECT;
02014  M01S00043.ns2619  +++|
02015  M01S00935.sform   +++|PROC SFOPEN$(NAME,NLENGTH,NOFFSET,OPENSTAT);
02016  M01S00936.sform   +++|
02017  M01S00937.sform   +++|# TITLE SFOPEN$ - OPEN PANEL. #
02018  M01S00938.sform   +++|
02019  M01S00939.sform   +++|BEGIN  # SFOPEN$ #
02020  M01S00940.sform   +++|
02021  M01S00941.sform   +++|#
02022  M01S00942.sform   +++|**    SFOPEN$ - OPEN PANEL.
02023  M01S00943.sform   +++|*
Line S00944 Modification History
M01 (Added by) sform
M02 (Updated by) sform9
Seq #  *Modification Id* Act 
----------------------------+
02024  M02S00944.sform9  ---|*     THIS PROCEDURE CALLS *CHKTRM* TO CHECK TO SEE IF THE TERMINAL
02025  M01S00001.sform9  +++|*     THIS PROCEDURE CHECKS (VIA VDTGSL/VDTITD) TO SEE IF THE TERMINAL
02026  M01S00945.sform   +++|*     IN USE IS SUPPORTED UNDER SCREEN FORMATTING (UNLESS THIS HAS
02027  M01S00946.sform   +++|*     ALREADY BEEN DONE BY A PREVIOUS CALL TO SFOPEN.)  IF THE TERM-
02028  M01S00947.sform   +++|*     INAL IS SUPPORTED THEN *SFLOAD* IS CALLED TO LOAD THE PANEL
02029  M01S00948.sform   +++|*     VIA THE FAST DYNAMIC LOADER (EXCEPT FOR THOSE PANELS THAT ARE
02030  M01S00949.sform   +++|*     STATICALLY LOADED AND THUS ALWAYS PRESENT IN MEMORY) AND THE
02031  M01S00950.sform   +++|*     PANEL LOAD TABLE IS UPDATED IF THE LOAD WAS SUCCESSFUL.  THE
02032  M01S00951.sform   +++|*     STATUS OF THE OPEN IS RETURNED TO THE CALLING APPLICATION IN
02033  M01S00952.sform   +++|*     ALL CASES INDICATING THAT THE OPEN WAS SUCCESSFUL OR AN ERROR
02034  M01S00953.sform   +++|*     CODE INDICATING WHY NOT.  SFOPEN$ INTERFACES TO COBOL AND FOR-
02035  M01S00954.sform   +++|*     TRAN PROGRAMS THROUGH A COMPASS INTERFACE MODULE CALLED SFOPEN.
02036  M01S00955.sform   +++|*
02037  M01S00956.sform   +++|*     PROC SFOPEN$(NAME,NLENGTH,NOFFSET,OPENSTAT)
02038  M01S00957.sform   +++|*
02039  M01S00958.sform   +++|*     ENTRY   NAME       = NAME OF PANEL TO BE OPENED.
02040  M01S00959.sform   +++|*             NLENGTH    = LENGTH IN SIX BIT CHARACTERS.
02041  M01S00960.sform   +++|*             NOFFSET    = OFFSET INTO NAME.
02042  M01S00961.sform   +++|*
02043  M01S00962.sform   +++|*     EXIT    PANEL OPENED IF POSSIBLE, OPENSTAT SET REGARDLESS.
02044  M01S00963.sform   +++|*
Line S00964 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02045  M02S00964.242l642 ---|*     CALLS   CHKTRM, SETSRN, SFLOAD.
02046  M01S00521.242l642 +++|*IF UNDEF,QTRM
02047  M01S00522.242l642 +++|*     CALLS   SETSRN, SFLOAD, VDTITD, VDTGSL.
02048  M01S00523.242l642 +++|*ELSE
02049  M01S00524.242l642 +++|*     CALLS   SETFSF, SETSRN, SFLOAD, VDTITD.
02050  M01S00525.242l642 +++|*ENDIF
02051  M01S00965.sform   +++|*
02052  M01S00966.sform   +++|*     NOTES   OPENSTAT IS SET BY SFOPEN IN SOME CASES AND IS ALSO
02053  M01S00967.sform   +++|*             A PARAMETER ON THE CALL TO SFLOAD IN THOSE INSTANCES
02054  M01S00968.sform   +++|*             WHERE THE FAST DYNAMIC LOADER IS TO BE CALLED.
02055  M01S00969.sform   +++|*
02056  M01S00970.sform   +++|*             OPENSTAT   SIGNIFICANCE                     PROCEDURE
02057  M01S00971.sform   +++|*             .....................................................
02058  M01S00972.sform   +++|*             .   0   .  NO ERROR                        .  BOTH  .
02059  M01S00973.sform   +++|*             .   1   .  UNKNOWN PANEL NAME              . SFLOAD .
02060  M01S00974.sform   +++|*             .   2   .  INCORRECT CAPSULE FORMAT        . SFLOAD .
02061  M01S00975.sform   +++|*             .   3   .  PLT FULL (TOO MANY OPEN PANELS) . SFOPEN .
02062  M01S00976.sform   +++|*             .   4   .  PANEL ALREADY OPEN              . SFOPEN .
02063  M01S00977.sform   +++|*             .   5   .  INTERNAL (FAST DYNAMIC LOADER)  . SFLOAD .
02064  M01S00978.sform   +++|*             .   6   .  NO SCREEN COMMAND ISSUED        . SFOPEN .
02065  M01S00979.sform   +++|*             .   7   .  UNSUPPORTED TERMINAL            . SFOPEN .
02066  M01S00980.sform   +++|*             .....................................................
02067  M01S00981.sform   +++|#
02068  M01S00982.sform   +++|ITEM NAME       C(11);               # NAME OF PANEL TO OPEN #
02069  M01S00983.sform   +++|ITEM NLENGTH    I;                   # LENGTH IN SIX BIT CHARACTERS #
02070  M01S00984.sform   +++|ITEM NOFFSET    I;                   # OFFSET INTO NAME #
02071  M01S00985.sform   +++|ITEM OPENSTAT   I;                   # RETURNS STATUS TO APPLICATION #
02072  M01S00986.sform   +++|
02073  M01S00526.242l642 +++|ITEM MODELNAME  C(7);                # MODEL NAME FOR VDTITD CALL #
02074  M01S00987.sform   +++|ITEM NAMEINDEX  I;                   # INDEX OF PANEL IF FOUND #
02075  M01S00988.sform   +++|ITEM PANELADDR  I;                   # MEMORY ADDRESS OF PANEL #
02076  M01S00989.sform   +++|ITEM PANELNAME  C(7);                # PANEL NAME, LEFT JUSTIFIED #
02077  M01S00990.sform   +++|ITEM PLTINDEX   I;                   # INDEX INTO PANEL LOAD TABLE #
02078  M01S00991.sform   +++|ITEM SCREEN     I = 1;               # INDICATES SCREEN MODE TO VDT #
02079  M01S00992.sform   +++|ITEM SCREENDIM  I;                   # SCREEN DIMENSIONS FOR SETSRN #
02080  M01S00527.242l642 +++|*IF DEF,QTRM
02081  M01S00528.242l642 +++|ITEM QTPLTINDEX I;                   # INDEX INTO QTRM USERS PLT #
02082  M01S00529.242l642 +++|*ENDIF
02083  M01S00993.sform   +++|
Line S00994 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02084  M02S00994.ns2275  ---|OPENSTAT = 0;                        # CLEAR OPEN STATUS #
Line S00995 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02085  M02S00995.ns2275  ---|IF TERMMODEL EQ -1 THEN
Line S00996 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02086  M02S00996.ns2275  ---|  BEGIN                              # IF NO CHECK FOR SUPPORT YET #
Line S00997 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02087  M02S00997.ns2275  ---|  CHKTRM(OPENSTAT);                  # CHECK FOR SUPPORTED TERMINAL #
02088  M01S00012.ns2275  +++|OPENSTAT = OPENSTATUS"NOERROR";      # CLEAR OPEN STATUS #
Line S00013 Modification History
M01 (Added by) ns2275
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02089  M02S00013.242l642 ---|IF TERMMODEL EQ "      " THEN
02090  M01S00530.242l642 +++|IF TERMODNAME[0] EQ "       " THEN
02091  M01S00014.ns2275  +++|  BEGIN                              # IF *TDU* TABLE NOT YET READ #
Line S00015 Modification History
M01 (Added by) ns2275
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02092  M02S00015.242l642 ---|  VDTGSL(DUMMY,OPENSTAT);            # CHECK SYSTEM SCREEN/LINE #
02093  M01S00531.242l642 +++|*IF UNDEF,QTRM
02094  M01S00532.242l642 +++|  VDTGSL(DUMMY,OPENSTAT);            # CHECK SYSTEM SCREEN/LINE #
02095  M01S00533.242l642 +++|*ELSE
02096  M01S00534.242l642 +++|  OPENSTAT = NIT$MODEL[NIT$CON];     # GET SCREEN MODE #
02097  M01S00535.242l642 +++|  MODELNAME = NIT$TRNAM[NIT$CON];    # GET MODEL NAME #
02098  M01S00536.242l642 +++|*ENDIF
Line S00016 Modification History
M01 (Added by) ns2275
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02099  M02S00016.242l642 ---|  IF OPENSTAT EQ 1 THEN
Line S00017 Modification History
M01 (Added by) ns2275
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02100  M02S00017.242l642 ---|    BEGIN                            # IF SCREEN MODE #
02101  M01S00537.242l642 +++|  IF OPENSTAT EQ 0 THEN
02102  M01S00538.242l642 +++|    BEGIN                            # IF NO MODEL SPECIFIED #
02103  M01S00539.242l642 +++|    OPENSTAT = OPENSTATUS"NOSCREEN"; # NONE SPECIFIED #
02104  M01S00540.242l642 +++|    END
02105  M01S00541.242l642 +++|  ELSE
02106  M01S00542.242l642 +++|    BEGIN                            # MODEL SPECIFIED #
02107  M01S00018.ns2275  +++|    OPENSTAT = OPENSTATUS"NOERROR";  # CLEAR OPEN STATUS #
Line S00019 Modification History
M01 (Added by) ns2275
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02108  M02S00019.242l642 ---|    VDTITD(TERMMODEL);               # INITIALIZE *TDU* TABLE #
Line S00020 Modification History
M01 (Added by) ns2275
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02109  M02S00020.242l642 ---|    IF TERMMODEL EQ "      " THEN OPENSTAT = OPENSTATUS"UNSPTERM";
02110  M01S00543.242l642 +++|    VDTITD(MODELNAME);               # INITIALIZE *TDU* TABLE #
Line S00544 Modification History
M01 (Added by) 242l642
M02 (Updated by) ns2671
Seq #  *Modification Id* Act 
----------------------------+
02111  M02S00544.ns2671  ---|    TERMODNAME[0] = MODELNAME;
Line S00021 Modification History
M01 (Added by) ns2275
M02 (Updated by) 242l642
M03 (Updated by) ns2671
Seq #  *Modification Id* Act 
----------------------------+
02112  M03S00021.ns2671  ---|    END
Line S00022 Modification History
M01 (Added by) ns2275
M02 (Updated by) 242l642
M03 (Updated by) ns2671
Seq #  *Modification Id* Act 
----------------------------+
02113  M03S00022.ns2671  ---|  ELSE
Line S00023 Modification History
M01 (Added by) ns2275
M02 (Updated by) 242l642
M03 (Updated by) ns2671
Seq #  *Modification Id* Act 
----------------------------+
02114  M03S00023.ns2671  ---|    BEGIN                            # OS MODE IS LINE #
Line S00024 Modification History
M01 (Added by) ns2275
M02 (Updated by) 242l642
M03 (Updated by) ns2671
Seq #  *Modification Id* Act 
----------------------------+
02115  M03S00024.ns2671  ---|    OPENSTAT = OPENSTATUS"NOSCREEN"; # RETURN STATUS #
Line S00545 Modification History
M01 (Added by) 242l642
M02 (Updated by) ns2605
M03 (Updated by) ns2671
Seq #  *Modification Id* Act 
----------------------------+
02116  M03S00545.ns2671  ---|    IF TERMODNAME[0] EQ "       " THEN OPENSTAT = OPENSTATUS"UNSPTERM";
Line S00055 Modification History
M01 (Added by) ns2605
M02 (Updated by) ns2671
Seq #  *Modification Id* Act 
----------------------------+
02117  M02S00055.ns2671  ---|    IF TERMODNAME[0] EQ "       " THEN
02118  M01S00001.ns2671  +++|    IF C<0,6>MODELNAME EQ "      " THEN
02119  M01S00056.ns2605  +++|      BEGIN                          # IF TERMINAL UNDEFINED #
02120  M01S00002.ns2671  +++|      TERMODNAME[0] = "       ";
02121  M01S00057.ns2605  +++|      OPENSTAT = OPENSTATUS"UNSPTERM";
02122  M01S00058.ns2605  +++|      END
02123  M01S00059.ns2605  +++|    ELSE
02124  M01S00060.ns2605  +++|      BEGIN                          # SUPPORTED TERMINAL #
02125  M01S00003.ns2671  +++|      TERMODNAME[0] = MODELNAME;
02126  M01S00061.ns2605  +++|      P<CORE>=0;
02127  M01S00062.ns2605  +++|      IF COREWORD[CSMR] GQ 0 THEN
02128  M01S00063.ns2605  +++|        BEGIN                        # IF 63 CHARACTER SET SYSTEM #
02129  M01S00064.ns2605  +++|        DC2A8[00] = O"0040";         # 00B = UNDEFINED #
02130  M01S00065.ns2605  +++|        DC2A8[51] = O"0072";         # 63B = COLON #
02131  M01S00066.ns2605  +++|        A82DC[37] = O"0055";         # PERCENT = UNDEFINED #
02132  M01S00067.ns2605  +++|        A82DC[58] = O"0063";         # COLON = 63B #
02133  M01S00068.ns2605  +++|        AS2A8[03] = O"0045";         # 7404B = PERCENT #
02134  M01S00069.ns2605  +++|        TERASC8ATD[0] = 37;          # PERCENT = 7404B #
02135  M01S00070.ns2605  +++|        END
02136  M01S00071.ns2605  +++|      END
02137  M01S00025.ns2275  +++|    END
02138  M01S00998.sform   +++|  END
02139  M01S00999.sform   +++|
Line S01000 Modification History
M01 (Added by) sform
M02 (Updated by) sform9
Seq #  *Modification Id* Act 
----------------------------+
02140  M02S01000.sform9  ---|IF OPENSTAT EQ 0 THEN
02141  M01S00002.sform9  +++|IF OPENSTAT EQ OPENSTATUS"NOERROR" THEN
02142  M01S01001.sform   +++|  BEGIN                              # IF TERMINAL CAN BE USED #
02143  M01S01002.sform   +++|  IF NOT TERSCREENM[0] THEN
02144  M01S01003.sform   +++|    BEGIN                            # IF NOT IN SCREEN MODE #
02145  M01S01004.sform   +++|    SCREENDIM = 1;                   # ASK FOR SMALLEST SCREEN SIZE #
02146  M01S01005.sform   +++|    SETSRN(SCREENDIM,SCREENDIM);     # SET SCREEN MODE #
02147  M01S01006.sform   +++|    END
02148  M01S01007.sform   +++|  IF NLENGTH LS 1 THEN NLENGTH = 7;  # LEFT JUSTIFY PANEL NAME #
02149  M01S01008.sform   +++|  PANELNAME = C<NOFFSET,NLENGTH>NAME;
02150  M01S00546.242l642 +++|*IF DEF,QTRM
02151  M01S00547.242l642 +++|
02152  M01S00548.242l642 +++|# CHECK FOR PANEL IN THIS USERS PLT AREA #
02153  M01S00549.242l642 +++|
02154  M01S00550.242l642 +++|  P<PLTABLE> = NIT$PCT[NIT$CON] + PLTOFFSET;
02155  M01S00551.242l642 +++|  PANELADDR = 0;
02156  M01S00552.242l642 +++|  QTPLTINDEX = 0;
02157  M01S00553.242l642 +++|  FOR PLTINDEX = 1 STEP 1 WHILE
02158  M01S00554.242l642 +++|    PANELADDR EQ 0 AND PLTINDEX LQ PLTNUMENT[0] DO
02159  M01S00555.242l642 +++|    BEGIN
02160  M01S00556.242l642 +++|    IF PLTENAME[PLTINDEX] EQ PANELNAME THEN
02161  M01S00557.242l642 +++|      BEGIN
02162  M01S00558.242l642 +++|      PANELADDR = PLTADDR[PLTINDEX];
02163  M01S00559.242l642 +++|      NAMEINDEX = PLTINDEX;
02164  M01S00560.242l642 +++|      END
02165  M01S00561.242l642 +++|    END
02166  M01S00562.242l642 +++|  IF PANELADDR EQ 0 THEN
02167  M01S00563.242l642 +++|    BEGIN                            # IF NOT IN USER PLT #
02168  M01S00564.242l642 +++|    P<PLTABLE> = LOC(PLT);           # CHECK GLOBAL PLT #
02169  M01S00565.242l642 +++|    FOR PLTINDEX = 1 STEP 1 WHILE
02170  M01S00566.242l642 +++|      PANELADDR EQ 0 AND PLTINDEX LQ PLTNUMENT[0] DO
02171  M01S00567.242l642 +++|      BEGIN
02172  M01S00568.242l642 +++|      IF PLTENAME[PLTINDEX] EQ PANELNAME THEN
02173  M01S00569.242l642 +++|        BEGIN
02174  M01S00570.242l642 +++|        PANELADDR = PLTADDR[PLTINDEX];
02175  M01S00571.242l642 +++|        NAMEINDEX = PLTINDEX;
02176  M01S00572.242l642 +++|        END
02177  M01S00573.242l642 +++|      END
02178  M01S00574.242l642 +++|    END
02179  M01S00575.242l642 +++|  IF PANELADDR NQ 0 THEN
02180  M01S00576.242l642 +++|    BEGIN                            # UPDATE USER PLT FROM GLOBAL #
02181  M01S00577.242l642 +++|    PLTNUMQTRM[NAMEINDEX] = PLTNUMQTRM[NAMEINDEX] + 1;
02182  M01S00578.242l642 +++|    P<PLTABLE> = NIT$PCT[NIT$CON] + PLTOFFSET;
02183  M01S00579.242l642 +++|    PLTNUMENT[0] = PLTNUMENT[0] + 1;
02184  M01S00580.242l642 +++|    NAMEINDEX = PLTNUMENT[0];
02185  M01S00581.242l642 +++|    PLTENAME[NAMEINDEX] = PANELNAME;
02186  M01S00582.242l642 +++|    PLTSLFLAG[NAMEINDEX] = FALSE;
02187  M01S00583.242l642 +++|    PLTOPENFLG[NAMEINDEX] = TRUE;
02188  M01S00584.242l642 +++|    PLTADDR[NAMEINDEX] = PANELADDR;
02189  M01S00585.242l642 +++|    SETFSF(PANELADDR);               # SET FIELD STATUS FLAGS #
02190  M01S00586.242l642 +++|    RETURN;
02191  M01S00587.242l642 +++|    END
02192  M01S00588.242l642 +++|*ENDIF
02193  M01S01009.sform   +++|  P<PLTABLE> = LOC(PLT);             # REFERENCE PANEL LOAD TABLE #
02194  M01S01010.sform   +++|  PANELADDR = 0;                     # CHECK FOR PANEL NAME IN TABLE #
02195  M01S01011.sform   +++|  FOR PLTINDEX = 1 STEP 1 WHILE
02196  M01S01012.sform   +++|    PANELADDR EQ 0 AND PLTINDEX LQ PLTNUMENT[0] DO
02197  M01S01013.sform   +++|    BEGIN
02198  M01S01014.sform   +++|    IF PLTENAME[PLTINDEX] EQ PANELNAME THEN
02199  M01S01015.sform   +++|      BEGIN                          # IF PANEL NAME FOUND #
02200  M01S01016.sform   +++|      PANELADDR = PLTADDR[PLTINDEX]; # SET PANEL ADDRESS #
02201  M01S01017.sform   +++|      NAMEINDEX = PLTINDEX;          # SET INDEX INTO PLT #
02202  M01S01018.sform   +++|      END
02203  M01S01019.sform   +++|    END
02204  M01S01020.sform   +++|  IF PANELADDR EQ 0 THEN
02205  M01S01021.sform   +++|    BEGIN                            # IF PANELNAME NOT IN PLT #
02206  M01S01022.sform   +++|    IF PLTNUMENT[0] GQ PLTENTRYNM[0] THEN
02207  M01S01023.sform   +++|      BEGIN                          # IF PANEL LOAD TABLE IS FULL #
Line S01024 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02208  M02S01024.ns2275  ---|      OPENSTAT = 3;                  # PANEL LOAD TABLE FULL #
02209  M01S00026.ns2275  +++|      OPENSTAT = OPENSTATUS"PLTFULL";
02210  M01S01025.sform   +++|      END
02211  M01S01026.sform   +++|    ELSE
02212  M01S01027.sform   +++|      BEGIN                          # LOAD VIA FAST DYNAMIC LOADER #
02213  M01S01028.sform   +++|      SFLOAD(PANELNAME,PANELADDR,OPENSTAT);
02214  M01S00225.243l647 +++|      IF OPENSTAT EQ 0 THEN
02215  M01S00226.243l647 +++|        BEGIN                        # IF LOADED WITHOUT ERROR #
02216  M01S00227.243l647 +++|        GETADD(PANELNAME,PANELADDR,NAMEINDEX);
02217  M01S00228.243l647 +++|        POSTWO(PANELADDR);           # POSITION SFATTR ARRAYS #
02218  M01S00229.243l647 +++|        END
02219  M01S00589.242l642 +++|*IF DEF,QTRM
02220  M01S00590.242l642 +++|        PLTNUMQTRM[PLTINDEX] = PLTNUMQTRM[PLTINDEX] + 1; # USER COUNT #
02221  M01S00591.242l642 +++|        P<PLTABLE> = NIT$PCT[NIT$CON] + PLTOFFSET;
02222  M01S00592.242l642 +++|        PLTNUMENT[0] = PLTNUMENT[0] + 1;
02223  M01S00593.242l642 +++|        NAMEINDEX = PLTNUMENT[0];
02224  M01S00594.242l642 +++|        PLTENAME[NAMEINDEX] = PANELNAME;
02225  M01S00595.242l642 +++|        PLTSLFLAG[NAMEINDEX] = FALSE;
02226  M01S00596.242l642 +++|        PLTOPENFLG[NAMEINDEX] = TRUE;
02227  M01S00597.242l642 +++|        PLTADDR[NAMEINDEX] = PANELADDR;
02228  M01S00598.242l642 +++|*ENDIF
02229  M01S01029.sform   +++|      END
02230  M01S01030.sform   +++|    END
02231  M01S01031.sform   +++|  ELSE
02232  M01S01032.sform   +++|    BEGIN                            # IF PANEL ALREADY IN PLT #
02233  M01S01033.sform   +++|    IF PLTOPENFLG[NAMEINDEX] THEN
02234  M01S01034.sform   +++|      BEGIN                          # IF PANEL IS ALREADY OPEN #
Line S01035 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02235  M02S01035.ns2275  ---|      OPENSTAT = 4;                  # PANEL ALREADY OPEN #
02236  M01S00027.ns2275  +++|      OPENSTAT = OPENSTATUS"PANELOPEN";
02237  M01S01036.sform   +++|      END
02238  M01S01037.sform   +++|    ELSE
02239  M01S01038.sform   +++|      BEGIN                          # OPEN STATICALLY LOADED PANEL #
02240  M01S01039.sform   +++|      PLTOPENFLG[NAMEINDEX] = TRUE;  # SET PANEL OPEN #
02241  M01S00599.242l642 +++|*IF DEF,QTRM
02242  M01S00600.242l642 +++|        SETFSF(PANELADDR);           # SET FIELD STATUS FLAGS #
02243  M01S00601.242l642 +++|*ENDIF
02244  M01S01040.sform   +++|      END
02245  M01S00230.243l647 +++|    POSTWO(PANELADDR);               # POSITION SFATTR ARRAYS #
02246  M01S01041.sform   +++|    END
02247  M01S01042.sform   +++|  END
02248  M01S01043.sform   +++|
02249  M01S01044.sform   +++|END  # SFOPEN$ #
02250  M01S01045.sform   +++|CONTROL EJECT;
02251  M01S01046.sform   +++|
02252  M01S01047.sform   +++|PROC SFPOSR$(TABLENAME,TLEN,TOFF,ROWNUMBER);
02253  M01S01048.sform   +++|
02254  M01S01049.sform   +++|# TITLE SFPOSR$ - POSITION TABLE ROW. #
02255  M01S01050.sform   +++|
02256  M01S01051.sform   +++|BEGIN  # SFPOSR$ #
02257  M01S01052.sform   +++|
02258  M01S01053.sform   +++|#
02259  M01S01054.sform   +++|**    SFPOSR$ - POSITION TABLE ROW.
02260  M01S01055.sform   +++|*
02261  M01S01056.sform   +++|*     SFPOSR$ POSITIONS TABLENAME TO ROWNUMBER.
02262  M01S01057.sform   +++|*
02263  M01S01058.sform   +++|*     PROC SFPOSR$(TABLENAME,TLEN,TOFF,ROWNUMBER)
02264  M01S01059.sform   +++|*
02265  M01S01060.sform   +++|*     ENTRY   TABLENAME  = TABLE NAME.
02266  M01S01061.sform   +++|*             TLEN       = LENGTH OF TABLENAME.
02267  M01S01062.sform   +++|*             TOFF       = OFFSET OF TABLENAME.
02268  M01S01063.sform   +++|*             ROWNUMBER  = ROW NUMBER.
02269  M01S01064.sform   +++|*
02270  M01S01065.sform   +++|*     EXIT    ARRCURROW[TABLENAME] = ROWNUMBER.
02271  M01S01066.sform   +++|#
02272  M01S01067.sform   +++|ITEM TABLENAME  C(11);               # TABLE NAME #
02273  M01S01068.sform   +++|ITEM TLEN       I;                   # LENGTH OF TABLENAME PARAMETER #
02274  M01S01069.sform   +++|ITEM TOFF       I;                   # OFFSET IN TABLENAME PARAMETER #
02275  M01S01070.sform   +++|ITEM ROWNUMBER  I;                   # ROW NUMBER IN ARRAY #
02276  M01S01071.sform   +++|
02277  M01S01072.sform   +++|ITEM I          I;                   # LOOP COUNTER #
02278  M01S01073.sform   +++|ITEM NOTFOUND   B;                   # TABLE NOT FOUND #
02279  M01S01074.sform   +++|ITEM TNAME      C(7);                # TABLE NAME LEFT JUSTIFIED #
02280  M01S01075.sform   +++|
02281  M01S01076.sform   +++|IF PANSTRARR[0] EQ 0 THEN RETURN;    # IF NO TABLES IN PANEL #
02282  M01S01077.sform   +++|
02283  M01S01078.sform   +++|IF TLEN LS 1 THEN TLEN = 7;          # CRACK PARAMETER #
02284  M01S01079.sform   +++|TNAME = C<TOFF,TLEN>TABLENAME;
02285  M01S01080.sform   +++|
02286  M01S01081.sform   +++|NOTFOUND = TRUE;
Line S01082 Modification History
M01 (Added by) sform
M02 (Updated by) sform6
Seq #  *Modification Id* Act 
----------------------------+
02287  M02S01082.sform6  ---|FOR I = 1 STEP 1 WHILE ARRNUMVARS[I] NQ 0 AND NOTFOUND DO
02288  M01S00001.sform6  +++|FOR I = 0 STEP 1 WHILE ARRNUMVARS[I] NQ 0 AND NOTFOUND DO
02289  M01S01083.sform   +++|  BEGIN                              # SEARCH ARRAY LIST FOR TABLE #
02290  M01S01084.sform   +++|  IF ARRNAME[I] EQ TNAME THEN
02291  M01S01085.sform   +++|    BEGIN                            # IF TABLE NAME FOUND #
02292  M01S01086.sform   +++|    NOTFOUND = FALSE;
02293  M01S01087.sform   +++|    IF ROWNUMBER LS 1 OR ROWNUMBER GR ARRNUMROWS[I] THEN
02294  M01S01088.sform   +++|      BEGIN                          # IF ILLEGAL ROW NUMBER #
02295  M01S01089.sform   +++|      ARRCURROW[I] = 0;
02296  M01S01090.sform   +++|      END
02297  M01S01091.sform   +++|    ELSE ARRCURROW[I] = ROWNUMBER - 1;
02298  M01S01092.sform   +++|    END
02299  M01S01093.sform   +++|  END
02300  M01S01094.sform   +++|
02301  M01S01095.sform   +++|END  # SFPOSR$ #
02302  M01S00072.ns2605  +++|CONTROL EJECT;
02303  M01S00073.ns2605  +++|
02304  M01S00074.ns2605  +++|PROC SFSETF$(VNAME,VLEN,VOS,STRG,SLEN,SOS,CSET,CLEN,COS,STAT);
02305  M01S00075.ns2605  +++|  BEGIN
02306  M01S00076.ns2605  +++|#
02307  M01S00077.ns2605  +++|**        SFSETF$ - SET FIELD CHARACTER STRING.
02308  M01S00078.ns2605  +++|*
02309  M01S00079.ns2605  +++|*         SFGETF$ TRANSFERS CHARACTERS TO A SPECIFIED PANEL FIELD FROM
02310  M01S00080.ns2605  +++|*         A SPECIFIED STRING, USING *MOVEFLD*.
02311  M01S00081.ns2605  +++|*
02312  M01S00082.ns2605  +++|*         PROC SFGETF$(VNAME,VLEN,VOS,STRG,SLEN,SOS,CSET,CLEN,COS,STAT)
02313  M01S00083.ns2605  +++|*
02314  M01S00084.ns2605  +++|*         ENTRY  VNAME     = VARIABLE NAME OF FIELD.
02315  M01S00085.ns2605  +++|*                VLEN      = LENGTH OF VARNAME PARAMETER.
02316  M01S00086.ns2605  +++|*                VOS       = OFFSET OF VARNAME PARAMETER.
02317  M01S00087.ns2605  +++|*                STRG      = VARIABLE FIELD STRING.
02318  M01S00088.ns2605  +++|*                SLEN      = LENGTH OF STRING PARAMETER.
02319  M01S00089.ns2605  +++|*                SOS       = OFFSET OF STRING PARAMETER.
02320  M01S00090.ns2605  +++|*                CSET      = CHARACTER SET OF STRING (SEE SFCSET$).
02321  M01S00091.ns2605  +++|*                CLEN      = LENGTH OF CSET PARAMETER.
02322  M01S00092.ns2605  +++|*                COS       = OFFSET OF CSET PARAMETER.
02323  M01S00093.ns2605  +++|*
02324  M01S00094.ns2605  +++|*         EXIT   STAT     GQ 0, NUMBER OF 6 BIT CHARACTERS MOVED.
02325  M01S00095.ns2605  +++|*                         LS 0, VARIABLE NOT FOUND IN ACTIVE PANELS.
02326  M01S00096.ns2605  +++|*
02327  M01S00097.ns2605  +++|*         CALLS  MOVEFLD.
02328  M01S00098.ns2605  +++|#
02329  M01S00099.ns2605  +++|
02330  M01S00100.ns2605  +++|  ITEM VNAME      I;                 # VARIABLE NAME #
02331  M01S00101.ns2605  +++|  ITEM VLEN       I;                 # LENGTH OF VARNAME PARAMETER #
02332  M01S00102.ns2605  +++|  ITEM VOS        I;                 # OFFSET INTO VARNAME PARAMETER #
02333  M01S00103.ns2605  +++|  ITEM STRG       I;                 # INSTRING PARAMETER #
02334  M01S00104.ns2605  +++|  ITEM SLEN       I;                 # LENGTH OF INSTRING #
02335  M01S00105.ns2605  +++|  ITEM SOS        I;                 # OFFSET INTO INSTRING #
02336  M01S00106.ns2605  +++|  ITEM CSET       I;                 # CHARACTER SET #
02337  M01S00107.ns2605  +++|  ITEM CLEN       I;                 # LENGTH OF CHARACTER SET #
02338  M01S00108.ns2605  +++|  ITEM COS        I;                 # OFFSET INTO CHARACTER SET #
02339  M01S00109.ns2605  +++|  ITEM STAT       I;                 # STATUS FIELD #
02340  M01S00110.ns2605  +++|
02341  M01S00111.ns2605  +++|
02342  M01S00112.ns2605  +++|  STAT = 1;                          # INDICATE *SFSETF* #
02343  M01S00113.ns2605  +++|  MOVEFLD(VNAME,VLEN,VOS,STRG,SLEN,SOS,CSET,CLEN,COS,STAT);
02344  M01S00114.ns2605  +++|  RETURN;
02345  M01S00115.ns2605  +++|
02346  M01S00116.ns2605  +++|END  # SFSETF$#
02347  M01S00602.242l642 +++|*IF DEF,QTRM
02348  M01S00603.242l642 +++|CONTROL EJECT;
02349  M01S00604.242l642 +++|
02350  M01S00605.242l642 +++|PROC SFQTRM$(NITADDR,BUFFER);
02351  M01S00606.242l642 +++|
02352  M01S00607.242l642 +++|# TITLE SFQTRM$ - INTERFACE BETWEEN QTRM AND SFORM #
02353  M01S00608.242l642 +++|
02354  M01S00609.242l642 +++|BEGIN  # SFQTRM$ #
02355  M01S00610.242l642 +++|
02356  M01S00611.242l642 +++|#
02357  M01S00612.242l642 +++|**    SFQTRM$ - INTERFACE BETWEEN QTRM AND SFORM.
02358  M01S00613.242l642 +++|*
02359  M01S00614.242l642 +++|*     THIS PROCEDURE IS THE INTERFACE BETWEEN QTRM AND SFORM THAT
02360  M01S00615.242l642 +++|*     IDENTIFIES THE QTRM NETWORK INFORMATION TABLE, DATA BUFFER,
02361  M01S00616.242l642 +++|*     AND CURRENT TERMINAL TO SFORM.  SFQTRM$ INTERFACES TO COBOL
02362  M01S00617.242l642 +++|*     AND FORTRAN PROGRAMS THROUGH A COMPASS INTERFACE MODULE
02363  M01S00618.242l642 +++|*     CALLED SFQTRM.
02364  M01S00619.242l642 +++|*
02365  M01S00620.242l642 +++|*     PROC SFQTRM$(NITADDR,BUFFER)
02366  M01S00621.242l642 +++|*
02367  M01S00622.242l642 +++|*     ENTRY  NITADDR    = ADDRESS OF QTRM USER-S QTRM NETWORK
02368  M01S00623.242l642 +++|*                         INFORMATION TABLE.
02369  M01S00624.242l642 +++|*            BUFFER     = ADDRESS OF BUFFER FOR THE SCREEN FORMATTING
02370  M01S00625.242l642 +++|*                         ROUTINES SFSREA AND SFSWRI TO USE. THE
02371  M01S00626.242l642 +++|*
02372  M01S00627.242l642 +++|*     EXIT   POINTERS TO BUFFER INITIALIZED.
02373  M01S00628.242l642 +++|#
02374  M01S00629.242l642 +++|ITEM NITADDR    U;                   # ADDRESS OF THE USERS NIT #
02375  M01S00630.242l642 +++|ARRAY BUFFER [0:0] P(1);;            # BUFFER #
02376  M01S00631.242l642 +++|
02377  M01S00632.242l642 +++|ITEM CHARIND    I = 0;               # CHAR INDEX FOR FLAG MOVE #
02378  M01S00633.242l642 +++|ITEM CURRNT$ACN I = 0;               # CURRENT ACN POINTER #
02379  M01S00634.242l642 +++|ITEM I          I;                   # LOOP COUNTER #
02380  M01S00635.242l642 +++|ITEM HOLDADR    U;                   # HOLDS BUFFER ADDRESS #
02381  M01S00636.242l642 +++|ITEM PANELNAME  C(7);                # PANEL NAME FOR ARRAY RESET #
02382  M01S00637.242l642 +++|ITEM PANELADDR  I;                   # PANEL ADDR FOR ARRAY RESET #
02383  M01S00638.242l642 +++|ITEM VDATALEN   I;                   # VARDATA LENGTH #
02384  M01S00639.242l642 +++|ITEM PLTINDEX   I;                   # ACTIVE PANEL INDEX TO RESET #
02385  M01S00640.242l642 +++|ITEM WORDIND    I = 0;               # WORD INDEX FOR FLAG MOVE #
02386  M01S00641.242l642 +++|
02387  M01S00642.242l642 +++|HOLDADR = LOC(BUFFER);               # SAVE BUFFER ADDRESS #
02388  M01S00643.242l642 +++|P<NIT> = LOC(NITADDR);               # SAVE NIT ADDRESS #
02389  M01S00644.242l642 +++|IF CURRNT$ACN EQ 0 THEN
02390  M01S00645.242l642 +++|  BEGIN                              # IF FIRST CALL TO SFQTRM$ #
02391  M01S00646.242l642 +++|  CURRNT$ACN = NIT$CON[0];
02392  M01S00647.242l642 +++|  P<QTRM$BUFFER> = LOC(BUFFER);
02393  M01S00648.242l642 +++|  FOR I = 0 STEP 1 UNTIL SFORMSIZE -1 DO
02394  M01S00649.242l642 +++|    BEGIN                            # SAVE TERMSTAT DEFAULTS #
02395  M01S00650.242l642 +++|    TERINITHLD[I] = TERMSTATWD[I];
02396  M01S00651.242l642 +++|    END
02397  M01S00652.242l642 +++|  FOR I = 0 STEP 1 UNTIL VTERMSIZE -1 DO
02398  M01S00653.242l642 +++|    BEGIN                            # SAVE VDT AREA DEFAULTS #
02399  M01S00654.242l642 +++|    VDTINITHLD[I] = COMVDT$WD0[I];
02400  M01S00655.242l642 +++|    END
02401  M01S00656.242l642 +++|  RETURN;
02402  M01S00657.242l642 +++|  END
02403  M01S00658.242l642 +++|
02404  M01S00659.242l642 +++|IF CURRNT$ACN NQ NIT$CON[0] THEN
02405  M01S00660.242l642 +++|BEGIN                                # IF NEW USER #
02406  M01S00661.242l642 +++|  IF CURRNT$ACN NQ 0 AND NIT$PCT[CURRNT$ACN] NQ 0 THEN
02407  M01S00662.242l642 +++|    BEGIN                            # IF THERE IS A CURRENT USER #
02408  M01S00663.242l642 +++|    P<PCT> = NIT$PCT[CURRNT$ACN];    # SAVE PREVIOUS TERMINAL-S STATE #
02409  M01S00664.242l642 +++|    TERFLDADDR  = P<FLDLIST>;        # SAVE FIELD LIST ADDRESS #
02410  M01S00665.242l642 +++|    P<QTRM$BUFFER> = P<PCT> + SFORMOFFSET;
02411  M01S00666.242l642 +++|    FOR I = 0 STEP 1 UNTIL SFORMSIZE -1 DO
02412  M01S00667.242l642 +++|      BEGIN                          # MOVE SFORM DATA #
02413  M01S00668.242l642 +++|      QTRM$WD0[I] = TERMSTATWD[I];
02414  M01S00669.242l642 +++|      END
02415  M01S00670.242l642 +++|    P<QTRM$BUFFER> = P<PCT> + VTERMOFFSET;
02416  M01S00671.242l642 +++|    FOR I = 0 STEP 1 UNTIL VTERMSIZE - 1 DO
02417  M01S00672.242l642 +++|      BEGIN                          # MOVE VIRTERM DATA #
02418  M01S00673.242l642 +++|      QTRM$WD0[I] = COMVDT$WD0[I];
02419  M01S00674.242l642 +++|      END
02420  M01S00675.242l642 +++|    P<QTRM$BUFFER> = P<PCT> + FDAOFFSET;
02421  M01S00676.242l642 +++|    IF TERFLDADDR[0] NQ 0 THEN
02422  M01S00677.242l642 +++|      BEGIN                          # IF FIELD STATUS FLAGS EXIST #
02423  M01S00678.242l642 +++|      FOR I = 0 STEP 1 WHILE FLDENTRY[I] NQ 0 DO
02424  M01S00679.242l642 +++|        BEGIN                        # MOVE FIELD STATUS FLAGS #
02425  M01S00680.242l642 +++|        WORDIND = I / 15;
02426  M01S00681.242l642 +++|        CHARIND = I - 15*WORDIND;
02427  M01S00682.242l642 +++|        B<CHARIND*4,4>QTRM$WD0[WORDIND] = FLDSTFLAGS[I];
02428  M01S00683.242l642 +++|        END
02429  M01S00684.242l642 +++|      END
02430  M01S00685.242l642 +++|    P<QTRM$BUFFER> = P<PCT> + VDTAOFFSET;
02431  M01S00686.242l642 +++|    PANELADDR = P<VDATA> - PANHEADLEN;
02432  M01S00687.242l642 +++|    IF PANSTRFLD[0] NQ 0 THEN
02433  M01S00688.242l642 +++|      BEGIN                          # IF FIELDS EXISTS #
02434  M01S00689.242l642 +++|      VDATALEN = P<FLDLIST> - (PANELADDR + PANHEADLEN);
02435  M01S00690.242l642 +++|      END
02436  M01S00691.242l642 +++|    ELSE
02437  M01S00692.242l642 +++|      BEGIN                          # NO FIELDS #
02438  M01S00693.242l642 +++|      VDATALEN = P<VARLIST> - (PANELADDR + PANHEADLEN);
02439  M01S00694.242l642 +++|      END
02440  M01S00695.242l642 +++|    FOR I = 0 STEP 1 UNTIL VDATALEN -1 DO
02441  M01S00696.242l642 +++|      BEGIN
02442  M01S00697.242l642 +++|      QTRM$WD0[I] = VDATAU[I];
02443  M01S00698.242l642 +++|      END
02444  M01S00699.242l642 +++|    END
02445  M01S00700.242l642 +++|  CURRNT$ACN = NIT$CON[0];           # LOAD ITEMS FOR NEW TERMINAL #
02446  M01S00701.242l642 +++|  IF NIT$PCT[CURRNT$ACN] NQ 0 THEN
02447  M01S00702.242l642 +++|    BEGIN                            # IF USER HAS A PCT #
02448  M01S00703.242l642 +++|      P<PCT> = NIT$PCT[CURRNT$ACN];
02449  M01S00704.242l642 +++|      P<PLTABLE> = NIT$PCT[CURRNT$ACN] + PLTOFFSET;
02450  M01S00705.242l642 +++|      P<QTRM$BUFFER> = P<PCT> + SFORMOFFSET;
02451  M01S00706.242l642 +++|      FOR I = 0 STEP 1 UNTIL SFORMSIZE - 1 DO
02452  M01S00707.242l642 +++|        BEGIN                        # MOVE SFORM DATA #
02453  M01S00708.242l642 +++|        TERMSTATWD[I] = QTRM$WD0[I];
02454  M01S00709.242l642 +++|        END
02455  M01S00710.242l642 +++|      P<FLDLIST> = TERFLDADDR;       # FLDLIST ADDRESS #
02456  M01S00711.242l642 +++|      P<QTRM$BUFFER> = P<PCT> + VTERMOFFSET;
02457  M01S00712.242l642 +++|      FOR I = 0 STEP 1 UNTIL VTERMSIZE - 1 DO
02458  M01S00713.242l642 +++|        BEGIN                        # MOVE VIRTERM DATA #
02459  M01S00714.242l642 +++|        COMVDT$WD0[I] = QTRM$WD0[I];
02460  M01S00715.242l642 +++|        END
02461  M01S00716.242l642 +++|      IF TERACTPANL[0] NQ "       " THEN
02462  M01S00717.242l642 +++|        BEGIN                        # IF PANEL ACTIVE #
02463  M01S00718.242l642 +++|        P<QTRM$BUFFER> = P<PCT> + FDAOFFSET;
02464  M01S00719.242l642 +++|        IF TERFLDADDR[0] NQ 0 THEN
02465  M01S00720.242l642 +++|          BEGIN                      # IF FIELD STATUS FLAGS EXIST #
02466  M01S00721.242l642 +++|          FOR I = 0 STEP 1 WHILE FLDENTRY[I] NQ 0 DO
02467  M01S00722.242l642 +++|            BEGIN                    # MOVE FIELD STATUS FLAGS #
02468  M01S00723.242l642 +++|            WORDIND = I / 15;
02469  M01S00724.242l642 +++|            CHARIND = I - 15*WORDIND;
02470  M01S00725.242l642 +++|            FLDSTFLAGS[I] = B<CHARIND*4,4>QTRM$WD0[WORDIND];
02471  M01S00726.242l642 +++|            END
02472  M01S00727.242l642 +++|          END
02473  M01S00728.242l642 +++|        PANELNAME = TERACTPANL[0];   # GET PANEL NAME #
02474  M01S00729.242l642 +++|        GETADD(PANELNAME,PANELADDR,PLTINDEX);
02475  M01S00730.242l642 +++|        POSARR(PANELADDR);
02476  M01S00731.242l642 +++|        P<QTRM$BUFFER> = P<PCT> + VDTAOFFSET;
02477  M01S00732.242l642 +++|        PANELADDR = P<VDATA> - PANHEADLEN;
02478  M01S00733.242l642 +++|        IF PANSTRFLD[0] NQ 0 THEN
02479  M01S00734.242l642 +++|          BEGIN
02480  M01S00735.242l642 +++|          VDATALEN = P<FLDLIST> - (PANELADDR + PANHEADLEN);
02481  M01S00736.242l642 +++|          END
02482  M01S00737.242l642 +++|        ELSE
02483  M01S00738.242l642 +++|          BEGIN
02484  M01S00739.242l642 +++|          VDATALEN = P<VARLIST> - (PANELADDR + PANHEADLEN);
02485  M01S00740.242l642 +++|          END
02486  M01S00741.242l642 +++|        FOR I = 0 STEP 1 UNTIL VDATALEN -1 DO
02487  M01S00742.242l642 +++|          BEGIN
02488  M01S00743.242l642 +++|          VDATAU[I] = QTRM$WD0[I];
02489  M01S00744.242l642 +++|          END
02490  M01S00745.242l642 +++|        END
02491  M01S00746.242l642 +++|      END
02492  M01S00747.242l642 +++|    ELSE
02493  M01S00748.242l642 +++|      BEGIN                          # NO PCT FOR THIS USER #
02494  M01S00749.242l642 +++|      FOR I = 0 STEP 1 UNTIL SFORMSIZE -1 DO
02495  M01S00750.242l642 +++|        BEGIN                        # INITIALIZE TERMSTAT #
02496  M01S00751.242l642 +++|        TERMSTATWD[I] = TERINITHLD[I];
02497  M01S00752.242l642 +++|        END
02498  M01S00753.242l642 +++|      FOR I = 0 STEP 1 UNTIL VTERMSIZE -1 DO
02499  M01S00754.242l642 +++|        BEGIN                        # INITIALIZE VDT AREA #
02500  M01S00755.242l642 +++|        COMVDT$WD0[I] = VDTINITHLD[I];
02501  M01S00756.242l642 +++|        END
02502  M01S00757.242l642 +++|      TERMODNAME[0] = "       ";
02503  M01S00758.242l642 +++|      TERACTPANL[0] = "       ";
02504  M01S00759.242l642 +++|      TERACTPLTI[0] = 0;
02505  M01S00760.242l642 +++|      TERFUNCPOS[0] = 0;
02506  M01S00761.242l642 +++|      TERNUMCOLS[0] = 0;
02507  M01S00762.242l642 +++|      TERNUMLNES[0] = 0;
02508  M01S00763.242l642 +++|      END
02509  M01S00764.242l642 +++|    P<QTRM$BUFFER> = HOLDADR;
02510  M01S00765.242l642 +++|    END
02511  M01S00766.242l642 +++|
02512  M01S00767.242l642 +++|END  # SFQTRM$ #
02513  M01S00768.242l642 +++|*ENDIF
02514  M01S01096.sform   +++|CONTROL EJECT;
02515  M01S01097.sform   +++|
02516  M01S01098.sform   +++|PROC SFSETP$(VARNAME,VLEN,VOFF,OFFSET,ROWNUM);
02517  M01S01099.sform   +++|
02518  M01S01100.sform   +++|# TITLE SFSETP$ - SET CURSOR POSITION. #
02519  M01S01101.sform   +++|
02520  M01S01102.sform   +++|BEGIN  # SFSETP$ #
02521  M01S01103.sform   +++|
02522  M01S01104.sform   +++|#
02523  M01S01105.sform   +++|**    SFSETP$ - SET CURSOR POSITION.
02524  M01S01106.sform   +++|*
02525  M01S01107.sform   +++|*     SFSETP$ SPECIFIES WHAT FIELD THE CURSOR WILL
02526  M01S01108.sform   +++|*     BE POSITIONED AT FOR THE NEXT READ.
02527  M01S01109.sform   +++|*
02528  M01S01110.sform   +++|*     PROC SFSETP$(VARNAME,VLEN,VOFF,OFFSET,ROWNUM)
02529  M01S01111.sform   +++|*
02530  M01S01112.sform   +++|*     ENTRY   VARNAME    = VARIABLE NAME OF FIELD.
02531  M01S01113.sform   +++|*             VLEN       = LENGTH OF VARP.
02532  M01S01114.sform   +++|*             VOFF       = OFFSET OF VARP.
02533  M01S01115.sform   +++|*             OFFSET     = OFFSET INTO SPECIFIED FIELD.
02534  M01S01116.sform   +++|*             ROWNUM     = ROW NUMBER OF SPECIFIED FIELD.
02535  M01S01117.sform   +++|*
Line S01118 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02536  M02S01118.242l642 ---|*     EXIT    CURSORVAR  = VARIABLE NAME OF SPECIFIED FIELD.
Line S01119 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02537  M02S01119.242l642 ---|*             CURSORROW  = ROW NUMBER OF SPECIFIED FIELD.
Line S01120 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02538  M02S01120.242l642 ---|*             CURSOROFF  = OFFSET OF SPECIFIED FIELD.
Line S01121 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02539  M02S01121.242l642 ---|*             CURSORSET  = TRUE.
02540  M01S00769.242l642 +++|*     EXIT    TERCURSVAR = VARIABLE NAME OF SPECIFIED FIELD.
02541  M01S00770.242l642 +++|*             TERCURSROW = ROW NUMBER OF SPECIFIED FIELD.
02542  M01S00771.242l642 +++|*             TERCURSOFF = OFFSET OF SPECIFIED FIELD.
02543  M01S00772.242l642 +++|*             TERCURSSET = TRUE.
02544  M01S01122.sform   +++|*
Line S01123 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02545  M02S01123.242l642 ---|*     USES    CURSOROFF, CURSORROW, CURSORSET, CURSORVAR.
02546  M01S00773.242l642 +++|*     USES    TERCURSOFF, TERCURSROW, TERCURSSET, TERCURSVAR.
02547  M01S01124.sform   +++|*
02548  M01S01125.sform   +++|*     NOTES   ROUTINE READSF WILL SET THE ACTUAL CURSOR POSITION.
02549  M01S01126.sform   +++|#
02550  M01S01127.sform   +++|ITEM VARNAME    C(11);               # VARIABLE NAME #
02551  M01S01128.sform   +++|ITEM VLEN       I;                   # LENGTH OF VARNAME PARAMETER #
02552  M01S01129.sform   +++|ITEM VOFF       I;                   # OFFSET INTO VARNAME PARAMETER #
02553  M01S01130.sform   +++|ITEM OFFSET     I;                   # OFFSET INTO FIELD #
02554  M01S01131.sform   +++|ITEM ROWNUM     I;                   # ROW NUMBER IN ARRAY #
02555  M01S01132.sform   +++|
02556  M01S01133.sform   +++|IF VLEN LS 1 THEN VLEN = 7;          # CRACK PARAMETER #
Line S01134 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02557  M02S01134.242l642 ---|CURSORVAR = C<VOFF,VLEN>VARNAME;
02558  M01S00774.242l642 +++|TERCURSVAR[0] = C<VOFF,VLEN>VARNAME;
02559  M01S01135.sform   +++|
02560  M01S01136.sform   +++|TERCURSSET[0] = TRUE;                # SET GLOBAL VARIABLES #
Line S01137 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02561  M02S01137.242l642 ---|IF OFFSET GR 0 THEN CURSOROFF = OFFSET - 1;
Line S01138 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02562  M02S01138.242l642 ---|  ELSE CURSOROFF = 0;
Line S01139 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02563  M02S01139.242l642 ---|IF ROWNUM LS 1 THEN CURSORROW = 0;
Line S01140 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02564  M02S01140.242l642 ---|  ELSE CURSORROW = ROWNUM - 1;
02565  M01S00775.242l642 +++|IF OFFSET GR 0 THEN TERCURSOFF[0] = OFFSET - 1;
02566  M01S00776.242l642 +++|  ELSE TERCURSOFF[0] = 0;
02567  M01S00777.242l642 +++|IF ROWNUM LS 1 THEN TERCURSROW[0] = 0;
02568  M01S00778.242l642 +++|  ELSE TERCURSROW[0] = ROWNUM - 1;
02569  M01S01141.sform   +++|
02570  M01S01142.sform   +++|END  # SFSETP$ #
02571  M01S01143.sform   +++|CONTROL EJECT;
02572  M01S01144.sform   +++|
02573  M01S01145.sform   +++|PROC SFSREA$(PANELP,PANLEN,PANOFF,INSP,INSLEN,INSOFF);
02574  M01S01146.sform   +++|
02575  M01S01147.sform   +++|# TITLE SFSREA$ - READ PANEL USING INSTRING. #
02576  M01S01148.sform   +++|
02577  M01S01149.sform   +++|BEGIN  # SFSREA$ #
02578  M01S01150.sform   +++|
02579  M01S01151.sform   +++|#
02580  M01S01152.sform   +++|**    SFSREA$ - READ PANEL USING INSTRING.
02581  M01S01153.sform   +++|*
02582  M01S01154.sform   +++|*     SFSREA$ READS A PANEL AND PLACES THE INPUT IN
02583  M01S01155.sform   +++|*     INSTRING.
02584  M01S01156.sform   +++|*
02585  M01S01157.sform   +++|*     PROC SFSREA$(PANELP,PANLEN,PANOFF,INSP,INSLEN,INSOFF)
02586  M01S01158.sform   +++|*
02587  M01S01159.sform   +++|*     ENTRY   PANELP     = NAME OF PANEL TO READ.
02588  M01S01160.sform   +++|*             PANLEN     = LENGTH OF PANELP.
02589  M01S01161.sform   +++|*             PANOFF     = OFFSET OF PANELP.
02590  M01S01162.sform   +++|*             INSP       = INSTRING TO RECEIVE DATA.
02591  M01S01163.sform   +++|*             INSLEN     = LENGTH OF INSP.
02592  M01S01164.sform   +++|*             INSOFF     = OFFSET OF INSP.
02593  M01S01165.sform   +++|*
02594  M01S01166.sform   +++|*     EXIT    INSP CONTAINS INPUT DATA.
02595  M01S01167.sform   +++|*
02596  M01S01168.sform   +++|*     CALLS   CPANEL, MOVEST, READSF.
02597  M01S01169.sform   +++|*
Line S01170 Modification History
M01 (Added by) sform
M02 (Updated by) sform24
Seq #  *Modification Id* Act 
----------------------------+
02598  M02S01170.sform24 ---|*     UESE    TERREADFLG.
02599  M01S00001.sform24 +++|*     USES    TERREADFLG.
02600  M01S01171.sform   +++|#
02601  M01S01172.sform   +++|ITEM PANELP     C(11);               # PANEL PARAMETER #
02602  M01S01173.sform   +++|ITEM PANLEN     I;                   # LENGTH OF PANEL PARAMETER #
02603  M01S01174.sform   +++|ITEM PANOFF     I;                   # OFFSET OF PANEL PARAMETER #
02604  M01S01175.sform   +++|ITEM INSP       I;                   # ADDRESS OF INSTRING #
02605  M01S01176.sform   +++|ITEM INSLEN     I;                   # LENGTH OF INSTRING #
02606  M01S01177.sform   +++|ITEM INSOFF     I;                   # OFFSET OF INSTRING #
02607  M01S01178.sform   +++|
02608  M01S01179.sform   +++|ITEM PANEL      C(7);                # NAME OF INPUT PANEL #
02609  M01S01180.sform   +++|
02610  M01S00779.242l642 +++|*IF DEF,QTRM
02611  M01S00780.242l642 +++|NIT$RC = NITRTC"OK";                 # SET STATUS OK #
02612  M01S00781.242l642 +++|
02613  M01S00782.242l642 +++|*ENDIF
02614  M01S01181.sform   +++|IF PANLEN LS 1 THEN PANLEN = 7;      # CRACK PARAMETER #
02615  M01S01182.sform   +++|PANEL = C<PANOFF,PANLEN>PANELP;
02616  M01S01183.sform   +++|
02617  M01S01184.sform   +++|READSF(PANEL);                       # READ PANEL #
02618  M01S01185.sform   +++|CPANEL;                              # REWRITE SCREEN AS NEEDED #
02619  M01S01186.sform   +++|
02620  M01S01187.sform   +++|IF PANNUMBYTE[0] NQ 0 THEN
02621  M01S01188.sform   +++|  BEGIN                              # IF VARIABLES IN PANEL #
02622  M01S01189.sform   +++|  TERREADFLG[0] = TRUE;
02623  M01S01190.sform   +++|  MOVEST(LOC(INSP),INSOFF,INSLEN);   # MOVE VARDATA TO INSTRING #
02624  M01S01191.sform   +++|  TERREADFLG[0] = FALSE;
02625  M01S01192.sform   +++|  END
02626  M01S01193.sform   +++|
02627  M01S01194.sform   +++|END  # SFSREA$ #
02628  M01S00783.242l642 +++|*IF UNDEF, QTRM
02629  M01S01195.sform   +++|CONTROL EJECT;
02630  M01S01196.sform   +++|
02631  M01S01197.sform   +++|PROC SFSSHO$(PANELP,PANLEN,PANOFF,OUTP,OLEN,OOFF,INSP,ILEN,IOFF);
02632  M01S01198.sform   +++|
02633  M01S01199.sform   +++|# TITLE SFSSHO$ - SHOW PANEL USING INSTRING AND OUTSTRING. #
02634  M01S01200.sform   +++|
02635  M01S01201.sform   +++|BEGIN  # SFSSHO$ #
02636  M01S01202.sform   +++|
02637  M01S01203.sform   +++|#
02638  M01S01204.sform   +++|**    SFSSHO - SHOW PANEL USING INSTRING AND OUTSTRING.
02639  M01S01205.sform   +++|*
02640  M01S01206.sform   +++|*     THIS PROCEDURE CALLS SFSWRI$ AND SFSREA$.
02641  M01S01207.sform   +++|*
02642  M01S01208.sform   +++|*     PROC SFSSHO$(PANELP,PANLEN,PANOFF,OUTP,OLEN,OOFF,INSP,ILEN,IOFF)
02643  M01S01209.sform   +++|*
02644  M01S01210.sform   +++|*     ENTRY   PANELP     = NAME OF PANEL TO READ.
02645  M01S01211.sform   +++|*             PANLEN     = LENGTH OF PANELP.
02646  M01S01212.sform   +++|*             PANOFF     = OFFSET OF PANELP.
02647  M01S01213.sform   +++|*             OUTP       = OUTSTRING DISPLAY DATA.
02648  M01S01214.sform   +++|*             OLEN       = LENGTH OF OUTP.
02649  M01S01215.sform   +++|*             OOFF       = OFFSET OF OUTP.
02650  M01S01216.sform   +++|*             ILEN       = LENGTH OF INSP.
02651  M01S01217.sform   +++|*             IOFF       = OFFSET OF INSP.
02652  M01S01218.sform   +++|*
02653  M01S01219.sform   +++|*     EXIT    INSP       = CONTAINS INPUT DATA.
02654  M01S01220.sform   +++|*
02655  M01S01221.sform   +++|*     CALLS   SFSREA$, SFSWRI$.
02656  M01S01222.sform   +++|*
02657  M01S01223.sform   +++|*     USES    TERSHOWFLG.
02658  M01S01224.sform   +++|#
02659  M01S01225.sform   +++|ITEM PANELP     I;                   # NAME OF PANEL TO READ #
02660  M01S01226.sform   +++|ITEM PANLEN     I;                   # LENGTH OF PANELP #
02661  M01S01227.sform   +++|ITEM PANOFF     I;                   # OFFSET OF PANELP #
02662  M01S01228.sform   +++|ITEM OUTP       I;                   # OUTSTRING DISPLAY DATA #
02663  M01S01229.sform   +++|ITEM OLEN       I;                   # LENGTH OF OUTP #
02664  M01S01230.sform   +++|ITEM OOFF       I;                   # OFFSET OF OUTP #
02665  M01S01231.sform   +++|ITEM INSP       I;                   # INSTRING TO RECEIVE DATA #
02666  M01S01232.sform   +++|ITEM ILEN       I;                   # LENGTH OF INSP #
02667  M01S01233.sform   +++|ITEM IOFF       I;                   # OFFSET OF INSP #
02668  M01S01234.sform   +++|
02669  M01S01235.sform   +++|TERSHOWFLG[0] = TRUE;
02670  M01S01236.sform   +++|SFSWRI$(PANELP,PANLEN,PANOFF,OUTP,OLEN,OOFF);  # WRITE PANEL #
02671  M01S01237.sform   +++|SFSREA$(PANELP,PANLEN,PANOFF,INSP,ILEN,IOFF);  # READ PANEL #
02672  M01S01238.sform   +++|TERSHOWFLG[0] = FALSE;
02673  M01S01239.sform   +++|
02674  M01S01240.sform   +++|END  # SFSSHO$ #
02675  M01S00784.242l642 +++|*ENDIF
02676  M01S01241.sform   +++|CONTROL EJECT;
02677  M01S01242.sform   +++|
02678  M01S01243.sform   +++|PROC SFSWRI$(NAME,NLENGTH,NOFFSET,STRING,SLENGTH,SOFFSET);
02679  M01S01244.sform   +++|
02680  M01S01245.sform   +++|# TITLE SFSWRI$ - SCREEN FORMAT STRING WRITE FUNCTION. #
02681  M01S01246.sform   +++|
02682  M01S01247.sform   +++|BEGIN  # SFSWRI$ #
02683  M01S01248.sform   +++|
02684  M01S01249.sform   +++|#
02685  M01S01250.sform   +++|**    SFSWRI$ - SCREEN FORMAT WRITE FUNCTION.
02686  M01S01251.sform   +++|*
02687  M01S01252.sform   +++|*     THIS PROCEDURE WRITES THE SPECIFIED PANEL USING THE CONCATENATED
02688  M01S01253.sform   +++|*     VARIABLE DATA FOUND IN OUTSTRING (OR IN THE CASE OF AN ATTEMPTED
02689  M01S01254.sform   +++|*     READ BEFORE WRITE USING THE VARIABLE DATA ALREADY PRESENT IN THE
02690  M01S01255.sform   +++|*     VARDATA SECTION OF THE PANEL RECORD) AND THE CONSTANT DATA FOUND
02691  M01S01256.sform   +++|*     IN THE PANEL RECORD.  IT INTERFACES TO COBOL AND FORTRAN APPLICA-
02692  M01S01257.sform   +++|*     TION PROGRAMS THROUGH A COMPASS INTERFACE MODULE CALLED SFSWRI.
02693  M01S01258.sform   +++|*
02694  M01S01259.sform   +++|*     PROC SFSWRI$(NAME,NLENGTH,NOFFSET,STRING,SLENGTH,SOFFSET)
02695  M01S01260.sform   +++|*
02696  M01S01261.sform   +++|*     ENTRY   NAME       = THE NAME OF THE PANEL TO BE WRITTEN.
02697  M01S01262.sform   +++|*             NLENGTH    = LENGTH IN SIX BIT CHARACTERS.
02698  M01S01263.sform   +++|*             NOFFSET    = OFFSET INTO NAME.
02699  M01S01264.sform   +++|*             STRING     = CONTAINS THE CONCATENATED VARIABLE DATA.
02700  M01S01265.sform   +++|*             SLENGTH    = LENGTH IN SIX BIT CHARACTERS.
02701  M01S01266.sform   +++|*             SOFFSET    = OFFSET INTO STRING.
02702  M01S01267.sform   +++|*
02703  M01S01268.sform   +++|*     EXIT    PANEL WRITTEN TO SCREEN.
02704  M01S01269.sform   +++|*
02705  M01S01270.sform   +++|*     CALLS   GETADD, MOVEST, POSARR, WRIPAN.
02706  M01S01271.sform   +++|*
02707  M01S01272.sform   +++|*     USES    TERACTIVEP, TERACTPANI.
02708  M01S01273.sform   +++|*
02709  M01S01274.sform   +++|*     NOTES   IF TERREADFLG IS SET SFSWRI HAS BEEN CALLED BY SFSREA
02710  M01S01275.sform   +++|*             AND HENCE THERE IS NO OUTSTRING TO MOVE INTO VARDATA
02711  M01S01276.sform   +++|*             AND WHATEVER VARIABLE DATA IS PRESENTLY THERE WILL BE
02712  M01S01277.sform   +++|*             WRITTEN TO THE SCREEN.
02713  M01S01278.sform   +++|#
02714  M01S01279.sform   +++|ITEM NAME       C(11);               # NAME OF PANEL TO BE WRITTEN #
02715  M01S01280.sform   +++|ITEM NLENGTH    I;                   # LENGTH IN SIX BIT CHARACTERS #
02716  M01S01281.sform   +++|ITEM NOFFSET    I;                   # OFFSET INTO NAME #
02717  M01S01282.sform   +++|ITEM STRING     I;                   # OUTSTRING PARAMETER #
02718  M01S01283.sform   +++|ITEM SLENGTH    I;                   # LENGTH IN SIX BIT CHARACTERS #
02719  M01S01284.sform   +++|ITEM SOFFSET    I;                   # OFFSET INTO OUTSTRING #
02720  M01S01285.sform   +++|
02721  M01S01286.sform   +++|ITEM PANELNAME  C(7);                # PANEL NAME, LEFT JUSTIFIED #
02722  M01S01287.sform   +++|ITEM PANELADDR  I;                   # ADDRESS OF PANEL RECORD #
02723  M01S01288.sform   +++|ITEM PLTINDEX   I;                   # PANEL LOAD TABLE INDEX #
02724  M01S01289.sform   +++|ITEM STRINGADDR I;                   # ADDRESS OF OUTSTRING #
02725  M01S01290.sform   +++|
02726  M01S00785.242l642 +++|*IF DEF,QTRM
02727  M01S00786.242l642 +++|NIT$RC = NITRTC"OK";                 # SET RETURN CODE #
02728  M01S00787.242l642 +++|TERMODNAME[0] = NIT$MODEL[NIT$CON];  # GET THE USERS MODEL FROM NIT #
02729  M01S00788.242l642 +++|*ENDIF
02730  M01S01291.sform   +++|IF NLENGTH LS 1 THEN NLENGTH = 7;    # CRACK PARAMETER #
02731  M01S01292.sform   +++|PANELNAME = C<NOFFSET,NLENGTH>NAME;  # LEFT JUSTIFY PANEL NAME #
02732  M01S01293.sform   +++|
Line S01294 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02733  M02S01294.242l642 ---|IF PANELNAME NQ ACTIVEPAN THEN
02734  M01S00789.242l642 +++|IF PANELNAME NQ TERACTPANL[0] THEN
02735  M01S01295.sform   +++|  BEGIN                              # IF NOT THE ACTIVE PANEL #
Line S01296 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02736  M02S01296.242l642 ---|  ACTIVEPAN = PANELNAME;             # UPDATE ACTIVE PANEL NAME #
02737  M01S00790.242l642 +++|  TERACTPANL[0] = PANELNAME;         # UPDATE ACTIVE PANEL NAME #
02738  M01S01297.sform   +++|  GETADD(PANELNAME,PANELADDR,PLTINDEX);
Line S01298 Modification History
M01 (Added by) sform
M02 (Updated by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02739  M02S01298.242l642 ---|  ACTPANPLTI = PLTINDEX;
02740  M01S00791.242l642 +++|  TERACTPLTI[0] = PLTINDEX;
02741  M01S01299.sform   +++|  POSARR(PANELADDR);                 # POSITION BASED ARRAYS #
02742  M01S01300.sform   +++|  END
02743  M01S01301.sform   +++|
02744  M01S01302.sform   +++|IF PANNUMBYTE[0] NQ 0 AND NOT TERREADFLG[0] THEN
02745  M01S01303.sform   +++|  BEGIN                              # IF VARIABLE DATA PRESENT #
02746  M01S01304.sform   +++|  STRINGADDR = LOC(STRING);          # ADDRESS OF OUTSTRING #
02747  M01S01305.sform   +++|  MOVEST(STRINGADDR,SOFFSET,SLENGTH);  # MOVE OUTSTRING TO VARDATA #
02748  M01S01306.sform   +++|  END
02749  M01S01307.sform   +++|
Line S00792 Modification History
M01 (Added by) 242l642
M02 (Updated by) 252l678
Seq #  *Modification Id* Act 
----------------------------+
02750  M02S00792.252l678 ---|IF FIRSTWRITE THEN
02751  M01S00133.252l678 +++|IF NOT TERVDTBOOC[0] THEN
02752  M01S00793.242l642 +++|  BEGIN                              # IF FIRST WRITE #
Line S00794 Modification History
M01 (Added by) 242l642
M02 (Updated by) 252l678
Seq #  *Modification Id* Act 
----------------------------+
02753  M02S00794.252l678 ---|  FIRSTWRITE = FALSE;
02754  M01S00134.252l678 +++|  TERVDTBOOC[0] = TRUE;
02755  M01S00795.242l642 +++|  VDTBOO;                            # BEGIN OUTPUT SEQUENCE #
02756  M01S00796.242l642 +++|  END
02757  M01S01308.sform   +++|WRIPAN;                              # WRITE PANEL #
02758  M01S01309.sform   +++|
02759  M01S01310.sform   +++|END  # SFSWRI$ #
02760  M01S01311.sform   +++|CONTROL EJECT;
02761  M01S01312.sform   +++|
02762  M01S01313.sform   +++|PROC BFIELD(FIELD,STARTCHAR,LASTDIRTY);
02763  M01S01314.sform   +++|
02764  M01S01315.sform   +++|# TITLE BFIELD - BLANK FIELD IN VARDATA. #
02765  M01S01316.sform   +++|
02766  M01S01317.sform   +++|BEGIN  # BFIELD #
02767  M01S01318.sform   +++|
02768  M01S01319.sform   +++|#
02769  M01S01320.sform   +++|**    BFIELD - BLANK FIELD IN VARDATA.
02770  M01S01321.sform   +++|*
02771  M01S01322.sform   +++|*     THIS PROCEDURE BLANK FILLS A FIELD IN VARDATA.
02772  M01S01323.sform   +++|*
02773  M01S01324.sform   +++|*     PROC BFIELD(FIELD,STARTCHAR,LASTDIRTY)
02774  M01S01325.sform   +++|*
02775  M01S01326.sform   +++|*     ENTRY   FIELD      = INDEX OF FIELD IN FLDLIST.
02776  M01S01327.sform   +++|*             STARTCHAR  = POSITION TO START BLANK FILL.
02777  M01S01328.sform   +++|*
02778  M01S01329.sform   +++|*     EXIT    LASTDIRTY  = LAST POSITION WITH PREVIOUS
02779  M01S01330.sform   +++|*                          NON-BLANK CHARACTER.
02780  M01S01331.sform   +++|#
02781  M01S01332.sform   +++|ITEM FIELD      I;                   # FIELD TO INITIALIZE #
02782  M01S01333.sform   +++|ITEM STARTCHAR  I;                   # STARTING CHARACTER POSITION #
02783  M01S01334.sform   +++|ITEM LASTDIRTY  I;                   # LAST NON-BLANK CHARACTER #
02784  M01S01335.sform   +++|
02785  M01S01336.sform   +++|ITEM CHARNUM    I;                   # CHARACTER POSITION IN VARDATA #
02786  M01S01337.sform   +++|ITEM CHARIND    I;                   # CHARACTER INDEX IN VARDATA #
02787  M01S01338.sform   +++|ITEM I          I;                   # LOOP COUNTER #
02788  M01S01339.sform   +++|ITEM WORDIND    I;                   # WORD INDEX IN VARDATA #
02789  M01S01340.sform   +++|
02790  M01S01341.sform   +++|LASTDIRTY = -1;
02791  M01S01342.sform   +++|CHARNUM = FLDVDTCORD[FIELD] + STARTCHAR;
02792  M01S01343.sform   +++|WORDIND = CHARNUM / 5;
02793  M01S01344.sform   +++|CHARIND = CHARNUM - (5 * WORDIND);
02794  M01S01345.sform   +++|
02795  M01S01346.sform   +++|FOR I = STARTCHAR STEP 1 UNTIL FLDLENGTH[FIELD] -1 DO
02796  M01S01347.sform   +++|  BEGIN                              # BLANK FILL FIELD IN VDATA #
02797  M01S01348.sform   +++|  IF NEXTCHAR(FIELD,I) NQ BLANK THEN
02798  M01S01349.sform   +++|    BEGIN                            # NON-BLANK CHARACTER #
02799  M01S01350.sform   +++|    LASTDIRTY = I;                   # UPDATE LAST DIRTY CHARACTER #
02800  M01S01351.sform   +++|    END
02801  M01S01352.sform   +++|  B<CHARIND*12,12>VDATAU[WORDIND] = BLANK;  # BLANK CHARACTER POS #
02802  M01S01353.sform   +++|  CHARIND = CHARIND + 1;
02803  M01S01354.sform   +++|  IF CHARIND EQ 5 THEN
02804  M01S01355.sform   +++|    BEGIN
02805  M01S01356.sform   +++|    CHARIND = 0;
02806  M01S01357.sform   +++|    WORDIND = WORDIND + 1;
02807  M01S01358.sform   +++|    END
02808  M01S01359.sform   +++|  END
02809  M01S01360.sform   +++|
02810  M01S01361.sform   +++|END  # BFIELD #
Line S01362 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02811  M02S01362.ns2275  ---|CONTROL EJECT;
Line S01363 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02812  M02S01363.ns2275  ---|
Line S01364 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02813  M02S01364.ns2275  ---|PROC CHKTRM(OPENSTAT);
Line S01365 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02814  M02S01365.ns2275  ---|
Line S01366 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02815  M02S01366.ns2275  ---|# TITLE CHKTRM - CHECK FOR SUPPORTED TERMINAL. #
Line S01367 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02816  M02S01367.ns2275  ---|
Line S01368 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02817  M02S01368.ns2275  ---|BEGIN  # CHKTRM #
Line S01369 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02818  M02S01369.ns2275  ---|
Line S01370 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02819  M02S01370.ns2275  ---|#
Line S01371 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02820  M02S01371.ns2275  ---|**    CHKTRM - CHECK FOR SUPPORTED TERMINAL.
Line S01372 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02821  M02S01372.ns2275  ---|*
Line S01373 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02822  M02S01373.ns2275  ---|*     THIS PROCEDURE CHECKS TO SEE IF THE TERMINAL IN USE SUPPORTS
Line S01374 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02823  M02S01374.ns2275  ---|*     SCREEN FORMATTING.
Line S01375 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02824  M02S01375.ns2275  ---|*
Line S01376 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02825  M02S01376.ns2275  ---|*     PROC CHKTRM(OPENSTAT)
Line S01377 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02826  M02S01377.ns2275  ---|*
Line S01378 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02827  M02S01378.ns2275  ---|*     ENTRY   OPENSTAT   = 0.
Line S01379 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02828  M02S01379.ns2275  ---|*             TERMMODEL  = -1.
Line S01380 Modification History
M01 (Added by) sform
M02 (Updated by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02829  M02S01380.ns2275  ---|*
Proceed to Part 2
cdc/nos2.source/opl.opl871/deck/sform.001.txt ยท Last modified: by 127.0.0.1