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 
----------------------------+
01453  M00S00705.sform   +++|
01454  M00S00706.sform   +++|GFIELD(VNAME,USEROW,FLDIND);         # GET ASSOCIATED FIELD #
01455  M00S00707.sform   +++|IF FLDIND EQ -1 THEN GOTO INTERROR;  # FIELD NOT FOUND #
01456  M00S00708.sform   +++|
01457  M00S00709.sform   +++|ALLBLANK = TRUE;
01458  M00S00710.sform   +++|FOR I = 0 STEP 1 WHILE ALLBLANK AND I LQ FLDLENGTH[FLDIND] -1 DO
01459  M00S00711.sform   +++|  BEGIN                              # CHECK IF BLANK FIELD #
01460  M00S00712.sform   +++|  IF NEXTCHAR(FLDIND,I) NQ BLANK THEN ALLBLANK = FALSE;
01461  M00S00713.sform   +++|  END
01462  M00S00714.sform   +++|IF ALLBLANK THEN
01463  M00S00715.sform   +++|  BEGIN                              # BLANK FIELD #
01464  M00S00716.sform   +++|  VALUE = 0;
01465  M00S00717.sform   +++|  RETURN;
01466  M00S00718.sform   +++|  END
01467  M00S00719.sform   +++|
01468  M00S00720.sform   +++|HOLDVALID = FLDVALID[FLDIND];        # SAVE VALID FLAG #
01469  M00S00721.sform   +++|FLDVALID[FLDIND] = TRUE;
01470  M00S00722.sform   +++|IF VARPICTYPE[FLDVARORD[FLDIND]] EQ FORMTYPE"Y"
01471  M00S00723.sform   +++|  OR VARPICTYPE[FLDVARORD[FLDIND]] EQ FORMTYPE"M"
01472  M00S00724.sform   +++|  OR VARPICTYPE[FLDVARORD[FLDIND]] EQ FORMTYPE"D" THEN
01473  M00S00725.sform   +++|  BEGIN                              # DATE FORMAT FIELD #
Line S00001 Modification History
M01 (Added by) sform10
Seq #  *Modification Id* Act 
----------------------------+
01474  M01S00001.sform10 +++|  FORMAT = VARPICTYPE[FLDVARORD[FLDIND]];  # SET FORMAT TYPE #
01475  M00S00726.sform   +++|  DATEVL(FLDIND,IVALUE);             # GET VALUE #
01476  M00S00727.sform   +++|  END
01477  M00S00728.sform   +++|ELSE
01478  M00S00729.sform   +++|  BEGIN                              # NUMERIC FIELD #
01479  M00S00730.sform   +++|  NCHECK(FLDIND,IVALUE,EVALUE,FORMAT,CURRENCY);
01480  M00S00731.sform   +++|  IF VARPICTYPE[FLDVARORD[FLDIND]] EQ FORMTYPE"$" THEN
01481  M00S00732.sform   +++|    BEGIN                            # WEIGHT CURRENCY INPUT #
01482  M00S00733.sform   +++|    IF EVALUE EQ 0 THEN IVALUE = IVALUE * 100;
01483  M00S00734.sform   +++|    ELSE IF EVALUE EQ -1 THEN IVALUE = IVALUE * 10;
01484  M00S00735.sform   +++|    END
01485  M00S00736.sform   +++|  ELSE
01486  M00S00737.sform   +++|    BEGIN                            # NOT CURRENCY #
01487  M00S00738.sform   +++|    IF EVALUE LS 0 THEN
01488  M00S00739.sform   +++|      BEGIN                          # TRUNCATE DECIMAL DIGITS #
01489  M00S00740.sform   +++|      FOR I = -1 STEP -1 UNTIL EVALUE DO IVALUE = IVALUE/10;
01490  M00S00741.sform   +++|      END
01491  M00S00742.sform   +++|    ELSE
01492  M00S00743.sform   +++|      BEGIN                          # RAISE TO POWER OF EXPONENT #
01493  M00S00744.sform   +++|      FOR I = 1 STEP 1 UNTIL EVALUE DO IVALUE = IVALUE*10;
01494  M00S00745.sform   +++|      END
01495  M00S00746.sform   +++|    END
01496  M00S00747.sform   +++|  END
01497  M00S00748.sform   +++|
01498  M00S00749.sform   +++|IF NOT FLDVALID[FLDIND] OR FORMAT EQ FORMTYPE"BAD"THEN
01499  M00S00750.sform   +++|  BEGIN                              # ERRORS IN INPUT #
01500  M00S00751.sform   +++|  GOTO INTERROR;
01501  M00S00752.sform   +++|  END
01502  M00S00753.sform   +++|FLDVALID[FLDIND] = HOLDVALID;        # RESET VALID FLAG #
01503  M00S00754.sform   +++|VALUE = IVALUE;
01504  M00S00755.sform   +++|RETURN;
01505  M00S00756.sform   +++|
01506  M00S00757.sform   +++|INTERROR:                            # CANNOT RETURN VALUE #
01507  M00S00758.sform   +++|
01508  M00S00759.sform   +++|  IF FLDIND NQ -1 THEN FLDVALID[FLDIND] = HOLDVALID;
01509  M00S00760.sform   +++|  VALUE = ERRORVAL;
01510  M00S00761.sform   +++|
01511  M00S00762.sform   +++|END  # SFGETI$ #
01512  M00S00763.sform   +++|CONTROL EJECT;
01513  M00S00764.sform   +++|
01514  M00S00765.sform   +++|PROC SFGETK(GENERIC,ORDINAL);
01515  M00S00766.sform   +++|
01516  M00S00767.sform   +++|# TITLE SFGETK - GET FUNCTION KEY. #
01517  M00S00768.sform   +++|
01518  M00S00769.sform   +++|BEGIN  # SFGETK #
01519  M00S00770.sform   +++|
01520  M00S00771.sform   +++|#
01521  M00S00772.sform   +++|**    SFGETK - GET FUNCTION KEY.
01522  M00S00773.sform   +++|*
01523  M00S00774.sform   +++|*     SFGETK RETURNS THE ORDINAL OF THE LAST FUNCTION KEY PROCESSED.
01524  M00S00775.sform   +++|*
01525  M00S00776.sform   +++|*     PROC SFGETK(GENERIC,ORDINAL)
01526  M00S00777.sform   +++|*
01527  M00S00778.sform   +++|*     ENTRY   TERFUNCGEN = TRUE IF GENERIC FUNCTION KEY.
Line S00779 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01528  M01S00779.242l642 ---|*             FUNCORD    = ORDINAL OF FUNCTION KEY.
Line S00299 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01529  M01S00299.242l642 +++|*             TERFUNCORD = ORDINAL OF FUNCTION KEY.
01530  M00S00780.sform   +++|*
01531  M00S00781.sform   +++|*     EXIT    GENERIC    = TRUE IF GENERIC FUNCTION KEY.
01532  M00S00782.sform   +++|*             ORDINAL    = ORDINAL OF FUNCTION KEY.
01533  M00S00783.sform   +++|#
01534  M00S00784.sform   +++|ITEM GENERIC    B;                   # GENERIC/APPLICATION KEY FLAG #
01535  M00S00785.sform   +++|ITEM ORDINAL    I;                   # FUNCTION KEY ORDINAL #
01536  M00S00786.sform   +++|
01537  M00S00787.sform   +++|GENERIC = TERFUNCGEN[0];             # RETURN GENERIC FLAG #
Line S00788 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01538  M01S00788.242l642 ---|ORDINAL = FUNCORD;                   # RETURN FUNCTION ORDINAL #
Line S00300 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01539  M01S00300.242l642 +++|ORDINAL = TERFUNCORD[0];             # RETURN FUNCTION ORDINAL #
Line S00789 Modification History
M01 (Removed by) sform9
Seq #  *Modification Id* Act 
----------------------------+
01540  M01S00789.sform9  ---|IF TERFUNCGEN[0] AND FUNCORD GR 16 THEN ORDINAL = 1;  # RETURN NEXT #
01541  M00S00790.sform   +++|
01542  M00S00791.sform   +++|END  # SFGETK #
01543  M00S00792.sform   +++|CONTROL EJECT;
01544  M00S00793.sform   +++|
Line S00002 Modification History
M01 (Added by) 241l630
Seq #  *Modification Id* Act 
----------------------------+
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 (Removed by) sform17
Seq #  *Modification Id* Act 
----------------------------+
01554  M02S00011.sform17 ---|*     SFGETN$ RETURNS THE TERMINAL MODEL NAME.
Line S00001 Modification History
M01 (Added by) sform17
Seq #  *Modification Id* Act 
----------------------------+
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.
Line S00012 Modification History
M01 (Added by) 241l630
Seq #  *Modification Id* Act 
----------------------------+
01557  M01S00012.241l630 +++|*
01558  M01S00013.241l630 +++|*     PROC SFGETN$(MODEL,MLEN,MOFF)
01559  M01S00014.241l630 +++|*
Line S00003 Modification History
M01 (Added by) sform17
Seq #  *Modification Id* Act 
----------------------------+
01560  M01S00003.sform17 +++|*     ENTRY   MLEN       = LENGTH OF MODEL NAME FIELD.
01561  M01S00004.sform17 +++|*             MOFF       = OFFSET OF MODEL NAME FIELD.
01562  M01S00005.sform17 +++|*
Line S00015 Modification History
M01 (Added by) 241l630
Seq #  *Modification Id* Act 
----------------------------+
01563  M01S00015.241l630 +++|*     EXIT    MODEL      = TERMINAL MODEL NAME.
Line S00016 Modification History
M01 (Added by) 241l630
M02 (Removed by) sform17
Seq #  *Modification Id* Act 
----------------------------+
01564  M02S00016.sform17 ---|*             MLEN       = LENGTH OF MODEL NAME.
01565  M02S00017.sform17 ---|*             MOFF       = OFFSET OF MODEL NAME.
Line S00018 Modification History
M01 (Added by) 241l630
Seq #  *Modification Id* Act 
----------------------------+
01566  M01S00018.241l630 +++|*
01567  M01S00019.241l630 +++|*     CALLS   VDTITD.
01568  M01S00020.241l630 +++|#
Line S00006 Modification History
M01 (Added by) sform17
Seq #  *Modification Id* Act 
----------------------------+
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
Line S00021 Modification History
M01 (Added by) 241l630
Seq #  *Modification Id* Act 
----------------------------+
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 #
Line S00011 Modification History
M01 (Added by) sform17
Seq #  *Modification Id* Act 
----------------------------+
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 #
Line S00024 Modification History
M01 (Added by) 241l630
Seq #  *Modification Id* Act 
----------------------------+
01580  M01S00024.241l630 +++|
Line S00025 Modification History
M01 (Added by) 241l630
M02 (Removed by) sform17
Seq #  *Modification Id* Act 
----------------------------+
01581  M02S00025.sform17 ---|MLEN = 6;                            # SET LENGTH #
01582  M02S00026.sform17 ---|VDTITD(MODEL);                       # GET MODEL NAME #
01583  M02S00027.sform17 ---|FOR MOFF = MLEN - 1 STEP -1 WHILE MOFF GQ 1 AND C<MOFF,1>MODEL EQ 0 DO
Line S00014 Modification History
M01 (Added by) sform17
Seq #  *Modification Id* Act 
----------------------------+
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
Line S00028 Modification History
M01 (Added by) 241l630
Seq #  *Modification Id* Act 
----------------------------+
01588  M01S00028.241l630 +++|  BEGIN                              # BLANK FILL MODEL NAME #
Line S00029 Modification History
M01 (Added by) 241l630
M02 (Removed by) sform17
Seq #  *Modification Id* Act 
----------------------------+
01589  M02S00029.sform17 ---|  C<MOFF,1>MODEL = " ";
01590  M02S00030.sform17 ---|  END
01591  M02S00031.sform17 ---|MOFF = 0;                            # SET OFFSET #
Line S00018 Modification History
M01 (Added by) sform17
Seq #  *Modification Id* Act 
----------------------------+
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
Line S00032 Modification History
M01 (Added by) 241l630
Seq #  *Modification Id* Act 
----------------------------+
01606  M01S00032.241l630 +++|
01607  M01S00033.241l630 +++|END  # SFGETN$ #
01608  M01S00034.241l630 +++|CONTROL EJECT;
01609  M01S00035.241l630 +++|
01610  M00S00794.sform   +++|PROC SFGETP$(VARNAME,VLEN,VOFF,OFFSET,ROWNUM);
01611  M00S00795.sform   +++|
01612  M00S00796.sform   +++|# TITLE SFGETP$ - GET LAST CURSOR POSITION. #
01613  M00S00797.sform   +++|
01614  M00S00798.sform   +++|BEGIN  # SFGETP$ #
01615  M00S00799.sform   +++|
01616  M00S00800.sform   +++|#
01617  M00S00801.sform   +++|**    SFGETP$ - GET LAST CURSOR POSITION.
Line S00036 Modification History
M01 (Added by) 241l630
Seq #  *Modification Id* Act 
----------------------------+
01618  M01S00036.241l630 +++|*
01619  M01S00037.241l630 +++|*     SFGETP$ RETURNS VALUES THAT DEFINE THE LAST POSITION OF THE
01620  M01S00038.241l630 +++|*     SCREEN CURSOR.
01621  M00S00802.sform   +++|*
01622  M00S00803.sform   +++|*     PROC SFGETP$(VARNAME,VLEN,VOFF,OFFSET,ROWNUM)
01623  M00S00804.sform   +++|*
01624  M00S00805.sform   +++|*     ENTRY   VARNAME    = LOCATION OF VARIABLE PARAMETER.
01625  M00S00806.sform   +++|*             VLEN       = LENGTH OF VARNAME.
01626  M00S00807.sform   +++|*             VOFF       = OFFSET OF VARNAME.
01627  M00S00808.sform   +++|*
01628  M00S00809.sform   +++|*     EXIT    VARNAME    = VARIABLE NAME OF FIELD.
01629  M00S00810.sform   +++|*             OFFSET     = OFFSET OF CURSOR IN FIELD.
01630  M00S00811.sform   +++|*             ROWNUM     = ROW NUMBER OF FIELD.
01631  M00S00812.sform   +++|*
01632  M00S00813.sform   +++|*     CALLS   FFIELD.
01633  M00S00814.sform   +++|#
01634  M00S00815.sform   +++|ITEM VARNAME    C(11);               # VARIABLE NAME #
01635  M00S00816.sform   +++|ITEM VLEN       I;                   # LENGTH OF VARNAME PARAMETER #
01636  M00S00817.sform   +++|ITEM VOFF       I;                   # OFFSET INTO VARNAME PARAMETER #
01637  M00S00818.sform   +++|ITEM OFFSET     I;                   # OFFSET INTO FIELD #
01638  M00S00819.sform   +++|ITEM ROWNUM     I;                   # ROW NUMBER IN ARRAY #
01639  M00S00820.sform   +++|
01640  M00S00821.sform   +++|ITEM FIELD      I;                   # FUNCTION FIELD #
01641  M00S00822.sform   +++|ITEM I          I;                   # LOOP COUNTER #
01642  M00S00823.sform   +++|ITEM OUTSEARCH  B=TRUE;              # INCLUDE OUTPUT ONLY FIELDS #
01643  M00S00824.sform   +++|ITEM VARIND     I;                   # VARIABLE ORDINAL OF FIELD #
01644  M00S00825.sform   +++|
01645  M00S00826.sform   +++|IF VLEN LS 1 THEN VLEN = 7;          # CRACK PARAMETER #
01646  M00S00827.sform   +++|C<VOFF,VLEN>VARNAME = "       ";
01647  M00S00828.sform   +++|
01648  M00S00829.sform   +++|ROWNUM = 0;                          # FIND FIELD #
Line S00830 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01649  M01S00830.242l642 ---|FFIELD(FUNCPOS,FIELD,OFFSET,OUTSEARCH);
Line S00301 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01650  M01S00301.242l642 +++|FFIELD(TERFUNCPOS[0],FIELD,OFFSET,OUTSEARCH);
01651  M00S00831.sform   +++|
01652  M00S00832.sform   +++|IF VALIDFIELD THEN
01653  M00S00833.sform   +++|  BEGIN                              # IF FIELD FOUND #
01654  M00S00834.sform   +++|  OFFSET = OFFSET + 1;
01655  M00S00835.sform   +++|  VARIND = FLDVARORD[FIELD];
01656  M00S00836.sform   +++|  C<VOFF,VLEN>VARNAME = VARNME[VARIND];
01657  M00S00837.sform   +++|  IF VARARRORD[VARIND] NQ 0 THEN
01658  M00S00838.sform   +++|    BEGIN                            # IF ARRAY MEMBER #
01659  M00S00839.sform   +++|    ROWNUM = VARROWNUM[VARIND] + 1;
01660  M00S00840.sform   +++|    END
01661  M00S00841.sform   +++|  END
01662  M00S00842.sform   +++|
01663  M00S00843.sform   +++|END  # SFGETP$ #
01664  M00S00844.sform   +++|CONTROL EJECT;
01665  M00S00845.sform   +++|
01666  M00S00846.sform   +++|PROC SFGETR$(VARNAME,VLEN,VOFF,VALUE);
01667  M00S00847.sform   +++|
01668  M00S00848.sform   +++|# TITLE SFGETR$ - GET REAL VALUE. #
01669  M00S00849.sform   +++|
01670  M00S00850.sform   +++|BEGIN  # SFGETR$ #
01671  M00S00851.sform   +++|
01672  M00S00852.sform   +++|#
01673  M00S00853.sform   +++|**    SFGETR$ - GET REAL VALUE.
01674  M00S00854.sform   +++|*
01675  M00S00855.sform   +++|*     SFGETR$ RETURNS THE REAL NUMERIC VALUE OF THE FIELD
01676  M00S00856.sform   +++|*     SPECIFIED BY VARNAME.
01677  M00S00857.sform   +++|*
01678  M00S00858.sform   +++|*     PROC SFGETR$(VARNAME,VLEN,VOFF,VALUE)
01679  M00S00859.sform   +++|*
01680  M00S00860.sform   +++|*     ENTRY   VARNAME    = VARIABLE NAME OF FIELD.
01681  M00S00861.sform   +++|*             VLEN       = LENGTH OF VARNAME.
01682  M00S00862.sform   +++|*             VOFF       = OFFSET OF VARNAME.
01683  M00S00863.sform   +++|*
01684  M00S00864.sform   +++|*     EXIT    VALUE      = REAL VALUE OF SPECIFIED FIELD.
01685  M00S00865.sform   +++|*
01686  M00S00866.sform   +++|*     CALLS   DATEVL, GFIELD, NCHECK.
01687  M00S00867.sform   +++|#
01688  M00S00868.sform   +++|ITEM VARNAME    C(11);               # VARIABLE NAME #
01689  M00S00869.sform   +++|ITEM VLEN       I;                   # LENGTH OF VARNAME PARAMETER #
01690  M00S00870.sform   +++|ITEM VOFF       I;                   # OFFSET INTO VARNAME PARAMETER #
01691  M00S00871.sform   +++|ITEM VALUE      R;                   # VALUE OF INPUT #
01692  M00S00872.sform   +++|
01693  M00S00873.sform   +++|ITEM ALLBLANK   B;                   # ALL CHARACTERS IN FIELD BLANK #
01694  M00S00874.sform   +++|ITEM CURRENCY   B;                   # TRUE IF DOLLAR SIGN INPUT #
01695  M00S00875.sform   +++|ITEM ERRORVAL   R = 0;               # RETURNED IF ERROR IN FIELD #
01696  M00S00876.sform   +++|ITEM EVALUE     I;                   # EXPONENT VALUE #
01697  M00S00877.sform   +++|ITEM FLDIND     I;                   # FIELD ORDINAL #
01698  M00S00878.sform   +++|ITEM FORMAT     I;                   # FORMAT OF INPUT #
01699  M00S00879.sform   +++|ITEM FPSTAT     I;                   # GFP OVERFLOW STATUS #
01700  M00S00880.sform   +++|ITEM HOLDVALID  B;                   # HOLD FLDVALID VALUE #
01701  M00S00881.sform   +++|ITEM I          I;                   # LOOP COUNTER #
01702  M00S00882.sform   +++|ITEM IVALUE     I;                   # INTEGER VALUE #
Line S00883 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01703  M01S00883.242l642 ---|ITEM USEROW     B = FALSE;           # DO NOT USE CURSORROW #
Line S00302 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
01704  M01S00302.242l642 +++|ITEM USEROW     B = FALSE;           # DO NOT USE TERCURSROW #
01705  M00S00884.sform   +++|ITEM VNAME      C(7);                # VARIABLE NAME LEFT JUSTIFIED #
01706  M00S00885.sform   +++|
01707  M00S00886.sform   +++|IF VLEN LS 1 THEN VLEN = 7;          # CRACK PARAMETER #
01708  M00S00887.sform   +++|VNAME = C<VOFF,VLEN>VARNAME;
01709  M00S00888.sform   +++|
01710  M00S00889.sform   +++|GFIELD(VNAME,USEROW,FLDIND);         # GET ASSOCIATED FIELD #
01711  M00S00890.sform   +++|IF FLDIND EQ -1 THEN GOTO REALERROR;  # FIELD NOT FOUND #
01712  M00S00891.sform   +++|
01713  M00S00892.sform   +++|ALLBLANK = TRUE;
01714  M00S00893.sform   +++|FOR I = 0 STEP 1 WHILE ALLBLANK AND I LQ FLDLENGTH[FLDIND] -1 DO
01715  M00S00894.sform   +++|  BEGIN                              # CHECK IF BLANK FIELD #
01716  M00S00895.sform   +++|  IF NEXTCHAR(FLDIND,I) NQ BLANK THEN ALLBLANK = FALSE;
01717  M00S00896.sform   +++|  END
01718  M00S00897.sform   +++|IF ALLBLANK THEN
01719  M00S00898.sform   +++|  BEGIN                              # BLANK FIELD #
01720  M00S00899.sform   +++|  VALUE = 0;
01721  M00S00900.sform   +++|  RETURN;
01722  M00S00901.sform   +++|  END
01723  M00S00902.sform   +++|
01724  M00S00903.sform   +++|HOLDVALID = FLDVALID[FLDIND];        # SAVE FLDVALID #
01725  M00S00904.sform   +++|FLDVALID[FLDIND] = TRUE;
01726  M00S00905.sform   +++|
01727  M00S00906.sform   +++|IF VARPICTYPE[FLDVARORD[FLDIND]] EQ FORMTYPE"Y"
01728  M00S00907.sform   +++|  OR VARPICTYPE[FLDVARORD[FLDIND]] EQ FORMTYPE"M"
01729  M00S00908.sform   +++|  OR VARPICTYPE[FLDVARORD[FLDIND]] EQ FORMTYPE"D" THEN
01730  M00S00909.sform   +++|  BEGIN                              # IF DATE FORMAT #
01731  M00S00910.sform   +++|  DATEVL(FLDIND,IVALUE);             # GET VALUE #
01732  M00S00911.sform   +++|  EVALUE = 0;
01733  M00S00912.sform   +++|  END
01734  M00S00913.sform   +++|ELSE
01735  M00S00914.sform   +++|  BEGIN                              # GET NUMERIC VALUE #
01736  M00S00915.sform   +++|  NCHECK(FLDIND,IVALUE,EVALUE,FORMAT,CURRENCY);
01737  M00S00916.sform   +++|  END
01738  M00S00917.sform   +++|
01739  M00S00918.sform   +++|IF NOT FLDVALID[FLDIND] OR FORMAT EQ FORMTYPE"BAD"THEN
01740  M00S00919.sform   +++|  BEGIN                              # ERRORS IN INPUT #
01741  M00S00920.sform   +++|  GOTO REALERROR;
01742  M00S00921.sform   +++|  END
01743  M00S00922.sform   +++|FLDVALID[FLDIND] = HOLDVALID;
01744  M00S00923.sform   +++|
01745  M00S00924.sform   +++|FPSTAT = GFP(IVALUE,EVALUE,VALUE);   # GENERATE REAL VALUE #
01746  M00S00925.sform   +++|IF FPSTAT EQ 0 THEN RETURN;          # IF NO OVERFLOW ERROR #
01747  M00S00926.sform   +++|
01748  M00S00927.sform   +++|REALERROR:                           # CANNOT RETURN VALUE #
01749  M00S00928.sform   +++|
01750  M00S00929.sform   +++|  IF FLDIND NQ -1 THEN FLDVALID[FLDIND] = HOLDVALID;
01751  M00S00930.sform   +++|  VALUE = ERRORVAL;
01752  M00S00931.sform   +++|
01753  M00S00932.sform   +++|END  # SFGETR$ #
Line S00303 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00933.sform   +++|CONTROL EJECT;
01973  M00S00934.sform   +++|
Line S00003 Modification History
M01 (Added by) ns2619
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00935.sform   +++|PROC SFOPEN$(NAME,NLENGTH,NOFFSET,OPENSTAT);
02016  M00S00936.sform   +++|
02017  M00S00937.sform   +++|# TITLE SFOPEN$ - OPEN PANEL. #
02018  M00S00938.sform   +++|
02019  M00S00939.sform   +++|BEGIN  # SFOPEN$ #
02020  M00S00940.sform   +++|
02021  M00S00941.sform   +++|#
02022  M00S00942.sform   +++|**    SFOPEN$ - OPEN PANEL.
02023  M00S00943.sform   +++|*
Line S00944 Modification History
M01 (Removed by) sform9
Seq #  *Modification Id* Act 
----------------------------+
02024  M01S00944.sform9  ---|*     THIS PROCEDURE CALLS *CHKTRM* TO CHECK TO SEE IF THE TERMINAL
Line S00001 Modification History
M01 (Added by) sform9
Seq #  *Modification Id* Act 
----------------------------+
02025  M01S00001.sform9  +++|*     THIS PROCEDURE CHECKS (VIA VDTGSL/VDTITD) TO SEE IF THE TERMINAL
02026  M00S00945.sform   +++|*     IN USE IS SUPPORTED UNDER SCREEN FORMATTING (UNLESS THIS HAS
02027  M00S00946.sform   +++|*     ALREADY BEEN DONE BY A PREVIOUS CALL TO SFOPEN.)  IF THE TERM-
02028  M00S00947.sform   +++|*     INAL IS SUPPORTED THEN *SFLOAD* IS CALLED TO LOAD THE PANEL
02029  M00S00948.sform   +++|*     VIA THE FAST DYNAMIC LOADER (EXCEPT FOR THOSE PANELS THAT ARE
02030  M00S00949.sform   +++|*     STATICALLY LOADED AND THUS ALWAYS PRESENT IN MEMORY) AND THE
02031  M00S00950.sform   +++|*     PANEL LOAD TABLE IS UPDATED IF THE LOAD WAS SUCCESSFUL.  THE
02032  M00S00951.sform   +++|*     STATUS OF THE OPEN IS RETURNED TO THE CALLING APPLICATION IN
02033  M00S00952.sform   +++|*     ALL CASES INDICATING THAT THE OPEN WAS SUCCESSFUL OR AN ERROR
02034  M00S00953.sform   +++|*     CODE INDICATING WHY NOT.  SFOPEN$ INTERFACES TO COBOL AND FOR-
02035  M00S00954.sform   +++|*     TRAN PROGRAMS THROUGH A COMPASS INTERFACE MODULE CALLED SFOPEN.
02036  M00S00955.sform   +++|*
02037  M00S00956.sform   +++|*     PROC SFOPEN$(NAME,NLENGTH,NOFFSET,OPENSTAT)
02038  M00S00957.sform   +++|*
02039  M00S00958.sform   +++|*     ENTRY   NAME       = NAME OF PANEL TO BE OPENED.
02040  M00S00959.sform   +++|*             NLENGTH    = LENGTH IN SIX BIT CHARACTERS.
02041  M00S00960.sform   +++|*             NOFFSET    = OFFSET INTO NAME.
02042  M00S00961.sform   +++|*
02043  M00S00962.sform   +++|*     EXIT    PANEL OPENED IF POSSIBLE, OPENSTAT SET REGARDLESS.
02044  M00S00963.sform   +++|*
Line S00964 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02045  M01S00964.242l642 ---|*     CALLS   CHKTRM, SETSRN, SFLOAD.
Line S00521 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00965.sform   +++|*
02052  M00S00966.sform   +++|*     NOTES   OPENSTAT IS SET BY SFOPEN IN SOME CASES AND IS ALSO
02053  M00S00967.sform   +++|*             A PARAMETER ON THE CALL TO SFLOAD IN THOSE INSTANCES
02054  M00S00968.sform   +++|*             WHERE THE FAST DYNAMIC LOADER IS TO BE CALLED.
02055  M00S00969.sform   +++|*
02056  M00S00970.sform   +++|*             OPENSTAT   SIGNIFICANCE                     PROCEDURE
02057  M00S00971.sform   +++|*             .....................................................
02058  M00S00972.sform   +++|*             .   0   .  NO ERROR                        .  BOTH  .
02059  M00S00973.sform   +++|*             .   1   .  UNKNOWN PANEL NAME              . SFLOAD .
02060  M00S00974.sform   +++|*             .   2   .  INCORRECT CAPSULE FORMAT        . SFLOAD .
02061  M00S00975.sform   +++|*             .   3   .  PLT FULL (TOO MANY OPEN PANELS) . SFOPEN .
02062  M00S00976.sform   +++|*             .   4   .  PANEL ALREADY OPEN              . SFOPEN .
02063  M00S00977.sform   +++|*             .   5   .  INTERNAL (FAST DYNAMIC LOADER)  . SFLOAD .
02064  M00S00978.sform   +++|*             .   6   .  NO SCREEN COMMAND ISSUED        . SFOPEN .
02065  M00S00979.sform   +++|*             .   7   .  UNSUPPORTED TERMINAL            . SFOPEN .
02066  M00S00980.sform   +++|*             .....................................................
02067  M00S00981.sform   +++|#
02068  M00S00982.sform   +++|ITEM NAME       C(11);               # NAME OF PANEL TO OPEN #
02069  M00S00983.sform   +++|ITEM NLENGTH    I;                   # LENGTH IN SIX BIT CHARACTERS #
02070  M00S00984.sform   +++|ITEM NOFFSET    I;                   # OFFSET INTO NAME #
02071  M00S00985.sform   +++|ITEM OPENSTAT   I;                   # RETURNS STATUS TO APPLICATION #
02072  M00S00986.sform   +++|
Line S00526 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02073  M01S00526.242l642 +++|ITEM MODELNAME  C(7);                # MODEL NAME FOR VDTITD CALL #
02074  M00S00987.sform   +++|ITEM NAMEINDEX  I;                   # INDEX OF PANEL IF FOUND #
02075  M00S00988.sform   +++|ITEM PANELADDR  I;                   # MEMORY ADDRESS OF PANEL #
02076  M00S00989.sform   +++|ITEM PANELNAME  C(7);                # PANEL NAME, LEFT JUSTIFIED #
02077  M00S00990.sform   +++|ITEM PLTINDEX   I;                   # INDEX INTO PANEL LOAD TABLE #
02078  M00S00991.sform   +++|ITEM SCREEN     I = 1;               # INDICATES SCREEN MODE TO VDT #
02079  M00S00992.sform   +++|ITEM SCREENDIM  I;                   # SCREEN DIMENSIONS FOR SETSRN #
Line S00527 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02080  M01S00527.242l642 +++|*IF DEF,QTRM
02081  M01S00528.242l642 +++|ITEM QTPLTINDEX I;                   # INDEX INTO QTRM USERS PLT #
02082  M01S00529.242l642 +++|*ENDIF
02083  M00S00993.sform   +++|
Line S00994 Modification History
M01 (Removed by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02084  M01S00994.ns2275  ---|OPENSTAT = 0;                        # CLEAR OPEN STATUS #
02085  M01S00995.ns2275  ---|IF TERMMODEL EQ -1 THEN
02086  M01S00996.ns2275  ---|  BEGIN                              # IF NO CHECK FOR SUPPORT YET #
02087  M01S00997.ns2275  ---|  CHKTRM(OPENSTAT);                  # CHECK FOR SUPPORTED TERMINAL #
Line S00012 Modification History
M01 (Added by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02088  M01S00012.ns2275  +++|OPENSTAT = OPENSTATUS"NOERROR";      # CLEAR OPEN STATUS #
Line S00013 Modification History
M01 (Added by) ns2275
M02 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02089  M02S00013.242l642 ---|IF TERMMODEL EQ "      " THEN
Line S00530 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02090  M01S00530.242l642 +++|IF TERMODNAME[0] EQ "       " THEN
Line S00014 Modification History
M01 (Added by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02091  M01S00014.ns2275  +++|  BEGIN                              # IF *TDU* TABLE NOT YET READ #
Line S00015 Modification History
M01 (Added by) ns2275
M02 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02092  M02S00015.242l642 ---|  VDTGSL(DUMMY,OPENSTAT);            # CHECK SYSTEM SCREEN/LINE #
Line S00531 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
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 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02099  M02S00016.242l642 ---|  IF OPENSTAT EQ 1 THEN
02100  M02S00017.242l642 ---|    BEGIN                            # IF SCREEN MODE #
Line S00537 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
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 #
Line S00018 Modification History
M01 (Added by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02107  M01S00018.ns2275  +++|    OPENSTAT = OPENSTATUS"NOERROR";  # CLEAR OPEN STATUS #
Line S00019 Modification History
M01 (Added by) ns2275
M02 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02108  M02S00019.242l642 ---|    VDTITD(TERMMODEL);               # INITIALIZE *TDU* TABLE #
02109  M02S00020.242l642 ---|    IF TERMMODEL EQ "      " THEN OPENSTAT = OPENSTATUS"UNSPTERM";
Line S00543 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02110  M01S00543.242l642 +++|    VDTITD(MODELNAME);               # INITIALIZE *TDU* TABLE #
Line S00544 Modification History
M01 (Added by) 242l642
M02 (Removed by) ns2671
Seq #  *Modification Id* Act 
----------------------------+
02111  M02S00544.ns2671  ---|    TERMODNAME[0] = MODELNAME;
Line S00021 Modification History
M01 (Added by) ns2275
M02 (Removed by) 242l642
M03 (Removed by) ns2671
Seq #  *Modification Id* Act 
----------------------------+
02112  M03S00021.ns2671  ---|    END
02113  M03S00022.ns2671  ---|  ELSE
02114  M03S00023.ns2671  ---|    BEGIN                            # OS MODE IS LINE #
02115  M03S00024.ns2671  ---|    OPENSTAT = OPENSTATUS"NOSCREEN"; # RETURN STATUS #
Line S00545 Modification History
M01 (Added by) 242l642
M02 (Removed by) ns2605
M03 (Removed 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 (Removed by) ns2671
Seq #  *Modification Id* Act 
----------------------------+
02117  M02S00055.ns2671  ---|    IF TERMODNAME[0] EQ "       " THEN
Line S00001 Modification History
M01 (Added by) ns2671
Seq #  *Modification Id* Act 
----------------------------+
02118  M01S00001.ns2671  +++|    IF C<0,6>MODELNAME EQ "      " THEN
Line S00056 Modification History
M01 (Added by) ns2605
Seq #  *Modification Id* Act 
----------------------------+
02119  M01S00056.ns2605  +++|      BEGIN                          # IF TERMINAL UNDEFINED #
Line S00002 Modification History
M01 (Added by) ns2671
Seq #  *Modification Id* Act 
----------------------------+
02120  M01S00002.ns2671  +++|      TERMODNAME[0] = "       ";
Line S00057 Modification History
M01 (Added by) ns2605
Seq #  *Modification Id* Act 
----------------------------+
02121  M01S00057.ns2605  +++|      OPENSTAT = OPENSTATUS"UNSPTERM";
02122  M01S00058.ns2605  +++|      END
02123  M01S00059.ns2605  +++|    ELSE
02124  M01S00060.ns2605  +++|      BEGIN                          # SUPPORTED TERMINAL #
Line S00003 Modification History
M01 (Added by) ns2671
Seq #  *Modification Id* Act 
----------------------------+
02125  M01S00003.ns2671  +++|      TERMODNAME[0] = MODELNAME;
Line S00061 Modification History
M01 (Added by) ns2605
Seq #  *Modification Id* Act 
----------------------------+
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
Line S00025 Modification History
M01 (Added by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02137  M01S00025.ns2275  +++|    END
02138  M00S00998.sform   +++|  END
02139  M00S00999.sform   +++|
Line S01000 Modification History
M01 (Removed by) sform9
Seq #  *Modification Id* Act 
----------------------------+
02140  M01S01000.sform9  ---|IF OPENSTAT EQ 0 THEN
Line S00002 Modification History
M01 (Added by) sform9
Seq #  *Modification Id* Act 
----------------------------+
02141  M01S00002.sform9  +++|IF OPENSTAT EQ OPENSTATUS"NOERROR" THEN
02142  M00S01001.sform   +++|  BEGIN                              # IF TERMINAL CAN BE USED #
02143  M00S01002.sform   +++|  IF NOT TERSCREENM[0] THEN
02144  M00S01003.sform   +++|    BEGIN                            # IF NOT IN SCREEN MODE #
02145  M00S01004.sform   +++|    SCREENDIM = 1;                   # ASK FOR SMALLEST SCREEN SIZE #
02146  M00S01005.sform   +++|    SETSRN(SCREENDIM,SCREENDIM);     # SET SCREEN MODE #
02147  M00S01006.sform   +++|    END
02148  M00S01007.sform   +++|  IF NLENGTH LS 1 THEN NLENGTH = 7;  # LEFT JUSTIFY PANEL NAME #
02149  M00S01008.sform   +++|  PANELNAME = C<NOFFSET,NLENGTH>NAME;
Line S00546 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
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  M00S01009.sform   +++|  P<PLTABLE> = LOC(PLT);             # REFERENCE PANEL LOAD TABLE #
02194  M00S01010.sform   +++|  PANELADDR = 0;                     # CHECK FOR PANEL NAME IN TABLE #
02195  M00S01011.sform   +++|  FOR PLTINDEX = 1 STEP 1 WHILE
02196  M00S01012.sform   +++|    PANELADDR EQ 0 AND PLTINDEX LQ PLTNUMENT[0] DO
02197  M00S01013.sform   +++|    BEGIN
02198  M00S01014.sform   +++|    IF PLTENAME[PLTINDEX] EQ PANELNAME THEN
02199  M00S01015.sform   +++|      BEGIN                          # IF PANEL NAME FOUND #
02200  M00S01016.sform   +++|      PANELADDR = PLTADDR[PLTINDEX]; # SET PANEL ADDRESS #
02201  M00S01017.sform   +++|      NAMEINDEX = PLTINDEX;          # SET INDEX INTO PLT #
02202  M00S01018.sform   +++|      END
02203  M00S01019.sform   +++|    END
02204  M00S01020.sform   +++|  IF PANELADDR EQ 0 THEN
02205  M00S01021.sform   +++|    BEGIN                            # IF PANELNAME NOT IN PLT #
02206  M00S01022.sform   +++|    IF PLTNUMENT[0] GQ PLTENTRYNM[0] THEN
02207  M00S01023.sform   +++|      BEGIN                          # IF PANEL LOAD TABLE IS FULL #
Line S01024 Modification History
M01 (Removed by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02208  M01S01024.ns2275  ---|      OPENSTAT = 3;                  # PANEL LOAD TABLE FULL #
Line S00026 Modification History
M01 (Added by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02209  M01S00026.ns2275  +++|      OPENSTAT = OPENSTATUS"PLTFULL";
02210  M00S01025.sform   +++|      END
02211  M00S01026.sform   +++|    ELSE
02212  M00S01027.sform   +++|      BEGIN                          # LOAD VIA FAST DYNAMIC LOADER #
02213  M00S01028.sform   +++|      SFLOAD(PANELNAME,PANELADDR,OPENSTAT);
Line S00225 Modification History
M01 (Added by) 243l647
Seq #  *Modification Id* Act 
----------------------------+
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
Line S00589 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
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  M00S01029.sform   +++|      END
02230  M00S01030.sform   +++|    END
02231  M00S01031.sform   +++|  ELSE
02232  M00S01032.sform   +++|    BEGIN                            # IF PANEL ALREADY IN PLT #
02233  M00S01033.sform   +++|    IF PLTOPENFLG[NAMEINDEX] THEN
02234  M00S01034.sform   +++|      BEGIN                          # IF PANEL IS ALREADY OPEN #
Line S01035 Modification History
M01 (Removed by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02235  M01S01035.ns2275  ---|      OPENSTAT = 4;                  # PANEL ALREADY OPEN #
Line S00027 Modification History
M01 (Added by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02236  M01S00027.ns2275  +++|      OPENSTAT = OPENSTATUS"PANELOPEN";
02237  M00S01036.sform   +++|      END
02238  M00S01037.sform   +++|    ELSE
02239  M00S01038.sform   +++|      BEGIN                          # OPEN STATICALLY LOADED PANEL #
02240  M00S01039.sform   +++|      PLTOPENFLG[NAMEINDEX] = TRUE;  # SET PANEL OPEN #
Line S00599 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02241  M01S00599.242l642 +++|*IF DEF,QTRM
02242  M01S00600.242l642 +++|        SETFSF(PANELADDR);           # SET FIELD STATUS FLAGS #
02243  M01S00601.242l642 +++|*ENDIF
02244  M00S01040.sform   +++|      END
Line S00230 Modification History
M01 (Added by) 243l647
Seq #  *Modification Id* Act 
----------------------------+
02245  M01S00230.243l647 +++|    POSTWO(PANELADDR);               # POSITION SFATTR ARRAYS #
02246  M00S01041.sform   +++|    END
02247  M00S01042.sform   +++|  END
02248  M00S01043.sform   +++|
02249  M00S01044.sform   +++|END  # SFOPEN$ #
02250  M00S01045.sform   +++|CONTROL EJECT;
02251  M00S01046.sform   +++|
02252  M00S01047.sform   +++|PROC SFPOSR$(TABLENAME,TLEN,TOFF,ROWNUMBER);
02253  M00S01048.sform   +++|
02254  M00S01049.sform   +++|# TITLE SFPOSR$ - POSITION TABLE ROW. #
02255  M00S01050.sform   +++|
02256  M00S01051.sform   +++|BEGIN  # SFPOSR$ #
02257  M00S01052.sform   +++|
02258  M00S01053.sform   +++|#
02259  M00S01054.sform   +++|**    SFPOSR$ - POSITION TABLE ROW.
02260  M00S01055.sform   +++|*
02261  M00S01056.sform   +++|*     SFPOSR$ POSITIONS TABLENAME TO ROWNUMBER.
02262  M00S01057.sform   +++|*
02263  M00S01058.sform   +++|*     PROC SFPOSR$(TABLENAME,TLEN,TOFF,ROWNUMBER)
02264  M00S01059.sform   +++|*
02265  M00S01060.sform   +++|*     ENTRY   TABLENAME  = TABLE NAME.
02266  M00S01061.sform   +++|*             TLEN       = LENGTH OF TABLENAME.
02267  M00S01062.sform   +++|*             TOFF       = OFFSET OF TABLENAME.
02268  M00S01063.sform   +++|*             ROWNUMBER  = ROW NUMBER.
02269  M00S01064.sform   +++|*
02270  M00S01065.sform   +++|*     EXIT    ARRCURROW[TABLENAME] = ROWNUMBER.
02271  M00S01066.sform   +++|#
02272  M00S01067.sform   +++|ITEM TABLENAME  C(11);               # TABLE NAME #
02273  M00S01068.sform   +++|ITEM TLEN       I;                   # LENGTH OF TABLENAME PARAMETER #
02274  M00S01069.sform   +++|ITEM TOFF       I;                   # OFFSET IN TABLENAME PARAMETER #
02275  M00S01070.sform   +++|ITEM ROWNUMBER  I;                   # ROW NUMBER IN ARRAY #
02276  M00S01071.sform   +++|
02277  M00S01072.sform   +++|ITEM I          I;                   # LOOP COUNTER #
02278  M00S01073.sform   +++|ITEM NOTFOUND   B;                   # TABLE NOT FOUND #
02279  M00S01074.sform   +++|ITEM TNAME      C(7);                # TABLE NAME LEFT JUSTIFIED #
02280  M00S01075.sform   +++|
02281  M00S01076.sform   +++|IF PANSTRARR[0] EQ 0 THEN RETURN;    # IF NO TABLES IN PANEL #
02282  M00S01077.sform   +++|
02283  M00S01078.sform   +++|IF TLEN LS 1 THEN TLEN = 7;          # CRACK PARAMETER #
02284  M00S01079.sform   +++|TNAME = C<TOFF,TLEN>TABLENAME;
02285  M00S01080.sform   +++|
02286  M00S01081.sform   +++|NOTFOUND = TRUE;
Line S01082 Modification History
M01 (Removed by) sform6
Seq #  *Modification Id* Act 
----------------------------+
02287  M01S01082.sform6  ---|FOR I = 1 STEP 1 WHILE ARRNUMVARS[I] NQ 0 AND NOTFOUND DO
Line S00001 Modification History
M01 (Added by) sform6
Seq #  *Modification Id* Act 
----------------------------+
02288  M01S00001.sform6  +++|FOR I = 0 STEP 1 WHILE ARRNUMVARS[I] NQ 0 AND NOTFOUND DO
02289  M00S01083.sform   +++|  BEGIN                              # SEARCH ARRAY LIST FOR TABLE #
02290  M00S01084.sform   +++|  IF ARRNAME[I] EQ TNAME THEN
02291  M00S01085.sform   +++|    BEGIN                            # IF TABLE NAME FOUND #
02292  M00S01086.sform   +++|    NOTFOUND = FALSE;
02293  M00S01087.sform   +++|    IF ROWNUMBER LS 1 OR ROWNUMBER GR ARRNUMROWS[I] THEN
02294  M00S01088.sform   +++|      BEGIN                          # IF ILLEGAL ROW NUMBER #
02295  M00S01089.sform   +++|      ARRCURROW[I] = 0;
02296  M00S01090.sform   +++|      END
02297  M00S01091.sform   +++|    ELSE ARRCURROW[I] = ROWNUMBER - 1;
02298  M00S01092.sform   +++|    END
02299  M00S01093.sform   +++|  END
02300  M00S01094.sform   +++|
02301  M00S01095.sform   +++|END  # SFPOSR$ #
Line S00072 Modification History
M01 (Added by) ns2605
Seq #  *Modification Id* Act 
----------------------------+
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$#
Line S00602 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
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  M00S01096.sform   +++|CONTROL EJECT;
02515  M00S01097.sform   +++|
02516  M00S01098.sform   +++|PROC SFSETP$(VARNAME,VLEN,VOFF,OFFSET,ROWNUM);
02517  M00S01099.sform   +++|
02518  M00S01100.sform   +++|# TITLE SFSETP$ - SET CURSOR POSITION. #
02519  M00S01101.sform   +++|
02520  M00S01102.sform   +++|BEGIN  # SFSETP$ #
02521  M00S01103.sform   +++|
02522  M00S01104.sform   +++|#
02523  M00S01105.sform   +++|**    SFSETP$ - SET CURSOR POSITION.
02524  M00S01106.sform   +++|*
02525  M00S01107.sform   +++|*     SFSETP$ SPECIFIES WHAT FIELD THE CURSOR WILL
02526  M00S01108.sform   +++|*     BE POSITIONED AT FOR THE NEXT READ.
02527  M00S01109.sform   +++|*
02528  M00S01110.sform   +++|*     PROC SFSETP$(VARNAME,VLEN,VOFF,OFFSET,ROWNUM)
02529  M00S01111.sform   +++|*
02530  M00S01112.sform   +++|*     ENTRY   VARNAME    = VARIABLE NAME OF FIELD.
02531  M00S01113.sform   +++|*             VLEN       = LENGTH OF VARP.
02532  M00S01114.sform   +++|*             VOFF       = OFFSET OF VARP.
02533  M00S01115.sform   +++|*             OFFSET     = OFFSET INTO SPECIFIED FIELD.
02534  M00S01116.sform   +++|*             ROWNUM     = ROW NUMBER OF SPECIFIED FIELD.
02535  M00S01117.sform   +++|*
Line S01118 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02536  M01S01118.242l642 ---|*     EXIT    CURSORVAR  = VARIABLE NAME OF SPECIFIED FIELD.
02537  M01S01119.242l642 ---|*             CURSORROW  = ROW NUMBER OF SPECIFIED FIELD.
02538  M01S01120.242l642 ---|*             CURSOROFF  = OFFSET OF SPECIFIED FIELD.
02539  M01S01121.242l642 ---|*             CURSORSET  = TRUE.
Line S00769 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
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  M00S01122.sform   +++|*
Line S01123 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02545  M01S01123.242l642 ---|*     USES    CURSOROFF, CURSORROW, CURSORSET, CURSORVAR.
Line S00773 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02546  M01S00773.242l642 +++|*     USES    TERCURSOFF, TERCURSROW, TERCURSSET, TERCURSVAR.
02547  M00S01124.sform   +++|*
02548  M00S01125.sform   +++|*     NOTES   ROUTINE READSF WILL SET THE ACTUAL CURSOR POSITION.
02549  M00S01126.sform   +++|#
02550  M00S01127.sform   +++|ITEM VARNAME    C(11);               # VARIABLE NAME #
02551  M00S01128.sform   +++|ITEM VLEN       I;                   # LENGTH OF VARNAME PARAMETER #
02552  M00S01129.sform   +++|ITEM VOFF       I;                   # OFFSET INTO VARNAME PARAMETER #
02553  M00S01130.sform   +++|ITEM OFFSET     I;                   # OFFSET INTO FIELD #
02554  M00S01131.sform   +++|ITEM ROWNUM     I;                   # ROW NUMBER IN ARRAY #
02555  M00S01132.sform   +++|
02556  M00S01133.sform   +++|IF VLEN LS 1 THEN VLEN = 7;          # CRACK PARAMETER #
Line S01134 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02557  M01S01134.242l642 ---|CURSORVAR = C<VOFF,VLEN>VARNAME;
Line S00774 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02558  M01S00774.242l642 +++|TERCURSVAR[0] = C<VOFF,VLEN>VARNAME;
02559  M00S01135.sform   +++|
02560  M00S01136.sform   +++|TERCURSSET[0] = TRUE;                # SET GLOBAL VARIABLES #
Line S01137 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02561  M01S01137.242l642 ---|IF OFFSET GR 0 THEN CURSOROFF = OFFSET - 1;
02562  M01S01138.242l642 ---|  ELSE CURSOROFF = 0;
02563  M01S01139.242l642 ---|IF ROWNUM LS 1 THEN CURSORROW = 0;
02564  M01S01140.242l642 ---|  ELSE CURSORROW = ROWNUM - 1;
Line S00775 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
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  M00S01141.sform   +++|
02570  M00S01142.sform   +++|END  # SFSETP$ #
02571  M00S01143.sform   +++|CONTROL EJECT;
02572  M00S01144.sform   +++|
02573  M00S01145.sform   +++|PROC SFSREA$(PANELP,PANLEN,PANOFF,INSP,INSLEN,INSOFF);
02574  M00S01146.sform   +++|
02575  M00S01147.sform   +++|# TITLE SFSREA$ - READ PANEL USING INSTRING. #
02576  M00S01148.sform   +++|
02577  M00S01149.sform   +++|BEGIN  # SFSREA$ #
02578  M00S01150.sform   +++|
02579  M00S01151.sform   +++|#
02580  M00S01152.sform   +++|**    SFSREA$ - READ PANEL USING INSTRING.
02581  M00S01153.sform   +++|*
02582  M00S01154.sform   +++|*     SFSREA$ READS A PANEL AND PLACES THE INPUT IN
02583  M00S01155.sform   +++|*     INSTRING.
02584  M00S01156.sform   +++|*
02585  M00S01157.sform   +++|*     PROC SFSREA$(PANELP,PANLEN,PANOFF,INSP,INSLEN,INSOFF)
02586  M00S01158.sform   +++|*
02587  M00S01159.sform   +++|*     ENTRY   PANELP     = NAME OF PANEL TO READ.
02588  M00S01160.sform   +++|*             PANLEN     = LENGTH OF PANELP.
02589  M00S01161.sform   +++|*             PANOFF     = OFFSET OF PANELP.
02590  M00S01162.sform   +++|*             INSP       = INSTRING TO RECEIVE DATA.
02591  M00S01163.sform   +++|*             INSLEN     = LENGTH OF INSP.
02592  M00S01164.sform   +++|*             INSOFF     = OFFSET OF INSP.
02593  M00S01165.sform   +++|*
02594  M00S01166.sform   +++|*     EXIT    INSP CONTAINS INPUT DATA.
02595  M00S01167.sform   +++|*
02596  M00S01168.sform   +++|*     CALLS   CPANEL, MOVEST, READSF.
02597  M00S01169.sform   +++|*
Line S01170 Modification History
M01 (Removed by) sform24
Seq #  *Modification Id* Act 
----------------------------+
02598  M01S01170.sform24 ---|*     UESE    TERREADFLG.
Line S00001 Modification History
M01 (Added by) sform24
Seq #  *Modification Id* Act 
----------------------------+
02599  M01S00001.sform24 +++|*     USES    TERREADFLG.
02600  M00S01171.sform   +++|#
02601  M00S01172.sform   +++|ITEM PANELP     C(11);               # PANEL PARAMETER #
02602  M00S01173.sform   +++|ITEM PANLEN     I;                   # LENGTH OF PANEL PARAMETER #
02603  M00S01174.sform   +++|ITEM PANOFF     I;                   # OFFSET OF PANEL PARAMETER #
02604  M00S01175.sform   +++|ITEM INSP       I;                   # ADDRESS OF INSTRING #
02605  M00S01176.sform   +++|ITEM INSLEN     I;                   # LENGTH OF INSTRING #
02606  M00S01177.sform   +++|ITEM INSOFF     I;                   # OFFSET OF INSTRING #
02607  M00S01178.sform   +++|
02608  M00S01179.sform   +++|ITEM PANEL      C(7);                # NAME OF INPUT PANEL #
02609  M00S01180.sform   +++|
Line S00779 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02610  M01S00779.242l642 +++|*IF DEF,QTRM
02611  M01S00780.242l642 +++|NIT$RC = NITRTC"OK";                 # SET STATUS OK #
02612  M01S00781.242l642 +++|
02613  M01S00782.242l642 +++|*ENDIF
02614  M00S01181.sform   +++|IF PANLEN LS 1 THEN PANLEN = 7;      # CRACK PARAMETER #
02615  M00S01182.sform   +++|PANEL = C<PANOFF,PANLEN>PANELP;
02616  M00S01183.sform   +++|
02617  M00S01184.sform   +++|READSF(PANEL);                       # READ PANEL #
02618  M00S01185.sform   +++|CPANEL;                              # REWRITE SCREEN AS NEEDED #
02619  M00S01186.sform   +++|
02620  M00S01187.sform   +++|IF PANNUMBYTE[0] NQ 0 THEN
02621  M00S01188.sform   +++|  BEGIN                              # IF VARIABLES IN PANEL #
02622  M00S01189.sform   +++|  TERREADFLG[0] = TRUE;
02623  M00S01190.sform   +++|  MOVEST(LOC(INSP),INSOFF,INSLEN);   # MOVE VARDATA TO INSTRING #
02624  M00S01191.sform   +++|  TERREADFLG[0] = FALSE;
02625  M00S01192.sform   +++|  END
02626  M00S01193.sform   +++|
02627  M00S01194.sform   +++|END  # SFSREA$ #
Line S00783 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02628  M01S00783.242l642 +++|*IF UNDEF, QTRM
02629  M00S01195.sform   +++|CONTROL EJECT;
02630  M00S01196.sform   +++|
02631  M00S01197.sform   +++|PROC SFSSHO$(PANELP,PANLEN,PANOFF,OUTP,OLEN,OOFF,INSP,ILEN,IOFF);
02632  M00S01198.sform   +++|
02633  M00S01199.sform   +++|# TITLE SFSSHO$ - SHOW PANEL USING INSTRING AND OUTSTRING. #
02634  M00S01200.sform   +++|
02635  M00S01201.sform   +++|BEGIN  # SFSSHO$ #
02636  M00S01202.sform   +++|
02637  M00S01203.sform   +++|#
02638  M00S01204.sform   +++|**    SFSSHO - SHOW PANEL USING INSTRING AND OUTSTRING.
02639  M00S01205.sform   +++|*
02640  M00S01206.sform   +++|*     THIS PROCEDURE CALLS SFSWRI$ AND SFSREA$.
02641  M00S01207.sform   +++|*
02642  M00S01208.sform   +++|*     PROC SFSSHO$(PANELP,PANLEN,PANOFF,OUTP,OLEN,OOFF,INSP,ILEN,IOFF)
02643  M00S01209.sform   +++|*
02644  M00S01210.sform   +++|*     ENTRY   PANELP     = NAME OF PANEL TO READ.
02645  M00S01211.sform   +++|*             PANLEN     = LENGTH OF PANELP.
02646  M00S01212.sform   +++|*             PANOFF     = OFFSET OF PANELP.
02647  M00S01213.sform   +++|*             OUTP       = OUTSTRING DISPLAY DATA.
02648  M00S01214.sform   +++|*             OLEN       = LENGTH OF OUTP.
02649  M00S01215.sform   +++|*             OOFF       = OFFSET OF OUTP.
02650  M00S01216.sform   +++|*             ILEN       = LENGTH OF INSP.
02651  M00S01217.sform   +++|*             IOFF       = OFFSET OF INSP.
02652  M00S01218.sform   +++|*
02653  M00S01219.sform   +++|*     EXIT    INSP       = CONTAINS INPUT DATA.
02654  M00S01220.sform   +++|*
02655  M00S01221.sform   +++|*     CALLS   SFSREA$, SFSWRI$.
02656  M00S01222.sform   +++|*
02657  M00S01223.sform   +++|*     USES    TERSHOWFLG.
02658  M00S01224.sform   +++|#
02659  M00S01225.sform   +++|ITEM PANELP     I;                   # NAME OF PANEL TO READ #
02660  M00S01226.sform   +++|ITEM PANLEN     I;                   # LENGTH OF PANELP #
02661  M00S01227.sform   +++|ITEM PANOFF     I;                   # OFFSET OF PANELP #
02662  M00S01228.sform   +++|ITEM OUTP       I;                   # OUTSTRING DISPLAY DATA #
02663  M00S01229.sform   +++|ITEM OLEN       I;                   # LENGTH OF OUTP #
02664  M00S01230.sform   +++|ITEM OOFF       I;                   # OFFSET OF OUTP #
02665  M00S01231.sform   +++|ITEM INSP       I;                   # INSTRING TO RECEIVE DATA #
02666  M00S01232.sform   +++|ITEM ILEN       I;                   # LENGTH OF INSP #
02667  M00S01233.sform   +++|ITEM IOFF       I;                   # OFFSET OF INSP #
02668  M00S01234.sform   +++|
02669  M00S01235.sform   +++|TERSHOWFLG[0] = TRUE;
02670  M00S01236.sform   +++|SFSWRI$(PANELP,PANLEN,PANOFF,OUTP,OLEN,OOFF);  # WRITE PANEL #
02671  M00S01237.sform   +++|SFSREA$(PANELP,PANLEN,PANOFF,INSP,ILEN,IOFF);  # READ PANEL #
02672  M00S01238.sform   +++|TERSHOWFLG[0] = FALSE;
02673  M00S01239.sform   +++|
02674  M00S01240.sform   +++|END  # SFSSHO$ #
Line S00784 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02675  M01S00784.242l642 +++|*ENDIF
02676  M00S01241.sform   +++|CONTROL EJECT;
02677  M00S01242.sform   +++|
02678  M00S01243.sform   +++|PROC SFSWRI$(NAME,NLENGTH,NOFFSET,STRING,SLENGTH,SOFFSET);
02679  M00S01244.sform   +++|
02680  M00S01245.sform   +++|# TITLE SFSWRI$ - SCREEN FORMAT STRING WRITE FUNCTION. #
02681  M00S01246.sform   +++|
02682  M00S01247.sform   +++|BEGIN  # SFSWRI$ #
02683  M00S01248.sform   +++|
02684  M00S01249.sform   +++|#
02685  M00S01250.sform   +++|**    SFSWRI$ - SCREEN FORMAT WRITE FUNCTION.
02686  M00S01251.sform   +++|*
02687  M00S01252.sform   +++|*     THIS PROCEDURE WRITES THE SPECIFIED PANEL USING THE CONCATENATED
02688  M00S01253.sform   +++|*     VARIABLE DATA FOUND IN OUTSTRING (OR IN THE CASE OF AN ATTEMPTED
02689  M00S01254.sform   +++|*     READ BEFORE WRITE USING THE VARIABLE DATA ALREADY PRESENT IN THE
02690  M00S01255.sform   +++|*     VARDATA SECTION OF THE PANEL RECORD) AND THE CONSTANT DATA FOUND
02691  M00S01256.sform   +++|*     IN THE PANEL RECORD.  IT INTERFACES TO COBOL AND FORTRAN APPLICA-
02692  M00S01257.sform   +++|*     TION PROGRAMS THROUGH A COMPASS INTERFACE MODULE CALLED SFSWRI.
02693  M00S01258.sform   +++|*
02694  M00S01259.sform   +++|*     PROC SFSWRI$(NAME,NLENGTH,NOFFSET,STRING,SLENGTH,SOFFSET)
02695  M00S01260.sform   +++|*
02696  M00S01261.sform   +++|*     ENTRY   NAME       = THE NAME OF THE PANEL TO BE WRITTEN.
02697  M00S01262.sform   +++|*             NLENGTH    = LENGTH IN SIX BIT CHARACTERS.
02698  M00S01263.sform   +++|*             NOFFSET    = OFFSET INTO NAME.
02699  M00S01264.sform   +++|*             STRING     = CONTAINS THE CONCATENATED VARIABLE DATA.
02700  M00S01265.sform   +++|*             SLENGTH    = LENGTH IN SIX BIT CHARACTERS.
02701  M00S01266.sform   +++|*             SOFFSET    = OFFSET INTO STRING.
02702  M00S01267.sform   +++|*
02703  M00S01268.sform   +++|*     EXIT    PANEL WRITTEN TO SCREEN.
02704  M00S01269.sform   +++|*
02705  M00S01270.sform   +++|*     CALLS   GETADD, MOVEST, POSARR, WRIPAN.
02706  M00S01271.sform   +++|*
02707  M00S01272.sform   +++|*     USES    TERACTIVEP, TERACTPANI.
02708  M00S01273.sform   +++|*
02709  M00S01274.sform   +++|*     NOTES   IF TERREADFLG IS SET SFSWRI HAS BEEN CALLED BY SFSREA
02710  M00S01275.sform   +++|*             AND HENCE THERE IS NO OUTSTRING TO MOVE INTO VARDATA
02711  M00S01276.sform   +++|*             AND WHATEVER VARIABLE DATA IS PRESENTLY THERE WILL BE
02712  M00S01277.sform   +++|*             WRITTEN TO THE SCREEN.
02713  M00S01278.sform   +++|#
02714  M00S01279.sform   +++|ITEM NAME       C(11);               # NAME OF PANEL TO BE WRITTEN #
02715  M00S01280.sform   +++|ITEM NLENGTH    I;                   # LENGTH IN SIX BIT CHARACTERS #
02716  M00S01281.sform   +++|ITEM NOFFSET    I;                   # OFFSET INTO NAME #
02717  M00S01282.sform   +++|ITEM STRING     I;                   # OUTSTRING PARAMETER #
02718  M00S01283.sform   +++|ITEM SLENGTH    I;                   # LENGTH IN SIX BIT CHARACTERS #
02719  M00S01284.sform   +++|ITEM SOFFSET    I;                   # OFFSET INTO OUTSTRING #
02720  M00S01285.sform   +++|
02721  M00S01286.sform   +++|ITEM PANELNAME  C(7);                # PANEL NAME, LEFT JUSTIFIED #
02722  M00S01287.sform   +++|ITEM PANELADDR  I;                   # ADDRESS OF PANEL RECORD #
02723  M00S01288.sform   +++|ITEM PLTINDEX   I;                   # PANEL LOAD TABLE INDEX #
02724  M00S01289.sform   +++|ITEM STRINGADDR I;                   # ADDRESS OF OUTSTRING #
02725  M00S01290.sform   +++|
Line S00785 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
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  M00S01291.sform   +++|IF NLENGTH LS 1 THEN NLENGTH = 7;    # CRACK PARAMETER #
02731  M00S01292.sform   +++|PANELNAME = C<NOFFSET,NLENGTH>NAME;  # LEFT JUSTIFY PANEL NAME #
02732  M00S01293.sform   +++|
Line S01294 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02733  M01S01294.242l642 ---|IF PANELNAME NQ ACTIVEPAN THEN
Line S00789 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02734  M01S00789.242l642 +++|IF PANELNAME NQ TERACTPANL[0] THEN
02735  M00S01295.sform   +++|  BEGIN                              # IF NOT THE ACTIVE PANEL #
Line S01296 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02736  M01S01296.242l642 ---|  ACTIVEPAN = PANELNAME;             # UPDATE ACTIVE PANEL NAME #
Line S00790 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02737  M01S00790.242l642 +++|  TERACTPANL[0] = PANELNAME;         # UPDATE ACTIVE PANEL NAME #
02738  M00S01297.sform   +++|  GETADD(PANELNAME,PANELADDR,PLTINDEX);
Line S01298 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02739  M01S01298.242l642 ---|  ACTPANPLTI = PLTINDEX;
Line S00791 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02740  M01S00791.242l642 +++|  TERACTPLTI[0] = PLTINDEX;
02741  M00S01299.sform   +++|  POSARR(PANELADDR);                 # POSITION BASED ARRAYS #
02742  M00S01300.sform   +++|  END
02743  M00S01301.sform   +++|
02744  M00S01302.sform   +++|IF PANNUMBYTE[0] NQ 0 AND NOT TERREADFLG[0] THEN
02745  M00S01303.sform   +++|  BEGIN                              # IF VARIABLE DATA PRESENT #
02746  M00S01304.sform   +++|  STRINGADDR = LOC(STRING);          # ADDRESS OF OUTSTRING #
02747  M00S01305.sform   +++|  MOVEST(STRINGADDR,SOFFSET,SLENGTH);  # MOVE OUTSTRING TO VARDATA #
02748  M00S01306.sform   +++|  END
02749  M00S01307.sform   +++|
Line S00792 Modification History
M01 (Added by) 242l642
M02 (Removed by) 252l678
Seq #  *Modification Id* Act 
----------------------------+
02750  M02S00792.252l678 ---|IF FIRSTWRITE THEN
Line S00133 Modification History
M01 (Added by) 252l678
Seq #  *Modification Id* Act 
----------------------------+
02751  M01S00133.252l678 +++|IF NOT TERVDTBOOC[0] THEN
Line S00793 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02752  M01S00793.242l642 +++|  BEGIN                              # IF FIRST WRITE #
Line S00794 Modification History
M01 (Added by) 242l642
M02 (Removed by) 252l678
Seq #  *Modification Id* Act 
----------------------------+
02753  M02S00794.252l678 ---|  FIRSTWRITE = FALSE;
Line S00134 Modification History
M01 (Added by) 252l678
Seq #  *Modification Id* Act 
----------------------------+
02754  M01S00134.252l678 +++|  TERVDTBOOC[0] = TRUE;
Line S00795 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02755  M01S00795.242l642 +++|  VDTBOO;                            # BEGIN OUTPUT SEQUENCE #
02756  M01S00796.242l642 +++|  END
02757  M00S01308.sform   +++|WRIPAN;                              # WRITE PANEL #
02758  M00S01309.sform   +++|
02759  M00S01310.sform   +++|END  # SFSWRI$ #
02760  M00S01311.sform   +++|CONTROL EJECT;
02761  M00S01312.sform   +++|
02762  M00S01313.sform   +++|PROC BFIELD(FIELD,STARTCHAR,LASTDIRTY);
02763  M00S01314.sform   +++|
02764  M00S01315.sform   +++|# TITLE BFIELD - BLANK FIELD IN VARDATA. #
02765  M00S01316.sform   +++|
02766  M00S01317.sform   +++|BEGIN  # BFIELD #
02767  M00S01318.sform   +++|
02768  M00S01319.sform   +++|#
02769  M00S01320.sform   +++|**    BFIELD - BLANK FIELD IN VARDATA.
02770  M00S01321.sform   +++|*
02771  M00S01322.sform   +++|*     THIS PROCEDURE BLANK FILLS A FIELD IN VARDATA.
02772  M00S01323.sform   +++|*
02773  M00S01324.sform   +++|*     PROC BFIELD(FIELD,STARTCHAR,LASTDIRTY)
02774  M00S01325.sform   +++|*
02775  M00S01326.sform   +++|*     ENTRY   FIELD      = INDEX OF FIELD IN FLDLIST.
02776  M00S01327.sform   +++|*             STARTCHAR  = POSITION TO START BLANK FILL.
02777  M00S01328.sform   +++|*
02778  M00S01329.sform   +++|*     EXIT    LASTDIRTY  = LAST POSITION WITH PREVIOUS
02779  M00S01330.sform   +++|*                          NON-BLANK CHARACTER.
02780  M00S01331.sform   +++|#
02781  M00S01332.sform   +++|ITEM FIELD      I;                   # FIELD TO INITIALIZE #
02782  M00S01333.sform   +++|ITEM STARTCHAR  I;                   # STARTING CHARACTER POSITION #
02783  M00S01334.sform   +++|ITEM LASTDIRTY  I;                   # LAST NON-BLANK CHARACTER #
02784  M00S01335.sform   +++|
02785  M00S01336.sform   +++|ITEM CHARNUM    I;                   # CHARACTER POSITION IN VARDATA #
02786  M00S01337.sform   +++|ITEM CHARIND    I;                   # CHARACTER INDEX IN VARDATA #
02787  M00S01338.sform   +++|ITEM I          I;                   # LOOP COUNTER #
02788  M00S01339.sform   +++|ITEM WORDIND    I;                   # WORD INDEX IN VARDATA #
02789  M00S01340.sform   +++|
02790  M00S01341.sform   +++|LASTDIRTY = -1;
02791  M00S01342.sform   +++|CHARNUM = FLDVDTCORD[FIELD] + STARTCHAR;
02792  M00S01343.sform   +++|WORDIND = CHARNUM / 5;
02793  M00S01344.sform   +++|CHARIND = CHARNUM - (5 * WORDIND);
02794  M00S01345.sform   +++|
02795  M00S01346.sform   +++|FOR I = STARTCHAR STEP 1 UNTIL FLDLENGTH[FIELD] -1 DO
02796  M00S01347.sform   +++|  BEGIN                              # BLANK FILL FIELD IN VDATA #
02797  M00S01348.sform   +++|  IF NEXTCHAR(FIELD,I) NQ BLANK THEN
02798  M00S01349.sform   +++|    BEGIN                            # NON-BLANK CHARACTER #
02799  M00S01350.sform   +++|    LASTDIRTY = I;                   # UPDATE LAST DIRTY CHARACTER #
02800  M00S01351.sform   +++|    END
02801  M00S01352.sform   +++|  B<CHARIND*12,12>VDATAU[WORDIND] = BLANK;  # BLANK CHARACTER POS #
02802  M00S01353.sform   +++|  CHARIND = CHARIND + 1;
02803  M00S01354.sform   +++|  IF CHARIND EQ 5 THEN
02804  M00S01355.sform   +++|    BEGIN
02805  M00S01356.sform   +++|    CHARIND = 0;
02806  M00S01357.sform   +++|    WORDIND = WORDIND + 1;
02807  M00S01358.sform   +++|    END
02808  M00S01359.sform   +++|  END
02809  M00S01360.sform   +++|
02810  M00S01361.sform   +++|END  # BFIELD #
Line S01362 Modification History
M01 (Removed by) ns2275
Seq #  *Modification Id* Act 
----------------------------+
02811  M01S01362.ns2275  ---|CONTROL EJECT;
02812  M01S01363.ns2275  ---|
02813  M01S01364.ns2275  ---|PROC CHKTRM(OPENSTAT);
02814  M01S01365.ns2275  ---|
02815  M01S01366.ns2275  ---|# TITLE CHKTRM - CHECK FOR SUPPORTED TERMINAL. #
02816  M01S01367.ns2275  ---|
02817  M01S01368.ns2275  ---|BEGIN  # CHKTRM #
02818  M01S01369.ns2275  ---|
02819  M01S01370.ns2275  ---|#
02820  M01S01371.ns2275  ---|**    CHKTRM - CHECK FOR SUPPORTED TERMINAL.
02821  M01S01372.ns2275  ---|*
02822  M01S01373.ns2275  ---|*     THIS PROCEDURE CHECKS TO SEE IF THE TERMINAL IN USE SUPPORTS
02823  M01S01374.ns2275  ---|*     SCREEN FORMATTING.
02824  M01S01375.ns2275  ---|*
02825  M01S01376.ns2275  ---|*     PROC CHKTRM(OPENSTAT)
02826  M01S01377.ns2275  ---|*
02827  M01S01378.ns2275  ---|*     ENTRY   OPENSTAT   = 0.
02828  M01S01379.ns2275  ---|*             TERMMODEL  = -1.
02829  M01S01380.ns2275  ---|*
02830  M01S01381.ns2275  ---|*     EXIT    OPENSTAT   = 0 IF NO ERROR.
02831  M01S01382.ns2275  ---|*                        = 7 IF UNSUPPORTED TERMINAL.
02832  M01S01383.ns2275  ---|*             TERMMODEL  = TERMINAL MODEL ORDINAL, IF NO ERROR.
02833  M01S01384.ns2275  ---|*                        = -1, ERROR.
02834  M01S01385.ns2275  ---|*
02835  M01S01386.ns2275  ---|*     CALLS   VDTGSL.
02836  M01S01387.ns2275  ---|*
02837  M01S01388.ns2275  ---|*     USES    TERMMODEL.
02838  M01S01389.ns2275  ---|#
02839  M01S01390.ns2275  ---|ITEM OPENSTAT     I;                 # STATUS OF TERMINAL IN USE #
02840  M01S01391.ns2275  ---|
02841  M01S01392.ns2275  ---|ITEM OSMODEFG     I;                 # OS SCREEN/LINE MODE FLAG #
02842  M01S01393.ns2275  ---|
02843  M01S01394.ns2275  ---|VDTGSL(TERMMODEL,OSMODEFG);          # GET MODEL AND SCREEN OR LINE #
02844  M01S01395.ns2275  ---|
02845  M01S01396.ns2275  ---|IF OSMODEFG NQ 1 THEN
02846  M01S01397.ns2275  ---|  BEGIN                              # IF OS MODE IS LINE #
02847  M01S01398.ns2275  ---|  OPENSTAT = 7;                      # TERMINAL IS NOT SUPPORTED #
02848  M01S01399.ns2275  ---|  TERMMODEL = -1;
02849  M01S01400.ns2275  ---|  END
02850  M01S01401.ns2275  ---|
02851  M01S01402.ns2275  ---|END  # CHKTRM #
02852  M00S01403.sform   +++|CONTROL EJECT;
02853  M00S01404.sform   +++|
02854  M00S01405.sform   +++|PROC CLRLNS;
02855  M00S01406.sform   +++|
02856  M00S01407.sform   +++|# TITLE CLRLNS - CLEAR LINES. #
02857  M00S01408.sform   +++|
02858  M00S01409.sform   +++|BEGIN  # CLRLNS #
02859  M00S01410.sform   +++|
02860  M00S01411.sform   +++|#
02861  M00S01412.sform   +++|**    CLRLNS - CLEAR LINES.
02862  M00S01413.sform   +++|*
02863  M00S01414.sform   +++|*     THIS PROCEDURE CLEARS THE PROPER LINES BEFORE AN OVERLAY
02864  M00S01415.sform   +++|*     WRITE.
02865  M00S01416.sform   +++|*
02866  M00S01417.sform   +++|*     PROC CLRLNS
02867  M00S01418.sform   +++|*
02868  M00S01419.sform   +++|*     EXIT    PROPER LINES CLEARED ON SCREEN.
02869  M00S01420.sform   +++|*
02870  M00S01421.sform   +++|*     CALLS   VDTCLL.
02871  M00S01422.sform   +++|#
02872  M00S01423.sform   +++|ITEM CURYCORD   I;                   # CURRENT Y COORDINATE #
02873  M00S01424.sform   +++|ITEM FLDINDEX   I;                   # INDEX INTO FIELD LIST #
02874  M00S01425.sform   +++|
02875  M00S01426.sform   +++|IF PANSTRFLD[0] EQ 0 THEN RETURN;
02876  M00S01427.sform   +++|
02877  M00S01428.sform   +++|CURYCORD = -1;                       # NO CURRENT Y COORDINATE YET #
02878  M00S01429.sform   +++|FOR FLDINDEX = 0 STEP 1 WHILE FLDENTRY[FLDINDEX] NQ 0 DO
02879  M00S01430.sform   +++|  BEGIN
02880  M00S01431.sform   +++|  IF FLDACTIVE[FLDINDEX] AND FLDYCORD[FLDINDEX] NQ CURYCORD THEN
02881  M00S01432.sform   +++|    BEGIN                            # IF ACTIVE FIELD ON NEW LINE #
02882  M00S01433.sform   +++|    CURYCORD = FLDYCORD[FLDINDEX];   # RESET CURRENT Y COORDINATE #
02883  M00S01434.sform   +++|    VDTCLL(0,CURYCORD);              # CLEAR LINE #
02884  M00S01435.sform   +++|    END
02885  M00S01436.sform   +++|  END
Line S00135 Modification History
M01 (Added by) 252l678
Seq #  *Modification Id* Act 
----------------------------+
02886  M01S00135.252l678 +++|IF TERNOTCHAR[0] THEN VDTCAA(0);     # IF LINE OR PAGE TYPE ATTRS. #
02887  M00S01437.sform   +++|
02888  M00S01438.sform   +++|END  # CLRLNS #
02889  M00S01439.sform   +++|CONTROL EJECT;
02890  M00S01440.sform   +++|
02891  M00S01441.sform   +++|PROC CPANEL;
02892  M00S01442.sform   +++|
02893  M00S01443.sform   +++|# TITLE CPANEL - CLEAN PANEL. #
02894  M00S01444.sform   +++|
02895  M00S01445.sform   +++|BEGIN  # CPANEL #
02896  M00S01446.sform   +++|
02897  M00S01447.sform   +++|#
02898  M00S01448.sform   +++|**    CPANEL - CLEAN PANEL.
02899  M00S01449.sform   +++|*
02900  M00S01450.sform   +++|*     THIS PROCEDURE CHECKS FLAGS PERTAINING TO REWRITING THE
02901  M00S01451.sform   +++|*     SCREEN AND THEN CALLS THE APPROPRIATE PROCEDURES.
02902  M00S01452.sform   +++|*
02903  M00S01453.sform   +++|*     PROC CPANEL
02904  M00S01454.sform   +++|*
02905  M00S01455.sform   +++|*     ENTRY    TERMESWRIT = TRUE, IF THE MESSAGE CONTAINS A MESSAGE.
02906  M00S01456.sform   +++|*              TERMESREAD = TRUE, IF THE MESSAGE AREA CAN BE CLEARED.
Line S01457 Modification History
M01 (Removed by) sform24
Seq #  *Modification Id* Act 
----------------------------+
02907  M01S01457.sform24 ---|*              TERREWFLDS = TRUE, IF AT LEAST ONE INPUT FIELD NEEDS
02908  M01S01458.sform24 ---|*                           TO BE REWRITTEN.
Line S00002 Modification History
M01 (Added by) sform24
Seq #  *Modification Id* Act 
----------------------------+
02909  M01S00002.sform24 +++|*              TERREWFLDS = TRUE, IF ONE OR MORE FIELDS NEED REWRITING.
02910  M01S00003.sform24 +++|*              TERREWSCRN = TRUE, IF THE ENTIRE SCREEN NEEDS REWRITING.
02911  M00S01459.sform   +++|*
02912  M00S01460.sform   +++|*     EXIT     TERMESREAD = FALSE.
02913  M00S01461.sform   +++|*              TERREWFLDS = FALSE.
Line S00004 Modification History
M01 (Added by) sform24
Seq #  *Modification Id* Act 
----------------------------+
02914  M01S00004.sform24 +++|*              TERREWSCRN = FALSE.
02915  M00S01462.sform   +++|*
Line S01463 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02916  M01S01463.242l642 ---|*     CALLS    REWFLD, MCLEAN, VDTBOO, VDTCAA, VDTEOO, WRIALL.
Line S00797 Modification History
M01 (Added by) 242l642
M02 (Removed by) ns2346
Seq #  *Modification Id* Act 
----------------------------+
02917  M02S00797.ns2346  ---|*     CALLS    REWFLD, MCLEAN, VDTCAA, WRIALL.
Line S00007 Modification History
M01 (Added by) ns2346
Seq #  *Modification Id* Act 
----------------------------+
02918  M01S00007.ns2346  +++|*     CALLS    REWFLD, MCLEAN, VDTSAM, WRIALL.
02919  M00S01464.sform   +++|*
Line S01465 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02920  M01S01465.242l642 ---|*     USES     TERDONTCLR, TERMESREAD, TERREWFLDS, TERREWSCRN,
02921  M01S01466.242l642 ---|*              TERREWVARS.
Line S00798 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02922  M01S00798.242l642 +++|*     USES     TERDONTCLR, TERMESREAD, TERNOREWRT, TERREWFLDS,
02923  M01S00799.242l642 +++|*              TERREWSCRN.
02924  M00S01467.sform   +++|#
02925  M00S01468.sform   +++|ITEM I          I;                   # LOOP COUNTER #
02926  M00S01469.sform   +++|
02927  M00S01470.sform   +++|IF TERMESWRIT[0] AND TERMESREAD[0] AND NOT TERREWSCRN[0] THEN
02928  M00S01471.sform   +++|  BEGIN                              # CLEAR MESSAGE AREA #
Line S01472 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02929  M01S01472.242l642 ---|  VDTBOO;
02930  M00S01473.sform   +++|  MCLEAN(DUMMY,DUMMY);               # CLEAN MESSAGE LINE #
Line S01474 Modification History
M01 (Removed by) ns2346
Seq #  *Modification Id* Act 
----------------------------+
02931  M01S01474.ns2346  ---|  VDTCAA;                            # CLEAR ALL ATTRIBUTES #
Line S00008 Modification History
M01 (Added by) ns2346
M02 (Removed by) ns2356
Seq #  *Modification Id* Act 
----------------------------+
02932  M02S00008.ns2356  ---|  VDTSAM(0);                         # CLEAR ALL ATTRIBUTES #
Line S00001 Modification History
M01 (Added by) ns2356
Seq #  *Modification Id* Act 
----------------------------+
02933  M01S00001.ns2356  +++|  IF NOT TERBLCKMDE[0] THEN
02934  M01S00002.ns2356  +++|    BEGIN
02935  M01S00003.ns2356  +++|    VDTSAM(0);
02936  M01S00004.ns2356  +++|    END
02937  M01S00005.ns2356  +++|  ELSE
02938  M01S00006.ns2356  +++|    BEGIN
02939  M01S00007.ns2356  +++|    VDTSAM(O"6001");
02940  M01S00008.ns2356  +++|    END
Line S01475 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02941  M01S01475.242l642 ---|  VDTEOO;
02942  M00S01476.sform   +++|  END
02943  M00S01477.sform   +++|
Line S01478 Modification History
M01 (Removed by) sform24
Seq #  *Modification Id* Act 
----------------------------+
02944  M01S01478.sform24 ---|IF TERREWFLDS[0] THEN
Line S00005 Modification History
M01 (Added by) sform24
Seq #  *Modification Id* Act 
----------------------------+
02945  M01S00005.sform24 +++|IF TERREWFLDS[0] OR TERREWSCRN[0] THEN
02946  M00S01479.sform   +++|  BEGIN                              # REWRITE FLAGGED FIELDS #
02947  M00S01480.sform   +++|  TERREADFLG[0] = TRUE;
02948  M00S01481.sform   +++|  TERDONTCLR[0] = TRUE;              # DO NOT CLEAR REWRITE/ENTERED #
02949  M00S01482.sform   +++|  IF TERREWSCRN[0] THEN
02950  M00S01483.sform   +++|    BEGIN                            # FULL REWRITE OF SCREEN #
02951  M00S01484.sform   +++|    WRIALL;
02952  M00S01485.sform   +++|    TERREWSCRN[0] = FALSE;
02953  M00S01486.sform   +++|    END
02954  M00S01487.sform   +++|  ELSE                               # REWRITE FLAGGED FIELDS #
02955  M00S01488.sform   +++|    BEGIN
Line S01489 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02956  M01S01489.242l642 ---|    TERREWVARS[0] = FALSE;
Line S00800 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02957  M01S00800.242l642 +++|    TERNOREWRT[0] = TRUE;
Line S01490 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02958  M01S01490.242l642 ---|    VDTBOO;
02959  M00S01491.sform   +++|    REWFLD;                          # REWRITE FIELDS #
Line S01492 Modification History
M01 (Removed by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02960  M01S01492.242l642 ---|    VDTEOO;
02961  M01S01493.242l642 ---|    TERREWVARS[0] = TRUE;
Line S00801 Modification History
M01 (Added by) 242l642
Seq #  *Modification Id* Act 
----------------------------+
02962  M01S00801.242l642 +++|    TERNOREWRT[0] = FALSE;
02963  M00S01494.sform   +++|    END
02964  M00S01495.sform   +++|  TERDONTCLR[0] = FALSE;
02965  M00S01496.sform   +++|  TERREADFLG[0] = FALSE;
02966  M00S01497.sform   +++|  END
02967  M00S01498.sform   +++|
02968  M00S01499.sform   +++|TERMESREAD[0] = FALSE;
02969  M00S01500.sform   +++|TERREWFLDS[0] = FALSE;
02970  M00S01501.sform   +++|
02971  M00S01502.sform   +++|END  # CPANEL #
02972  M00S01503.sform   +++|CONTROL EJECT;
02973  M00S01504.sform   +++|
02974  M00S01505.sform   +++|PROC DATEVL(FLDIND,IVAL);
02975  M00S01506.sform   +++|
02976  M00S01507.sform   +++|# TITLE DATEVL - DATE VALIDATION. #
02977  M00S01508.sform   +++|
02978  M00S01509.sform   +++|BEGIN  # DATEVL #
02979  M00S01510.sform   +++|
02980  M00S01511.sform   +++|#
02981  M00S01512.sform   +++|**    DATEVL - DATE VALIDATION.
02982  M00S01513.sform   +++|*
02983  M00S01514.sform   +++|*     THIS PROCEDURE CHECKS THAT THE INPUT IS A VALID DATE.
02984  M00S01515.sform   +++|*
02985  M00S01516.sform   +++|*     PROC DATEVL(FLDIND,IVAL)
02986  M00S01517.sform   +++|*
02987  M00S01518.sform   +++|*     ENTRY   FLDIND     = INDEX OF CURRENT FIELD IN FLDLIST.
02988  M00S01519.sform   +++|*
02989  M00S01520.sform   +++|*     EXIT    IVAL       = INTEGER VALUE OF INPUT.
02990  M00S01521.sform   +++|*             FLDVALID[FLDIND] = FALSE, IF INVALID INPUT.
02991  M00S01522.sform   +++|*
02992  M00S01523.sform   +++|*     CALLS   GETNUM, SKPBLK.
02993  M00S01524.sform   +++|#
02994  M00S01525.sform   +++|ITEM FLDIND     I;                   # VARIABLE TO BE VALIDATED #
02995  M00S01526.sform   +++|ITEM IVAL       I;                   # INTEGER VALUE OF INPUT #
02996  M00S01527.sform   +++|
02997  M00S01528.sform   +++|ITEM CHAR       I;                   # INPUT CHARACTER #
02998  M00S01529.sform   +++|ITEM CHARPOS    I;                   # CHARACTER POSITION IN FIELD #
02999  M00S01530.sform   +++|ITEM DATEIND    I;                   # INDEX TO DATEARRAY #
03000  M00S01531.sform   +++|ITEM DD         I;                   # DAY #
03001  M00S01532.sform   +++|ITEM DIGITS     I;                   # NUMBER OF DIGITS IN SUBFIELD #
03002  M00S01533.sform   +++|ITEM FVAL       I;                   # SUBFIELD VALUE #
03003  M00S01534.sform   +++|ITEM I          I;                   # LOOP COUNTER #
03004  M00S01535.sform   +++|ITEM INPIND     I;                   # INDEX TO NEXT INPUT CHARACTER #
03005  M00S01536.sform   +++|ITEM MM         I;                   # MONTH #
03006  M00S01537.sform   +++|ITEM TEMP1      I;                   # USED FOR LEAP YEAR CALCULATION #
03007  M00S01538.sform   +++|ITEM VARIND     I;                   # INDEX INTO VARLIST #
03008  M00S01539.sform   +++|ITEM YY         I;                   # YEAR #
03009  M00S01540.sform   +++|
03010  M00S01541.sform   +++|ARRAY DATEARRAY[0:7] P(1);
03011  M00S01542.sform   +++|  BEGIN
03012  M00S01543.sform   +++|  ITEM DATECHAR   U(00,00,60);       # HOLDS INPUT CHARACTERS #
03013  M00S01544.sform   +++|  END
03014  M00S01545.sform   +++|
03015  M00S01546.sform   +++|ARRAY DATEDELS[0:2] P(1);
03016  M00S01547.sform   +++|  BEGIN
03017  M00S01548.sform   +++|  ITEM DATEDEL    U(00,00,60);       # DATE DELIMETER #
03018  M00S01549.sform   +++|  END
03019  M00S01550.sform   +++|
03020  M00S01551.sform   +++|ARRAY FIELDARRAY[0:2] P(1);
03021  M00S01552.sform   +++|  BEGIN
03022  M00S01553.sform   +++|  ITEM FIELD      U(00,00,60);       # HOLDS MONTH, DAY, YEAR FIELDS #
03023  M00S01554.sform   +++|  END
03024  M00S01555.sform   +++|
03025  M00S01556.sform   +++|ARRAY MONTHS [0:12] P(1);            # NUMBER OF DAYS IN EACH MONTH #
03026  M00S01557.sform   +++|  BEGIN                              # 0TH MONTH = LEAP YEAR FEBRUARY #
03027  M00S01558.sform   +++|  ITEM MONLENGTH  U(00,00,60) =
03028  M00S01559.sform   +++|                 [29,31,28,31,30,31,30,31,31,30,31,30,31];
03029  M00S01560.sform   +++|  END
03030  M00S01561.sform   +++|
03031  M00S01562.sform   +++|SWITCH DATETYPE:FORMTYPE
03032  M00S01563.sform   +++|  YYMMDD : Y,
03033  M00S01564.sform   +++|  MMDDYY : M,
03034  M00S01565.sform   +++|  DDMMYY : D;
03035  M00S01566.sform   +++|
03036  M00S01567.sform   +++|DATEIND = 0;
03037  M00S01568.sform   +++|INPIND = 0;
03038  M00S01569.sform   +++|CHARPOS = 0;
03039  M00S01570.sform   +++|
03040  M00S01571.sform   +++|VARIND = FLDVARORD[FLDIND];          # SET INDEX TO VARLIST #
03041  M00S01572.sform   +++|IVAL = 0;
03042  M00S01573.sform   +++|SKPBLK(FLDIND,CHARPOS,CHAR);
03043  M00S01574.sform   +++|IF CHARPOS GQ FLDLENGTH[FLDIND] THEN
03044  M00S01575.sform   +++|  BEGIN                              # BLANK FIELD #
03045  M00S01576.sform   +++|  FLDVALID[FLDIND] = FALSE;
03046  M00S01577.sform   +++|  RETURN;
03047  M00S01578.sform   +++|  END
03048  M00S01579.sform   +++|
03049  M00S01580.sform   +++|FOR I = 0 STEP 1 UNTIL 2 DO
03050  M00S01581.sform   +++|  BEGIN
03051  M00S01582.sform   +++|  FVAL = 0;
03052  M00S01583.sform   +++|  GETNUM(FLDIND,CHARPOS,FVAL,DIGITS);
03053  M00S01584.sform   +++|  IF I NQ 2 THEN
03054  M00S01585.sform   +++|    BEGIN
03055  M00S01586.sform   +++|    CHAR = NEXTCHAR(FLDIND,CHARPOS);
03056  M00S01587.sform   +++|    DATEDEL[I] = CHAR;
03057  M00S01588.sform   +++|    END
03058  M00S01589.sform   +++|  ELSE CHARPOS = CHARPOS -1;
03059  M00S01590.sform   +++|  IF NOT(DIGITS EQ 1 OR DIGITS EQ 2) THEN
03060  M00S01591.sform   +++|    BEGIN
03061  M00S01592.sform   +++|    FLDVALID[FLDIND] = FALSE;
03062  M00S01593.sform   +++|    RETURN;
03063  M00S01594.sform   +++|    END
03064  M00S01595.sform   +++|  CHARPOS = CHARPOS + 1;
03065  M00S01596.sform   +++|  FIELD[I] = FVAL;
03066  M00S01597.sform   +++|  END
03067  M00S01598.sform   +++|
03068  M00S01599.sform   +++|IF CHARPOS NQ FLDLENGTH[FLDIND] THEN
03069  M00S01600.sform   +++|  BEGIN                              # CHECK FOR EXTRA CHARACTERS #
03070  M00S01601.sform   +++|  SKPBLK(FLDIND,CHARPOS,CHAR);
03071  M00S01602.sform   +++|  IF CHARPOS LQ FLDLENGTH[FLDIND] - 1 THEN
03072  M00S01603.sform   +++|    BEGIN                            # NON-BLANK CHAR AFTER DATE #
03073  M00S01604.sform   +++|    FLDVALID[FLDIND] = FALSE;
03074  M00S01605.sform   +++|    RETURN;
03075  M00S01606.sform   +++|    END
03076  M00S01607.sform   +++|  END
03077  M00S01608.sform   +++|
03078  M00S01609.sform   +++|IF DATEDEL[1] NQ DATEDEL[0] THEN
03079  M00S01610.sform   +++|  BEGIN
03080  M00S01611.sform   +++|  FLDVALID[FLDIND] = FALSE;
03081  M00S01612.sform   +++|  RETURN;
03082  M00S01613.sform   +++|  END
03083  M00S01614.sform   +++|GOTO DATETYPE[VARPICTYPE[VARIND]];
03084  M00S01615.sform   +++|
03085  M00S01616.sform   +++|MMDDYY:                              # SET MONTH, DAY, YEAR VALUES #
03086  M00S01617.sform   +++|
03087  M00S01618.sform   +++|  MM = FIELD[0];
03088  M00S01619.sform   +++|  DD = FIELD[1];
03089  M00S01620.sform   +++|  YY = FIELD[2];
03090  M00S01621.sform   +++|  GOTO CHECKDATE;
03091  M00S01622.sform   +++|
03092  M00S01623.sform   +++|YYMMDD:                              # SET MONTH, DAY, YEAR VALUES #
03093  M00S01624.sform   +++|
03094  M00S01625.sform   +++|  YY = FIELD[0];
03095  M00S01626.sform   +++|  MM = FIELD[1];
03096  M00S01627.sform   +++|  DD = FIELD[2];
03097  M00S01628.sform   +++|  GOTO CHECKDATE;
03098  M00S01629.sform   +++|
03099  M00S01630.sform   +++|DDMMYY:                              # SET MONTH, DAY, YEAR VALUES #
03100  M00S01631.sform   +++|
03101  M00S01632.sform   +++|  DD = FIELD[0];
03102  M00S01633.sform   +++|  MM = FIELD[1];
03103  M00S01634.sform   +++|  YY = FIELD[2];
03104  M00S01635.sform   +++|
03105  M00S01636.sform   +++|CHECKDATE:                           # CHECK FOR VALID DATE VALUE #
03106  M00S01637.sform   +++|
03107  M00S01638.sform   +++|  IF MM GR 12 OR MM LS 1 THEN
03108  M00S01639.sform   +++|    BEGIN                            # INVALID MONTH #
03109  M00S01640.sform   +++|    FLDVALID[FLDIND] = FALSE;
03110  M00S01641.sform   +++|    RETURN;
03111  M00S01642.sform   +++|    END
03112  M00S01643.sform   +++|
03113  M00S01644.sform   +++|  IF MM EQ 2 THEN                    # CHECK IF LEAP YEAR FEBRUARY #
03114  M00S01645.sform   +++|    BEGIN
03115  M00S01646.sform   +++|    TEMP1 = YY / 4;
03116  M00S01647.sform   +++|    TEMP1 = YY - (4 * TEMP1);
03117  M00S01648.sform   +++|    IF TEMP1 EQ 0 THEN MM = 0;
03118  M00S01649.sform   +++|    END
03119  M00S01650.sform   +++|
03120  M00S01651.sform   +++|  IF DD GR MONLENGTH[MM] OR DD LS 1 THEN
03121  M00S01652.sform   +++|    BEGIN                            # INVALID DAY #
03122  M00S01653.sform   +++|    FLDVALID[FLDIND] = FALSE;
03123  M00S01654.sform   +++|    RETURN;
03124  M00S01655.sform   +++|    END
03125  M00S01656.sform   +++|
03126  M00S01657.sform   +++|  IF MM EQ 0 THEN MM = 2;
Proceed to Part 2
cdc/nos2.source/opl.opl871/deck/sform.001.txt ยท Last modified: by 127.0.0.1