× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Here is the code.

     H bnddir('SVCBNDDIR')
     H DFTACTGRP(*NO)
     H actgrp(*NEW)
     H option(*srcstmt :  *nodebugio)
      *****************************************************************
      * PROGRAM:      RUBRTSCHSL                                      *
      * PROGRAMMER:   Michael Smith                                   *
      * DATE:         Jan 30, 2006                                    *
      * COMMENTS:     Maintain Rate Schedule by Route for RUBS        *
      *****************************************************************
     FRubSqrDt00UF A E           K Disk
     FRubSqrHd00UF A E           K Disk
     FUPTP      IF   E           K Disk
     FURTE      IF   E           K Disk
     FRUBSQENTDFCF   E             WorkStn Infds( PInfds )
     F                                     Sfile( Sdata1 : RcvRrn )
     F                                     INDDS(WORKSTNIND)
      *
      * Subfile page control array
     D Ctl             S              5    Dim(999)
      *
      * File information data structure for display file
     D PINFDS          DS
     D  #FUNCT               369    369
     D  #NORIf               156    159B 0
     D  KEYPRESS             369    369
     D  CURSOR               370    371B 0
     D  #SFRRN               376    377B 0
     D  #RCDNO               378    379B 0
     D PGMST          SDS
     D  #PGMNM           *PROC
     D  #ParmS           *ParmS
     D  DSPDEV               244    253
     D  #USER                254    263

     D/copy qrpglesrc,g#prototyp
     D/copy qrpglesrc,e#prototyp
 
*---------------------------------------------------------------------
      * Work fields
 
*---------------------------------------------------------------------
     D #Error          S              1
     D #First          S              1
     D #No             S              1
     D #Yes            S              1
     D Lctl#           S                   Like(RBRTE )
     D Pg              S              5  0
     D RcvRrn          S              5  0
     D Rmdr            S              1  0
     D Rrn#            S              5  0
     D Rrn#E           S              5  0
     D Rrn#O           S              5  0
     D Wrk1            S              5  0
     D
 
*---------------------------------------------------------------------
      * END of work fields
 
***********************************************************************
      *Display file indicator usage.
 
***********************************************************************
     DMapindsp         S               *   INZ(%Addr(Workstnind))

     DMapinds          DS                  BASED(MAPINDSP)
     DFunctionKeys            01     30
     DErrinds                 60     65

     DWorkstnind       DS
     DF2Sort                  02     02N
     DF3Exit                  03     03N
     DF4Prompt                04     04N
     DF5Refresh               05     05N
     DF12Return               12     12N
     DPageDown                27     27N
     DPageUp                  28     28N


     DSFLCLR                  40     40N
     DSFLDSPCTL               41     41N
     DSFLDSP                  42     42N
     DSFLINZ                  43     43N
     DSFLDLT                  44     44N

     DErrTyp                  61     61N
     DErrEntry                62     62N
     DRteErr                  63     63N

     DSFLEND                  99     99N
 
