Learn from sources
       Member CAPITALS in CGIDEV2 / QRPGLESRC

       *=====================================================================
       *  RPG ILE MODULE CGIDEV2/CAPITALS
       *
       *  CRTBNDRPG PGM(CGIDEV2/CAPITALS) SRCFILE(CGIDEV2/QRPGLESRC) DFTACTGRP(*NO)
       *            ACTGRP(CAPITALS) DBGVIEW(*SOURCE)
       *  To execute this program,
       *  enter the following in your WEB browser command line:
       *    http://.../cgidev2p/capitals.pgm
       *
       *=====================================================================
       /copy CGIDEV2/qrpglesrc,hspecs
       /copy CGIDEV2/qrpglesrc,hspecsbnd
      FCAPITALS  if   e           k disk    usropn
      F                                     extfile('CGIDEV2/CAPITALS')
       *=====================================================================
       * Includes to be used in all CGIs
       *=====================================================================
       /copy CGIDEV2/qrpglesrc,prototypeb
       /copy CGIDEV2/qrpglesrc,usec
       /copy CGIDEV2/qrpglesrc,variables3
       *--------------------------------------------------------------------
       *  Variables to receive input string parameters
       *--------------------------------------------------------------------
      D xcountry        s                   like(CAPCTR)
      D xavailWidth     s              7
      D xavailHeigth    s              7
      D xavailWidthN    s             10i 0
      D xavailHeigthN   s             10i 0
       *--------------------------------------------------------------------
       *  Other program variables and constants
       *--------------------------------------------------------------------
       * External HTML
      D extHtml         s           2000    inz('/cgidev/html/capitals.txt')
       * Indicators for GetHtmlIfsMult subprocedure
      D IfsMultIndicators...
      d                 ds
      D  NoErrors                       n
      D  NameTooLong                    n
      D  NotAccessible                  n
      D  NoFilesUsable                  n
      D  DupSections                    n
      D  FileIsEmpty                    n
       *
      D googleMapInd    s               n
      D googleMapW      s             10i 0
      D googleMapH      s             10i 0
       *=====================================================================
       * Main line
       *=====================================================================
       /free
 
            // Load external HTML
            IfsMultIndicators=getHtmlIfsMult(%trim(exthtml):'«as400»');
 
            // Get browser input
            nbrVars=zhbgetinput(savedquerystring:qusec);
            // Parse input variables
            xcountry=zhbGetVar('xcountry');
            xavailWidth=zhbGetVar('availWidth');        // available screen width
            xavailHeigth=zhbGetVar('availHeight');      // available screen size
            if xavailWidth«»' ' and xavailHeigth«»' ';
               xavailWidthN=c2n2(%trim(xavailWidth));   // convert available screen width  to numeric
               xavailHeigthN=c2n2(%trim(xavailHeigth)); // convert available screen height to numeric
            endif;
 
            // If needed, open database file
            if not %open(CAPITALS);
               open CAPITALS;
            endif;
 
            // If latitude and longitude available for the capital city of country "xcountry",
            // set "googleMapInd" *on
            googleMapInd=*off;
            if xcountry«»' ';
               chain xcountry caprcd;
               if %found and caplat«»' ' and caplon«»' ';
                  googleMapInd=*on;
               endif;
            endif;
 
            // Start output HTML
            if googleMapInd=*on;
               updhtmlvar('onload':'onLoad=GoogleMap()'); // «body» onLoad to run google map function
            else;
               updhtmlvar('onload':'onLoad=avSizes()');   // «body» onLoad to retrieve page sizes
            endif;
            wrtsection('top');
 
            // Send out the dropdown list
            capctr=*loval;
            setll capctr caprcd;
            read caprcd;
            dow not %eof;
                updhtmlvar('ycountry':capctr);
                if capctr=xcountry;
                   updhtmlvar('selected':'selected');  // position the dropdown list on this entry
                   updhtmlvar('capctr':capctr);
                   updhtmlvar('capcity':capcity);
                   updhtmlvar('caplat':caplat);
                   updhtmlvar('caplon':caplon);
                else;
                   updhtmlvar('selected':' ');
                endif;
                wrtsection('selectRow');
                read caprcd;
            enddo;
            wrtsection('selectEnd');
 
            // Send out information about the capital city of the selected country
            if xcountry«»' ';
               wrtsection('capital');
            endif;
 
            // If latitude and longitude available for the capital city of country "xcountry",
            // display the google map for this capital city
            if googleMapInd=*on;
               if xavailWidthN«xavailHeigthN;     // if the device looks like a phone, ...
                  googleMapW=xavailHeigthN-250;
                  googleMapH=xavailWidthN -100;
               else;
                  googleMapW=xavailWidthN -200;
                  googleMapH=xavailHeigthN-150;
               endif;
               if googleMapW«0;
                  googleMapW=200;
               endif;
               if googleMapH«0;
                  googleMapH=200;
               endif;
               updhtmlvar('googleMapWidth' :%char(googleMapW));
               updhtmlvar('googleMapHeigth':%char(googleMapH));
               wrtsection('googleMap');
            endif;
 
            // End HTML
            wrtsection('bottom');
 
            // Send out the HTML buffer
            wrtsection('*fini');
 
            // End program
            return;
0.018 sec.s