FAQ
FAQ102
FAQ202

The DDS for the FAQ file
      ****************************************************************
      *   ___             _    _     __ __             _    _        *
      *  | . > ___  ___ _| |_ | |_  |  \  \ ___  _ _ _| |_ <_>._ _   *
      *  | . \/ . \/ . \ | |  | . | |     |<_> || '_> | |  | || ' |  *
      *  |___/\___/\___/ |_|  |_|_| |_|_|_|<___||_|   |_|  |_||_|_|  *             
      *                                                              *
      *  A Physical file of FAQ data.                                *
      *                                                              *
      *   UTLFAQ10P                                                  *
      *                                                              *
      *   1/2008                                 booth@martinvt.com  *          
      ****************************************************************
                                            UNIQUE
                R RUTLFAQ10P
                  FAQSUBJECT    30          COLHDG('Subject:')
                  FAQQUEST      60          COLHDG('Question:')
                  FAQLINE      480          COLHDG('Answer:')

      * Sequence by Subject, then by Question.
                K FAQSUBJECT
                K FAQQUEST                                                      







The DDS for the index page of the FAQ

      ****************************************************************
      *   ___             _    _     __ __             _    _        *
      *  | . > ___  ___ _| |_ | |_  |  \  \ ___  _ _ _| |_ <_>._ _   *
      *  | . \/ . \/ . \ | |  | . | |     |<_> || '_> | |  | || ' |  *             
      *  |___/\___/\___/ |_|  |_|_| |_|_|_|<___||_|   |_|  |_||_|_|  *
      *                                                              *
      *  The screen for the FAQ Index board.                         *
      *                                                              *
      *   UTLFAQ20D                                                  *
      *                                                              *
      *   1/2008                                 booth@martinvt.com  *
      ****************************************************************
                                            DSPSIZ(24 80 *DS3)
                                            ERRSFL
                                            CF03 CF05 CF06 CF12
                R SFLA                      SFL
                  OPT            1   B 13  2
        41                                  DSPATR(ND PR)
                  FLD73         73   O 13  4
                  RECNBR         5S 0H
                  RRN            4S 0H
                  RECORDDS     600   H

                R FMT01                     SFLCTL(SFLA)
                                            SFLPAG(0008)
                                            SFLSIZ(&NBRREC)
                                            RTNDTA
                                            OVERLAY
        90                                  SFLDSP
        90                                  SFLDSPCTL
       N90                                  SFLCLR
        91                                  SFLEND(*SCRBAR *MORE)
                  NBRREC         5S 0P
                                        1  3'  ____                            -
                                                 __   __                       -
                                                   '
                                            COLOR(PNK)
                                        2  2'  / __/____ ___  ___ _ __ __ ___  -
                                            ___  / /_ / /__ __                 -
                                                    '
                                            COLOR(PNK)
                                        3  2' / _/ / __// -_)/ _ `// // // -_)/-
                                             _ \/ __// // // /                 -
                                                    '
                                            COLOR(PNK)
                                        4  2'/_/  /_/   \__/ \_, / \_,_/ \__//_-
                                            //_/\__//_/ \_, /                  -
                                                    '
                                            COLOR(PNK)
                                        5  2'                 /_/              -
                                                       /___/                   -
                                                    '
                                            COLOR(PNK)
                                        6  2'   ___         __            __  _-
                                            ___                  __   _        -
                                                    '
                                            COLOR(PNK)
                                        7  2'  / _ |  ___  / /__ ___  ___/ / / -
                                            __ \ __ __ ___  ___ / /_ (_)___   _-
                                            __   ___'
                                            COLOR(PNK)
                                        8  2' / __ | (_-< /  ''_// -_)/ _  / / -
                                            /_/ // // // -_)(_-<  __// // _ \ /-
                                             _ \ (_-<'
                                            COLOR(PNK)
                                        9  2'/_/ |_|/___//_/\_\ \__/ \_,_/  \__-
                                            _\_\\_,_/ \__//___/\__//_/ \___//_/-    
                                            /_//___/'
                                            COLOR(PNK)
                                       11  3'D=Delete  E=Edit  N=New Question  -
                                             V=View'
                                            COLOR(BLU)
                                       12  1'Opt                               -
                                                                               -
                                                      '
                                            DSPATR(UL)
                                            COLOR(BLU)
                R FOOTER
                                       22  2'                                  -
                                                                               -
                                                     '
                                            DSPATR(UL)
                                            COLOR(BLU)
                                       23  3'F3=Exit'
                                            COLOR(BLU)
                                         + 3'F5=Refresh'
                                            COLOR(BLU)
                                         + 3'F6=New Subject'
                                            COLOR(BLU)
                                         + 3'F12=Cancel'
                                            COLOR(BLU)                          







The RPG for the Index screen of the FAQ
      **********************************************************************
      *     ___             _    _     __ __             _    _            *
      *    | . > ___  ___ _| |_ | |_  |  \  \ ___  _ _ _| |_ <_>._ _       * 
      *    | . \/ . \/ . \ | |  | . | |     |<_> || '_> | |  | || ' |      *          
      *    |___/\___/\___/ |_|  |_|_| |_|_|_|<___||_|   |_|  |_||_|_|      *
      *                                                                    *
      *    A program to Display an Index Board of FAQs.                    *
      *                                                                    *
      *     UTLFAQ20R                                                      *
      *                                                                    *
      *     1/2008                                      booth@martinvt.com *
      **********************************************************************
     H COPYRIGHT('Booth Martin, All rights reserved.')

     FUTLFAQ20D cf   e             workstn
     F                                     SFILE(SFLA:RRN)
     FUTLFAQ10P if   e           k disk    INFDS(INFDS) BLOCK(*NO)

      * INFDS for database file.
     DINFDS            ds
     D DBRRN                 397    400B 0

     D wSavedSub       s                   like(FAQSUBJECT)
     D wSavedQuest     s                   like(FAQQUEST)

     D RecordDS      e ds                  extname(UTLFAQ10P)
     D SavedData       s                   like(RecordDS)
     D NewData         s                   like(RecordDS)

     D wNdx            s              4  0

      *  ..................................................

     C                   exsr      FillSfl
     C                   write     FOOTER
     C                   dou       *inlr
     C                   exfmt     FMT01
      * Select options:
     C                   select

      * F6=New Question
     C                   when      *inkf
     C                   clear                   RecordDS
     C                   call      'UTLFAQ30R'
     C                   parm      *zeros        RecNbr
     C                   parm                    RecordDS
     C                   parm      ' '           Opt

      * F5 = Refresh
     C                   when      *inke
     C                   exsr      FillSfl

      * F3 or F12 Exit
     C                   when      *inkl or *inkc
     C                   move      *on           *inlr

      * If not one of the above, then ....
     C                   other
      * Any changes?
     C                   for       wNdx = 1 to NbrRec
     C     wNdx          chain     SFLA
     C                   select
     C                   when      Opt = 'N'
     C                   clear                   FAQQuest
     C                   clear                   FAQLine
     C                   call      'UTLFAQ30R'
     C                   parm      *zeros        RecNbr
     C                   parm                    RecordDS
     C                   parm                    Opt
     C                   eval      Opt = ' '
     C                   update    SFLA
     C                   when      Opt > ' '
     C                   call      'UTLFAQ30R'
     C                   parm                    RecNbr
     C                   parm                    RecordDS
     C                   parm                    Opt
     C                   eval      Opt = ' '
     C                   update    SFLA
     C                   endsl
     C                   endfor
     C                   endsl

     C                   enddo
      *-------------------------------------------------------------------
      *--           Sub Routines                                        --
      *-------------------------------------------------------------------
     C     FillSfl       begsr
      * Clear subfile & screen, prepare to re-fill or fill:
     C                   eval      *IN45 = *off
     C                   eval      *IN90 = *off
     C                   clear                   SFLA
     C                   write     FMT01
     C                   eval      *IN90 = *ON
     C                   clear                   wSavedSub
     C                   clear                   wSavedQuest

      * Fill the subfile, if something there:
     C                   eval      RRN = 0
     C     *start        setll     UTLFAQ10P
     C                   read      UTLFAQ10P
      * Fill the subfile:
     C                   dow       not %eof
      *   If the Subject changes:
     C                   if        wSavedSub <> FAQSUBJECT
     C                   eval      wSavedSub = FAQSUBJECT
     C                   clear                   wSavedQuest
     C                   eval      Fld73 = x'32' + FAQSUBJECT
     C                   eval      RRN = RRN + 1
      *     Non-display Opt field
     C                   eval      *in41 = *on
     C                   write     SFLA
     C                   eval      *in41 = *off
     C                   endif
      * write the queation:
     C                   eval      Fld73 = '  - ' + FAQQUEST
     C                   eval      RRN = RRN + 1
     C                   write     SFLA
      * Get next FAQ record
     C                   read      UTLFAQ10P
     C                   enddo
      * If subfile is empty, make a line
     C                   if        RRN = *zero
     C                   eval      RRN = 1
     C                   eval      Fld73 = 'FAQ file is empty'
     C                   write     SFLA
     C                   endif
      * Save the number of records in the subfile:
     C                   eval      NbrRec = RRN
     C                   eval      *in91 = *off
     C                   if        NbrRec > 6
     C                   move      *on           *in91
     C                   end
     C                   endsr                                







DDS for the viewing/editing of a FAQ

      ****************************************************************
      *   ___             _    _     __ __             _    _        *
      *  | . > ___  ___ _| |_ | |_  |  \  \ ___  _ _ _| |_ <_>._ _   *
      *  | . \/ . \/ . \ | |  | . | |     |<_> || '_> | |  | || ' |  *
      *  |___/\___/\___/ |_|  |_|_| |_|_|_|<___||_|   |_|  |_||_|_|  *               
      *                                                              *
      *  The screen for the FAQ Detail Subject/Question.             *
      *                                                              *
      *   UTLFAQ20D                                                  *
      *                                                              *
      *   1/2008                                 booth@martinvt.com  *
      ****************************************************************
                                            DSPSIZ(24 80 *DS3)
                                            REF(UTLFAQ10P)
                                            ERRSFL
                                            CF03 CF12
                R FMT01
                                            CF05 CF06 CF13 CF24
                                        1  3'  ____                            -
                                                 __   __                       -
                                                   '
                                            COLOR(TRQ)
                                        2  2'  / __/____ ___  ___ _ __ __ ___  -
                                            ___  / /_ / /__ __                 -
                                                    '
                                            COLOR(TRQ)
                                        3  2' / _/ / __// -_)/ _ `// // // -_)/-
                                             _ \/ __// // // /                 -
                                                    '
                                            COLOR(TRQ)
                                        4  2'/_/  /_/   \__/ \_, / \_,_/ \__//_-
                                            //_/\__//_/ \_, /                  -
                                                    '
                                            COLOR(TRQ)
                                        5  2'                 /_/              -
                                                       /___/                   -
                                                    '
                                            COLOR(TRQ)
                                        6  2'   ___         __            __  _-
                                            ___                  __   _        -
                                                    '
                                            COLOR(TRQ)
                                        7  2'  / _ |  ___  / /__ ___  ___/ / / -
                                            __ \ __ __ ___  ___ / /_ (_)___   _-
                                            __   ___'
                                            COLOR(TRQ)
                                        8  2' / __ | (_-< /  ''_// -_)/ _  / / -
                                            /_/ // // // -_)(_-<  __// // _ \ /-
                                             _ \ (_-<'
                                            COLOR(TRQ)
                                        9  2'/_/ |_|/___//_/\_\ \__/ \_,_/  \__-
                                            _\_\\_,_/ \__//___/\__//_/ \___//_/-
                                            /_//___/'
                                            COLOR(TRQ)
                                       11  5'Subject.:'
                                            COLOR(BLU)
                  FAQSUBJECTR        B 11 15CHECK(LC)
       N34                                  DSPATR(PR)
        34                                  DSPATR(HI UL)
                                       12  5'Question:'
                                            COLOR(BLU)
                  FAQQUEST  R        B 12 15CHECK(LC)
                                            COLOR(YLW)
       N34                                  DSPATR(PR)
        34                                  DSPATR(HI UL)
                  FAQLINE      480A  B 14 15CNTFLD(060)
                                            CHECK(LC)
                                            WRDWRAP
       N34                                  DSPATR(PR)
        34                                  DSPATR(HI UL)
                                       23  3'F3=Exit'
                                            COLOR(BLU)
                                         + 3'F5=Refresh'
                                            COLOR(BLU)
                                         + 3'F6=Create'
                                            COLOR(BLU)
                                         + 3'F13=Delete'
                                            COLOR(BLU)
       N34                               + 3'F24=Unprotect'
                                            COLOR(BLU)
        34                               + 3'F24=Protect'
                                            COLOR(BLU)
                R FMT04
                                            WINDOW(10 30 6 15 *NOMSGLIN)
                                            CF10
                                        1  1' Choosing F10  '
                                            DSPATR(RI)
                                        2  1' will delete   '
                                            DSPATR(RI)
                                        3  1' this record   '
                                            DSPATR(RI)
                                        4  1' forever.      '
                                            DSPATR(RI)
                                        5  1'               '
                                            DSPATR(RI)
                                        6  1'               '
                                            DSPATR(RI)
                R FMT05
                                            WINDOW(10 30 6 15 *NOMSGLIN)
                                        1  1'               '
                                            DSPATR(RI)
                                        2  1' This FAQ has  '
                                            DSPATR(RI)
                                        3  1' just been     '
                                            DSPATR(RI)
                                        4  1' changed at    '
                                            DSPATR(RI)
                                        5  1' another       '
                                            DSPATR(RI)
                                        6  1' Work Station  '
                                            DSPATR(RI)
                R FMT06
                                            WINDOW(10 30 6 15 *NOMSGLIN)
                                        1  1' The system    '
                                            DSPATR(RI)
                                        2  1' can not accept'
                                            DSPATR(RI)
                                        3  1' a blank       '
                                            DSPATR(RI)
                                        4  1' Subject line  '
                                            DSPATR(RI)
                                        5  1' and Question. '
                                            DSPATR(RI)
                                        6  1'               '
                                            DSPATR(RI)







The RPG for the viewing/editing of a FAQ
      **********************************************************************
      *     ___             _    _     __ __             _    _            *
      *    | . > ___  ___ _| |_ | |_  |  \  \ ___  _ _ _| |_ <_>._ _       *
      *    | . \/ . \/ . \ | |  | . | |     |<_> || '_> | |  | || ' |      *
      *    |___/\___/\___/ |_|  |_|_| |_|_|_|<___||_|   |_|  |_||_|_|      *             
      *                                                                    *
      *    A program to Enter/update/view FAQs.                            *
      *                                                                    *
      *     UTLFAQ30R                                                      *
      *                                                                    *
      *     1/2008                                      booth@martinvt.com *
      **********************************************************************
     H COPYRIGHT('Booth Martin, All rights reserved.')

     FUTLFAQ30D cf   e             workstn
     FUTLFAQ10P uf a e             disk
      *  ..................................................

     D RecordDS      e ds                  ExtName(UTLFAQ10P)
     D wSavedData      s                   Like(RecordDS)
     D wNewData        s                   Like(RecordDS)

     D RecNbr          s              5  0
     D Opt             s              1
      *  ..................................................
     C     *entry        plist
     C                   parm                    RecNbr
     C                   parm                    RecordDS
     C                   parm                    Opt

      * Delete record
     C                   if        Opt = 'D'
     C                   exsr      DeleteRecord
     C                   eval      wSavedData = RecordDS
     C                   endif

     C                   dow       not *inkc and not *inkl
      * New record:
     C                   if        FAQQUEST = *blanks
     C                   eval      *in34 = *on
     C                   endif
      * Clear screen, prepare to re-fill or fill:
     C                   exfmt     fMT01

     C                   select
     C                   when      *inkc
     C                   when      *inke
     C                   eval      RecordDS = wSavedData
     C                   when      *inkf
     C                   eval      RecNbr = *zeros
     C                   exsr      CreateRecord
      * Delete record
     C                   when      *inkm = *on or Opt = 'D'
     C                   eval      Opt = *blank
     C                   exsr      DeleteRecord
      * F24 = allow/unallow editing:   34 on = allow editing
     C                   when      *inky
     C                   if        *in34
     C                   eval      *in34 = *off
     C                   else
     C                   eval      *in34 = *on
     C                   endif
     C                   when      wSavedData <> RecordDS
     C                   exsr      UpdateRecord
     C                   endsl
     C                   enddo
     C                   eval      *inlr = *on
      *-------------------------------------------------------------------
      *--         Sub Routines                                          --
      *-------------------------------------------------------------------
     C     CreateRecord  begsr
     C                   eval      *in34 = *on
     C                   clear                   FAQQUEST
     C                   clear                   FAQLINE
     C                   eval      wNewData   = RecordDS
     C                   eval      wSavedData = RecordDS
     C                   endsr
      *-------------------------------------------------------------------
     C     DeleteRecord  begsr
     C                   write     Fmt01
     C                   exfmt     Fmt04
     C                   if        *inkj
     C     RecNbr        delete    UTLFAQ10P
     C                   end
     C                   eval      *inkc = *on
     C                   endsr
      *-------------------------------------------------------------------
     C     UpdateRecord  BegSr
      * must have subject and question:
     C                   select
     C                   when      FAQSubject = *blanks
     C                   eval      FaqSubject = 'There must be a subject'
     C                   when      FAQQuest   = *blanks
     C                   eval      FaqQuest = 'There must be a question'
     C                   other
     C                   eval      wNewData =  RecordDS
     C                   select
     C                   when      RecNbr  = *zeros
     C                   write(e)  RUTLFAQ10P
     C                   eval                   wSavedData = RECORDDS
     C                   other
     C     RecNbr        chain (e) UTLFAQ10P
     C                   select
     C                   when      not %found

     C                   when      RecordDS <> wSavedData
      * then record changed at another workstation:
     C                   exfmt     Fmt05
     C                   other
     C                   eval      RecordDS  = wNewData
     C                   eval      wSavedData = wNewData
     C                   update    RUTLFAQ10P
     C                   endsl

     C                   endsl
     C                   endsl
     C                   endsr
      *-------------------------------------------------------------------