*---------------------------------------------------------------------
      *
      *
     C                   DoU       F3Exit
     C                   Write     MSGCTL1
     C                   Write     Foot1
     C                   Eval      SFLDSPCTL = *ON
     C                   ExFmt     SCTL1
     C                   Callp     g#ClrMsgSF
      * Mainline logic
      *
      * Display subfile control record format to get batch
      * number. Then position file to read any existing
      * records in that batch.
      *
     C                   If        Not F3Exit
     C                   ExSr      @Setup
     C                   If        RteErr = *off
      *

      *
      * Display selection window
     C                   DoU       F3Exit Or
     C                             F12Return
      * Fill subfile
     C                   ExSr      @Load
      *
     C                   DoU       F3Exit Or
     C                             F12Return

     C                   Write     MSGCTL1
     C                   Eval      SFLDSPCTL = *On
     C                   Eval      SFLDSP = *On
     C                   Write     Foot1
     C                   ExFmt     SCTL1
     C                   Eval      SFLDSPCTL = *Off
     C                   Eval      SFLDSP = *Off
     C* these are error messages- change to normal methods
     C                   Eval      *IN71 = *Off
     C                   Eval      *IN72 = *Off
     C                   Eval      ErrTyp = *Off
     C                   Callp     g#ClrMsgSF
      *
      * - - - - - - - - - - - - - - - *
      * Process function key requests *
      * - - - - - - - - - - - - - - - *
      *
      * Exit or Cancel request
     C                   If        F3Exit Or
     C                             F12Return
     C                   Leave
     C                   EndIf
      *
      * Prompt request
     C                   If        F4Prompt
     C                   ExSr      @Prmpt
     C                   Iter
     C                   EndIf
      *
      * Refresh request
     C                   If        F5Refresh
     C
     C                   Eval      RBPRMTYP = Ctl( Pg )
     C                   ExSr      @Repos
     C****               Eval      SFLDSP = *ON
     C                   Leave
     C                   EndIf
      *
      * User request position to new name
     C                   If        Route <> RBRTE
     C                   ExSr      @Setup
     C                   Leave
     C                   EndIf
      *
      * Page up for previous records
     C                   If        PageUp
     C                   If        Pg > 1
     C                   Eval      Pg = Pg - 1
     C                   Eval      RBPRMTYP  = Ctl( Pg )
     C                   ExSr      @Repos
     C                   Leave
     C                   Else
     C                   MOVE      'RGM0001'     #MSGID            7
     C                   CallP     G#AddMsgSF(#MSGID:' ':'RGCMSGF')
     C****             Eval      *IN63 = *On
     C                   Iter
     C                   EndIf
     C                   EndIf
      *
      * Page down for more records
     C                   If        PageDown
     C                   If        Sflend = *Off
     C                   Eval      Pg = Pg + 1
     C     15            Chain     Sdata1                             21
     C                   Eval      RBPRMTYP  = CtlSav
     C                   ExSr      @Repos
     C                   Leave
     C                   Else
     C                   MOVE      'RGM0002'     #MSGID
     C                   CallP     G#AddMsgSF(#MSGID:' ':'RGCMSGF')
     C***                   Eval      *IN64 = *On
     C                   Iter
     C                   EndIf
     C                   EndIf
      *
      * - - - - - - - - - - - - - - - - - - - *
      * Process subfile records from screen   *
      * - - - - - - - - - - - - - - - - - - - *
      *
     C                   ExSr      @Read
      *
      * End of DO Loops for F03 or F12 key
      *
     C                   EndDo
     C                   EndDo
     C                   Eval      SFLDSP    = *OFF
     C                   Eval      SFLDSPCTL = *OFF
     C                   Eval      SFLCLR    = *ON
     C                   Write     SCTL1
     C                   Eval      SFLCLR    = *OFF
     C                   EndIf
     C                   EndIf
     C                   EndDo
      *
      * Update batch header file record when exiting program
     C                   ExSr      @BchUp
      *
      * - - - - - - - - - *
      * End of Program    *
      * - - - - - - - - - *
      *
     C                   Eval      *INLR = *On
     C                   Return
      *
      * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      *
      * Subroutines
      *
      *==============================================================*
      * Set up for new batch number                                  *
      *==============================================================*
      *
     C     @Setup        BegSr
      *
     C* validate the Route prior to anything else
     C     Route         Setll     URTE
     C                   If        %equal(urte)
      * Update batch header file record
     C                   ExSr      @BchUp
      *
      * Initialize batch number
     C                   Eval      RBRTE  = Route
      * Retrieve or create batch header record
     C     RBRTE         Chain     RUBSQRHD00                         21
     C                   If        *IN21 = *Off
     C                   Eval      TotSqrFoot = RBTSQRFT
     C                   Else
     C                   Eval      RBTSQRFT = 0
     C                   Eval      TotSqrFoot  = 0
     C                   Write     RBSQHDF
     C     RBRTE         Chain     RUBSQRHD00                         21
     C                   EndIf
      *
     C     RBRTE         Setll     RUBSQRDT00
     C                   Clear                   Ctl
     C                   Reset                   Pg
     C                   Else
     C                   Eval      RteErr = *On
     C                   MOVE      'RGM0015'     #MSGID
     C                   CallP     G#AddMsgSF(#MSGID:' ':'RGCMSGF')
     C                   EndIf
      *
     C                   EndSr
      *
      *==============================================================*
      * Reposition file for next subfile page                        *
      *==============================================================*
      *
     C     @Repos        BegSr
      *
      * Reposition file
     C     BdKey         Setll     RUBSQRDT00
      *
     C                   EndSr
      *
      *==============================================================*
      * Load database records into new subfile page                  *
      *==============================================================*
      *
     C     @Load         BegSr
      *
      * Clear subfile
     C                   Eval      SFLCLR = *On
     C                   Write     SCTL1
     C                   Eval      SFLCLR = *Off
      *
      * Reset error indicators
     C                   Eval      *IN61 = *Off
     C                   Eval      *IN62 = *Off
      *
      * Reset work values
     C                   Reset                   RcvRrn
     C                   Reset                   Rrn#
     C                   Reset                   Rrn#O
     C                   Reset                   Rrn#E
     C                   Reset                   #First
      *
      * Load up to 15 records into subfile page
     C                   DO        15            Rrn#
      *
     C     RBRTE         ReadE     RUBSQRDT00
