midrange.com code scratchpad
Name:
Sample Program RPG and DDS that causes CPF5192 error message
Scriptlanguage:
Plain Text
Tabwidth:
4
Date:
07/20/2009 04:05:30 am
IP:
Logged
Description:
The following is a very basic bit of RPG and DDS that reproduces a CPF5192 error.
Code:
  1. Program1:
  2.  
  3.      FPROGRAM1D CF   E             WORKSTN UsrOpn
  4.      F                                        InfDS(InfDS)
  5.  
  6.      D F03             C                   CONST(X'33')
  7.      D F12             C                   CONST(X'3C')
  8.  
  9.      D InfDS           DS
  10.      D  Key                  369    369
  11.  
  12.      D Boolean         S              1N
  13.  
  14.      D DisplayWindow   PR                  Like(Boolean)
  15.      D Program1        PR
  16.  
  17.      D Program1        PI
  18.  
  19.       /FREE
  20.  
  21.        If Not %Open(PROGRAM1D);
  22.          Open PROGRAM1D;
  23.        EndIf;
  24.  
  25.        DspTitle = 'Sample Program - CPF5192 error';
  26.  
  27.        // Write the Display header and footer to the screen
  28.        Write Header;
  29.  
  30.        DisplayWindow();
  31.  
  32.        // Keep running until the user decides to quit/cancel.
  33.        DoU (Key = F12) or (Key = F03);
  34.          ExFmt Footer;
  35.        EndDo;
  36.  
  37.        If %Open(PROGRAM1D);
  38.          Close PROGRAM1D;
  39.        EndIf;
  40.  
  41.        Return;
  42.  
  43.       /END-FREE
  44.  
  45.  
  46. SrvPgm2:
  47.  
  48.      H NOMAIN
  49.      FSRVPGM2D  CF   E             WORKSTN UsrOpn
  50.      F                                     InfDS(InfDS)
  51.  
  52.      D F03             C                   CONST(X'33')
  53.      D F12             C                   CONST(X'3C')
  54.      D ENTER           C                   CONST(X'F1')
  55.  
  56.      D InfDS           DS
  57.      D  Key                  369    369
  58.  
  59.      D Boolean         S              1N
  60.  
  61.      D DisplayWindow   PR                  Like(Boolean)
  62.  
  63.      P DisplayWindow   B                   Export
  64.  
  65.       // Procedure Interface Definition (Parameters)
  66.      D DisplayWindow   PI                  Like(Boolean)
  67.  
  68.       // Return Variable
  69.      D isDisplayed     S                   Like(Boolean) Inz(*Off)
  70.  
  71.       /FREE
  72.  
  73.        If Not %Open(SRVPGM2D);
  74.          Open SRVPGM2D;
  75.        EndIf;
  76.  
  77.        StatusMsg = 'Status Message reporting an event ie. Can not Open File';
  78.  
  79.        Write StatWindow;
  80.        Write StatFooter;
  81.        ExFmt StatDsply;
  82.  
  83.        isDisplayed = *On;
  84.  
  85.        If %Open(SRVPGM2D);
  86.           Close SRVPGM2D;
  87.        EndIf;
  88.  
  89.        Return isDisplayed;
  90.  
  91.       /END-FREE
  92.      P                 E
  93.  
  94.  
  95. Program1D DDS:
  96.  
  97.      A                                      DSPSIZ(27 132 *DS4)
  98.      A                                      CA03
  99.      A                                      CA12
  100.      A          R HEADER
  101.      A                                      SLNO(1)
  102.      A                                      CLRL(2)
  103.      A            DSPTITLE     117A  O  1 15
  104.      A          R FOOTER
  105.      A                                      SLNO(26)
  106.      A                                      CLRL(2)
  107.      A            PGMBTN         2Y 0I  1 19PSHBTNFLD((*GUTTER 15))
  108.      A                                      PSHBTNCHC(1 'F3=Exit' CA03)
  109.      A                                      PSHBTNCHC(3 'F12=Cancel' CA12)
  110.  
  111.  
  112. SrvPgm2D DDS:
  113.  
  114.      A                                      DSPSIZ(27 132 *DS4)
  115.      A                                      CA12
  116.      A          R STATWINDOW
  117.      A                                      WINDOW(7 41 12 50)
  118.      A                                      WDWTITLE((*TEXT 'Warning!') *TOP +
  119.      A                                      *CENTER)
  120.      A                                      KEEP
  121.      A          R STATFOOTER
  122.      A                                      WINDOW(STATWINDOW)
  123.      A            WNDSTATBTN     2Y 0I 11 19PSHBTNFLD
  124.      A                                      PSHBTNCHC(1 'ENTER=OK' ENTER)
  125.      A          R DUMMY
  126.      A                                      ASSUME
  127.      A                                  2  1' '
  128.      A          R STATDSPLY
  129.      A                                      WINDOW(STATWINDOW)
  130.      A                                      OVERLAY
  131.      A                                      KEEP
  132.      A            STATUSMSG    384   B  2  2CNTFLD(48)
  133.      A                                      DSPATR(PR)
  134.  
  135.  
  136. Both DDS files are compiled with RSTDSP set to *YES.
  137.  
  138. The program can be compiled with:
  139.  
  140. CRTSRVPGM SRVPGM(<LIBRARY>/SRVPGM2) EXPORT(*ALL)
  141.  
  142. CRTPGM PGM(<LIBRARY>/PROGRAM1) MODULE(<LIBRARY>/PROGRAM1) BNDSRVPGM(<LIBRARY>/SRVPGM2) ACTGRP(PROGRAM1)
  143.  
  144. Notes:
  145. The program crashes on the statement - ExFmt StatDsply; in the DisplayWindow() procedure. 
  146. The error will not occur when running in Debug mode. And:
  147.  
  148. Replacing:
  149.       Write Header;
  150.        DisplayWindow();
  151.  
  152. with:
  153.       Write Header;
  154.       ExFmt Footer;
  155.       DisplayWindow();
  156.  
  157. stops the error from occuring.
  158.   
© 2004-2019 by midrange.com generated in 0.006s valid xhtml & css