99
      * Load existing DB record
     C                   If        *IN99 = *Off
     C                   Eval      CtlSav = RBPRMTYP
     C                   Eval      Route = RBRTE
     C                   Eval      PRMTYP = RBPRMTYP
     C                   Eval      SQFOOT = RBSQRFT
     C                   Eval      UNITS  = RBNBRUNT
     C                   Else
     C                   Eval                    SflEnd = *On
     C                   Clear                   Sdata1
     C                   EndIf
      *
     C                   Eval      RcvRrn = RcvRrn + 1
      * Only for very first record
     C                   If        RcvRrn = 1
     C                   Eval      Ctl(Pg) = RBPRMTYP
     C                   EndIf
      * Only when encountering first blank subfile record
     C                   If        #First = #Yes And
     C                             CtlSav = *Blanks
     C                   Eval      LCtl# = RBRTE
     C                   Eval      RcdNbr = RcvRrn
     C                   Eval      #First = #No
     C                   EndIf
      * Write subfile record
     C                   Write     Sdata1
      *
     C                   EndDo
      *
     C                   EndSr
      *
      *=====================================*
      * Read subfile records from screen    *
      *=====================================*
      *
     C     @Read         BegSr
      *
      * Reset work values
     C                   Reset                   #Error
     C                   Reset                   RcvRrn
     C                   Reset                   Rrn#
     C                   Reset                   Rrn#O
     C                   Reset                   Rrn#E
     C                   Reset                   #First
      *
      * Read all 15 records from display in alternating (left, right)
      * sequence to emulate the correct keying order in columns
      *
     C                   Do        15            Rrn#
      *
     C                   Eval      RcvRrn = Rrn#
      *
      * Process changed subfile records
     C     RcvRrn        Chain     Sdata1                             21
     C                   Clear                   Errinds
      *
      * - - - - - - - - - - - - - - - - - - - - - - - - -
      * If user made selection,
      *   If NCust# <> 0, then adding or changing record
      *      Verify that all fields have values
      *      Verify that customer exists
      *      If CtlSav (hidden in subfile) = 0,
      *         then adding a new record
      *      If CtlSav <> 0, then changing record
      *   Else NCust# = 0, either no entry or deleting
      *      If CtlSav (hidden in subfile) = 0,
      *         then just clear all subfile fields
      *      If CtlSav <> 0, then delete existing record
      * - - - - - - - - - - - - - - - - - - - - - - - - -
      *
      * Reset error indicators
     C                   Eval      *IN61 = *Off
     C                   Eval      *IN62 = *Off
      *
      * Adding or changing a record.
     C                   If        PRMTYP <> *Blanks
     C                   Eval      #First = #Yes
      * Verify values
     C                   If        UNITS = 0 Or
     C                             SQFOOT = 0
     C                   MOVE      '       '     #MSGID            7
     C                   CALLP     G#AddMsgSF(#MSGID:'Must enter Units
and-
     C                             Footage':'RGCMSGF')
     C                   Eval      Errentry = *On
     C                   Eval      #Error = #Yes
     C                   Eval      RcdNbr = RcvRrn
     C                   Update    Sdata1
     C                   Eval      Errentry = *Off
     C                   Leave
     C                   Else
      * Verify customer number
     C     PRMTYP        Chain     UPTP                               61
     C                   If        Not %Found(UPTP)
     C                   Eval      ErrTyp = *On
     C                   MOVE      'RGM0037'     #MSGID            7
     C                   CALLP     G#AddMsgSF(#MSGID:' ':'RGCMSGF')
     C                   Eval      #Error = #Yes
     C                   Eval      RcdNbr = RcvRrn
     C                   Update    SData1
     C                   Eval      ErrTyp = *Off
     C                   Leave
     C                   Else

     C                   If        CtlSav = *Blanks
     C     Bdkey1        Chain     RUBSQRDT00
     C                   If        %Found(RUBSQRDT00)
     C                   Eval      #Error = #Yes
     C                   Eval      RcdNbr = RcvRrn
     C                   Eval      ErrTyp = *On
     C                   MOVE      'RGM0006'     #MSGID
     C                   CALLP     G#AddMsgSF(#MSGID:' ':'RGCMSGF')
     C                   Update    SData1
     C                   Eval      ErrTyp = *Off
     C                   Leave
      * Add
     C                   Else
     C                   If        CtlSav = *Blanks
     C                   ExSr      @Add
      * Change
     C                   Else
     C                   ExSr      @Updat
     C                   EndIf
     C                   EndIf
     C                   Else
     C                   ExSr      @Updat
     C                   EndIf
     C                   EndIf
     C                   EndIf
      * Deleting record
     C                   Else
     C                   If        PRMTYP = *BLanks
     C                   If        CtlSav <> *Blanks
     C                   ExSr      @Delet
      * Just clearing record and rewriting
     C                   Else
     C                   Clear                   SData1
     C                   Update    Sdata1
     C                   If        #First = #Yes
     C                   Eval      RcdNbr = RcvRrn
     C                   Eval      #First = #No
     C                   EndIf
     C                   EndIf
     C                   EndIf
     C                   EndIf
      *
      *
      * End of DO 15 loop for next subfile record
     C                   EndDo
      *
     C                   If        #Error = #No
     C     15            Chain     Sdata1                             21
     C                   If        *IN21 = *Off And
     C                             PRMTYP <> *BLanks
     C                   Eval      *in99  = *Off
     C                   EndIf
     C                   EndIf
      *
     C                   EndSr
      *
      *========================*
      * Add a record           *
      *========================*
      *
     C     @Add          BegSr
      *
      * Add record to file
     C                   Eval      RBRTE    = Route
     C                   Eval      RBPRMTYP = PRMTYP
     C                   Eval      RBSQRFT = SqFoot
     C                   Eval      RBNBRUNT = Units
     C                   Write     RBSQDTF
      *
      * Adjust batch total
     C                   Eval      TOTSQRFOOT = TOTSQRFOOT + (SqFoot *
Units)
      *
      * Update subfile record
     C                   Eval      *IN61 = *Off
     C                   Eval      *IN62 = *Off
     C                   Eval      CtlSav = RBPRMTYP
     C                   Eval      RcdNbr = RcvRrn
     C                   Update    Sdata1
      *
     C                   EndSr
      *
      *========================*
      * Change a record        *
      *========================*
      *
     C     @Updat        BegSr
      *
     C********           Eval      ArCtl# = CtlSav
     C     BdKey2        Chain     RUBSQRDT00                         21
      *
     C                   Eval      TotSqrFoot = TotSqrFoot -(RBSQRFT *
RBNBRUNT)
     C                   Eval      RBRTE    = Route
     C                   Eval      RBPRMTYP = PRMTYP
     C                   Eval      RBSQRFT = SqFoot
     C                   Eval      RBNBRUNT = Units
     C                   Eval      TotSqrFoot = TotSqrFoot +(RBSQRFT *
RBNBRUNT)
      *
     C                   Update    RBSQDTF
      *
      * Update subfile record
     C                   Eval      *IN61 = *Off
     C                   Eval      *IN62 = *Off
     C                   Eval      RcdNbr = RcvRrn
     C                   Update    Sdata1
      *
     C                   EndSr
      *
      *
      *========================*
      * Delete a record        *
      *========================*
      *
     C     @Delet        BegSr
      *
     C     BdKey2        Chain     RUBSQRDT00                         21
      *
     C                   Delete    RUBSQRDT00
      *
      * Adjust batch total
     C                   Eval      TotSqrFoot = TotSqrFoot -(RBSQRFT *
RBNBRUNT)
      *
      * Update subfile record
     C                   Eval      *IN61 = *Off
     C                   Eval      *IN62 = *Off
     C                   Clear                   Sdata1
     C                   Eval      RcdNbr = RcvRrn
     C                   Update    Sdata1
      *
     C                   EndSr
      *
      *
      *==============================================================*
      * Update Batch Header                                          *
      *==============================================================*
      *
     C     @BchUp        BegSr
      *
      * Update batch header file record
     C                   If        RBRTE  <> 0
     C                   Eval      RBTSQRFT = TotSqrFoot
     C                   Update    RBSQHDF
     C                   EndIf
      *
     C                   EndSr
      *
      *==============================================================*
      * Prompt for Customer Number                                   *
      *==============================================================*
      *
     C     @Prmpt        BegSr
      *
     C     CsrRrn        Chain     Sdata1                             21
      * If CURSOR ON Route FIELD THEN ALLOW PROMPT
     C                   If        (CSRFLD = 'PRMTYP')  AND
     C                             (CSRRCD = 'SDATA1 ')
     C
     C                   call      'WINPROMPT'
     C                   Parm      'UPTP      '  #FILE            10
     C                   Parm      '*LIBL    '   #LIB             10
     C                   Parm      'UIPPT    '   #FIELD           10
     C                   Parm      'UIDES    '   #FIELD1          10
     C                   Parm                    #RTNVAL         128
      * Did program return a number?
     C                   If        #RTNVAL > *BLANKS
     C                   Eval      PRMTYP   = #RTNVAL
     C                   EndIf
     C                   If        PRMTYP <> *Blanks
     C                   Eval      *IN60 = *On
     C                   Update    SData1
     C                   Eval      *IN60 = *Off
     C                   EndIf
     C                   Eval      RcdNbr = RcvRrn
     C                   EndIf

     C                   EndSr
     C
      *
      *========================*
      * *INZSR                 *
      *========================*
      *
     C     *INZSR        BegSr
     C                   move      *blanks       #title           50
     C                   move      *blanks       #titl2           50
     C                   Eval      #TITLE    = G#AlignCtr(E#CoName(1))
     C                   Eval      #TITL2    = 'Rubs Square Footage
Entry'
     C                   Eval      #TITL2    = G#ALignCtr(#TITL2)
      * Variable declarations
     C                   Eval      RcvRrn = 0
     C                   Eval      Rrn# = 0
     C                   Eval      Rrn#O = 0
     C                   Eval      Rrn#E = 16
     C                   Eval      Pg = 1
     C                   Eval      RcdNbr = 1
     C                   Eval      #No  = '0'
     C                   Eval      #Yes = '1'
     C                   Eval      #Error = #No
     C                   Eval      #First = #yes
      *
      * Key list for batch detail file RUBSQRDT00
     C     BdKey         Klist
     C                   Kfld                    RbRte
     C                   Kfld                    RbPrmTyp
      * Key list for batch detail file RUBSQRDT00
     C     BdKey1        Klist
     C                   Kfld                    RbRte
     C                   Kfld                    PrmTyp
      * Key list for batch detail file RUBSQRDT00
     C     BdKey2        Klist
     C                   Kfld                    RbRte
     C                   Kfld                    CtlSav
      *
     C                   EndSr

 

Michael Smith
iSeries.mySeries.


-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Phil Kestenbaum
Sent: Thursday, November 02, 2006 10:35 AM
To: RPG programming on the AS400 / iSeries
Subject: RE: Sfldsp problem


Can you post the code?

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Smith, Mike
Sent: Thursday, November 02, 2006 10:35 AM
To: rpg400-l@xxxxxxxxxxxx
Subject: Sfldsp problem

I have written a Data entry subfile.  First Dataentry subfile I have
written in years and years.  

On the SFLCTl is 1 field to enter a route.  
Upon entering the route and validating a subfile is displayed with any
existing records and empty subfile lines 

When F12 is entered the subfile display is turned off and only the
Subfile Control should be displayed.  This is where my problem is.  The
Subfile Display continues to show.  I have verified that the SFLDSP is
*off .  I am using the same indicator to control the headings on the
SFLCTL.  These  dissappear when F12 is selected, but the subfile does
not.  

Anybody encountered this before?

Michael Smith
iSeries.mySeries.


As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.