Part II of The Pattern to Good ILE. with RPG IV. Scott Klement
|
|
|
- Augusta Copeland
- 10 years ago
- Views:
Transcription
1 Part II of The Pattern to Good ILE with RPG IV Presented by Scott Klement , Scott Klement There are 10 types of people in the world. Those who understand binary, and those who don t. Objectives Of This Session Demonstrate a CGIDEV2 Web front-end to the RPG business logic described in part I. Describe how ILE business logic can be extended to non-ile languages through SQL Demonstrate a web-front end written in PHP This is part II. Familiarity with the code presented in part I of this series is useful in understanding this talk. (But a summary will be provided.) 2
2 Summary Of Part I In part I of this series, I talked about: We all develop "patterns" in our minds, and use them when we write code. ILE concepts don't fit well with our old pattern. To use them effectively, a new pattern must be learned. A new pattern should not only fit well with ILE concepts, but should produce code that's easier to test, maintain, and re-use. Scott has noticed a 40% productivity improvement using his new pattern. Coding takes a little longer. Testing and debugging takes far less time, and is easier. Code is easy to re-use, making future projects faster. New pattern involves: Separate program into Business Logic (Model), User Interface (View), and Program Flow (Controller) components, and keep them distinct. Encapsulation, Stateless Business Logic, Name spaces, SOA. 3 Re-Using the Pattern Following the pattern means it's possible to replace one part of the application without changing the others. Model: When your business rules change, changing the model gives you new business rules without needing to change the other parts. "Agility" You may also decide to store your business logic and databases on another server. By replacing the Model, you can do that without any upheaval to the user. Controller: If you change the view, you'll almost certainly also have to change the controller, since different UI paradigms require a different program flow. Also, you might use a different controller while testing your routines. View: Perhaps the hottest topic today: Put a different UI on an existing app, or have multiple UIs for a single app. This is the focus of this presentation. 4
3 A Traditional View 5 The Web View (1 of 2) 6
4 The Web View (2 of 2) 7 Statelessness of Web Apps Each time you click a button, or follow a link, in an web application, the browser creates a new request to the HTTP server. In the case of a web app that tells the HTTP server to run a program. It's basically a CALL PGM(MYWEBPGM) command. The program is passed all of the input (form) information. The program processes this input, and writes out a new web page. When the program ends, the page is displayed in the browser. The only time your program runs is in-between the time a link is clicked, and the time it takes to display the next screen. This means that your program cannot control the flow of screens like we are used to in traditional RPG. Instead, the browser controls them, and a new call is made with every button press, or click of a link. 8
5 Statelessness Challenges Due to the "statelessness" of having a separate, individual call for each click, the following challenges have to be overcome: Your program doesn't know if the user will click the next click, or hit the "back button", or close the browser. Since you may have many users clicking links at the same time, you never know if the next call of your program will be from the same user running the same "job" as the last call. This means you can't remember variable values from call to call. In fact, you can't (reliably) set up anything in a previous call that will be used in subsequent calls. 9 Stateless Pgm Flow (Controller) First call to program: Shows the screen for order/customer number. Sets a hidden parm on that page (action=loadheader) Program ends, and user sees page. Second call to program: Sees that action is LoadHeader If order number given, calls ORDER_loadHeader() to load order into memory. If no order number, uses customer number to create new order by calling ORDER_new() Creates HTML page with order details, and action=edititems Program ends, user sees page. etc 10
6 CGIDEV2 CGIDEV2 is not a programming language. It's a toolkit from IBM to simplify the job of writing a web application in native ILE RPG. Runs in the native, free HTTP server provided with i5/os (Apache or Original) It provides routines: To make it easier to output HTML to a browser. To make it easier to read input from fields filled in on a web page. Writing HTML Output: Divide your HTML into sections (like "record formats" in DDS) Insert replacement values (like "fields" in DDS) RPG code can insert replacement values, then write the sections Sections can be written repeatedly, to repeat elements that go out to the browser. These examples use <!-- $SECTIONNAME$ --> and <!-- %REPVAL% --> 11 CGIDEV2 Controller GetHTMLIFS('/acmecgi/acmecgir4.html': '<!-- $':'$ -- >':'<!-- %':'% -->'); zbhgetinput(savedqrystr: QUSEC); Action = zhbgetvar('action'); if (action='' or action=*blanks); action='askordcust'; endif; select; when action = 'AskOrdCust'; AskOrdCust(); when action = 'EditHeader'; LoadHeader(); EditHeader(); when action = 'EditItems'; LoadItems(); EditItems(); when action = 'PlaceOrder'; SaveOrder(); ShowResult(); endsl; return; all values are character strings Load HTML template into CGIDEV2's memory. Specify what to search for for sections/variables. ZhbGetInput() loads all variables ("parameters") from browser into CGIDEV2's memory. ZhbGetVar() returns one variable from CGIDEV2 to your program Each time the program is called, action is set to a different value to specify which screen we're handling 12
7 CGIDEV2 View (HTML) 1 of 2 <!-- $Header$ --> Content-type: text/html <!-- Standard Header --> <html> <head> <title>acme Widgets Order Entry</title> </head> <body> <form method="post" action="/cgi-bin/acmecgir4.pgm"> Entire section is written from RPG with wrtsection('header') <form> tag specifies the program to call when user clicks "OK" button. <input type="hidden" name="idnum" value="<!-- %sessionid% -->" /> <table border="0" width="800" bgcolor="blue"> <tr><td align="center"> <p><b><font color="white">acme Widgets Order Entry</font></b></p> <br> </td></tr> <!-- $AskOrdCust$ --> <!-- Customer/Order No Selection --> <tr><td> <input type="hidden" name="action" value="editheader" /> Variables are replaced with updhtmlvar('sessionid': SomeVal) 13 CGIDEV2 View (HTML) 2 of 2 </body> </html> <table border="0" width="100%" bgcolor="lightblue"> <tr> <td align="right">customer Number:</td> <td align="left"><input type="text" name="cust" maxlength="6" width="6" /></td> </tr> <tr> <td align="right">-- OR --</td> <td align="left"> </td> </tr> <tr> <td align="right">order number to change:</td> <td align="left"><input type="text" name="order" maxlength="10" width="10" /></td> </tr> <tr> <td align="right"><input type="submit" value=" Ok "></td> <td> </td> </tr> </table> </form> </td></tr> </table> The first two <input> tags produce the blanks for the order and customer. The last <input> is the OK button. 14
8 CGIDEV2 View (RPG code) P AskOrdCust B D AskOrdCust PI /free wrtsection('header'); wrtsection('askordcust'); wrtsection('bottom'); wrtsection('*fini'); /end-free P E On the next call, the program starts by loading the user's order/cust P LoadHeader D LoadHeader B PI These variables come from the <input> tags in the HTML. /free order = zhbgetvar('order'); cust = zhbgetvar('cust'); errmsg = *Blanks; continued on next slide 15 CGIDEV2 Combined View/Controller code continued from previous slide if ( order<>'' and order<>*blanks ); if ORDER_loadHeader(Order: Hdr) = *off; errmsg = ORDER_error(); endif; else; if ORDER_new(Cust: Hdr) = *off; errmsg = ORDER_error(); endif; endif; Since this is an ILE RPG program, it can call the procedures in the MODEL directly as ILE procedures! Non-ILE languages will wrtsection('header'); have to jump through an if errmsg <> *blanks; extra hoop or two (as you'll updhtmlvar('errormsg': ORDER_error() ); see later.) wrtsection('error'); else; updhtmlvar('shipaddr1': Hdr.ShipTo.Name); updhtmlvar('shipaddr2': Hdr.ShipTo.Addr1);... copy all other needed fields... wrtsection('editheader'); endif; wrtsection('bottom *fini'); /end-free P E 16
9 A Note About CGI Web programming with CGI has gained a bad reputation in today's world. Here's why: Interpreting the input from the browser is complex. The output HTML has to be coded into your program You must manually escape your output data to be valid in HTML. A new "process" (or "job" in OS/400 terminology) must be launched for each call to your program. Unfortunately, this reputation has somehow spread to CGIDEV2 on i5/os. CGIDEV2 is not CGI programming! Rather, CGIDEV2 prevents you from having to do the low-level work that would be required in traditional CGI. It takes care of interpreting the data from the browser, so you don't have to. It lets you keep your HTML outside of your program code It takes care of escaping output for you. And, on i5/os, the HTTP server has NEVER required starting a new process for each call to the program! You can load your program into an ILE activation group so that it remains in memory. In that case, subsequent calls are INCREDIBLY fast, because all you're doing is calling a routine in memory. Therefore, CGIDEV2 should not be thought of as "CGI programming." 17 Does CGIDEV2 Have a Future? CGIDEV2 is free software from IBM, it can be downloaded from the IBM Systems and Technology Group (STG) at the following link: There has been much controversy about whether IBM will continue to support CGIDEV2? Some say that IBM intentionally ignores CGIDEV2 in hopes of selling more of their WebSphere products? (But I don't know if this is true?) There are more than 20,000 shops using CGIDEV2, and it's my opinion that if IBM ever stops providing it, someone else (possibly me!) will come out with an open source toolkit that's compatible. The other big problem with CGIDEV2 is the difficulty finding developers. When you need to hire a new developer, you usually have to hire someone with RPG expertise, and train them in CGIDEV2. It's hard to find experienced individuals. For these reasons, some folks think it's a good idea to use a different tool for web development. 18
10 Why PHP? In my shop, we primarily use RPG/CGIDEV2 for web development, and are very happy with it. However, for those who would prefer an alternative, I suggest PHP: PHP is the #1 language for web development, worldwide. PHP is the #5 programming language (for all disciplines) according to the Sept 2008 TIOBE index (behind Java, C, C++ and Visual Basic). source: PHP is quickly growing in the IBM i community. Currently in 4th place behind RPG, Cobol and Java. (It has already surpassed C and Net.Data on the i) It's very easy to find PHP programmers to hire. It's very easy to find PHP code samples on the web. PHP is extremely easy to learn. PHP is free/open-source. However, PHP is not an ILE language. How do you call the RPG Model from PHP? 19 Reusing the Model from Non-ILE Apps As ILE objects, service programs can only be called from other ILE code, right? Wrong. Here are a few ways that you can call a service program from a non-ile language: PHP and Java have toolboxes for calling IBM i software directly. Web Services External Stored Procedures (SQL) my preference! Stored procedures are callable from just about anywhere:.net, ASP, Java, PHP, NET.DATA, Visual Basic, C/C++, even Microsoft Office! Can be on the same machine, or different machine (via ODBC or JDBC) I always write a separate ILE sub procedure to be called from the stored procedure never call the "regular" ILE procedure directly. This stored procedure interface will call the "regular" routine, but will do some massaging of the data. (I call this a "wrapper") Why use a wrapper? Result sets for output parameters (Meta data for returned variables) Enables ILE to call directly Enables a façade over the error handling 20
11 Configuring Stored Procedure in SQL To define the stored procedure to SQL so that SQL statements can use it, and it knows where to find the service program, etc, run the create procedure statement like this (one-time): CREATE PROCEDURE ORDER_CHECKPRICE( IN CustNo CHAR(10), IN ItemNo CHAR(8), IN Price DECIMAL(9,2) ) LANGUAGE RPGLE NOT DETERMINISTIC CONTAINS SQL EXTERNAL NAME 'SCOTTLIB/ORDERR4(ORDER_CHECKPRICE_SP)' PARAMETER STYLE GENERAL; The code, above, says: When CALL ORDER_CHECKPRICE is run from SQL call the ORDER_CHECKPRICE_SP routine in the ORDERR4 service program in SCOTTLIB Pass the following parameters: o CustNo, as 10A o ItemNo, as 8A o Price as 9P 2 21 Calling SQL Procedure (1 of 2) Now the procedure can be called from an SQL statement like this one: Again, this statement can be run from anywhere you can run SQL statements. In this example, I'm running it from iseries Navigator's Run SQL Scripts which is a great place to test your Model code to make sure it's solid before you begin writing your controller/view. 22
12 Calling SQL Procedure (2 of 2) Now the procedure can be called from an SQL statement like this one: Result sets can be used to return multiple rows of information, which is great when you need to return lots of stuff, such as a list of items, quantities and prices on an order. 23 Sample Stored Procedure Wrapper P ORDER_checkPrice_sp... P B export D ORDER_checkPrice_sp... D PI D CustNo 8a const D ItemNo 10a const D Price 9p 2 const D Result7 ds qualified occurs(1) D MsgId 10i 0 inz D Msg 80a varying inz /free %occur(result7) = 1; if ( Order_CheckPrice(CustNo: ItemNo: Price) = *OFF); Result7.Msg = ORDER_error(Result7.MsgID); endif; /end-free C/exec SQL set Result sets Array :Result7 for 1 Rows C/end-exec P E Input data comes from SQL as parameters. The information in this DS (field names, sizes, data types) will be communicated as "meta data" in the result set. Callers can use that information Calls the "regular" routine and the error message routine so there's no duplication of code still just one place to change rules. Returns the output data to SQL as a result set. 24
13 Extending the Binder Language STRPGMEXP SIGNATURE('ORDERR4 ver 1.00') EXPORT SYMBOL(ORDER_new) #1 EXPORT SYMBOL(ORDER_loadHeader) #2 EXPORT SYMBOL(ORDER_loadItems) #3 EXPORT SYMBOL(ORDER_saveHeader) #4 EXPORT SYMBOL(ORDER_saveItem) #5 EXPORT SYMBOL(ORDER_checkItem) #6 EXPORT SYMBOL(ORDER_checkPrice) #7 EXPORT SYMBOL(ORDER_checkQuantity) #8 EXPORT SYMBOL(ORDER_error) #9 EXPORT SYMBOL(ORDER_new_sp) #10 EXPORT SYMBOL(ORDER_loadHeader_sp) #11 EXPORT SYMBOL(ORDER_loadItems_sp) #12 EXPORT SYMBOL(ORDER_saveHeader_sp) #13 EXPORT SYMBOL(ORDER_saveItem_sp) #14 EXPORT SYMBOL(ORDER_checkItem_sp) #15 EXPORT SYMBOL(ORDER_checkPrice_sp) #16 EXPORT SYMBOL(ORDER_checkQuantity_sp) #17 ENDPGMEXP Remember that bound procedures from a srvpgm are called "by number". I did not change the signature so there will be no need to re-compile or re-bind existing programs. The new procedures are added at the end, so none of the previously used numbers has changed everything remains backward compatible! 25 PHP PHP is a script language very much like the others used for writing Unix shell scripts (Bourne Shell, Korn Shell, Perl, QShell, etc). However, it was designed with a strong focus on being particularly suited for web programming. An interpreted (non-compiled) script language. Runs under Apache, but in a separate (PASE) instance. It provides: Arrays (automatically populated) containing input from the browser. A very easy means of writing out HTML code. Hundreds of built-in functions. Thousands of additional functions (added as an extension) Syntax: Any data typed into a PHP document is assumed to be HTML output that will be sent, as-is, to the browser. Anything insider <?php and?> delimiters is PHP program code, and will be run, and it's output will be sent to the browser. Anything that starts with $ (dollar sign) is considered a variable. 26
14 PHP "Hello World" To write PHP, you can embed it into the middle of an HTML document. Anything outside of the <?php and?> tags is written to the browser as-is. The stuff between those tags is your PHP program code. <html> <body> <?php // You can put any PHP code here. echo "Hello World"; $info='yes!';?> <p>nice day, isn't it? <?php echo $info;?></p> </body> </html> 27 PHP's Fancy Arrays PHP has very powerful support for arrays. It's one of the nicer features of the language. Arrays in PHP are numbered from 0 (whereas RPG is numbered from 1) PHP Code $var = $myarray[0]; $foo = $myarray[1]; RPG equivalent var = myarray(1); foo = myarray(2); PHP has something called "associated arrays" that let you associate array values with words instead of numbers. PHP code RPG equivalent (but, RPG requires two related arrays or a table) $var = $mysales['january']; x = %lookup('january': mymonths); var = mysales(x); Unlike RPG, PHP uses a sort of a "keyed index" on it's array, much the way that database files work, except it's entirely in memory. That makes array lookups very fast and efficient. PHP programmers use arrays a lot. They work well both as an array, and also for situations where an RPGer might typically use a data structure. 28
15 PHP Controller <?php isset($_post['action'])? $action=$_post['action'] : $action="askcustord"; switch ($action) { case "AskCustOrd": // first call AskCustOrd(); break; case "EditHeader": // second call LoadHeader(); EditHeader(); case "EditItems": // third call LoadItems(); EditItems(); break; PHP automatically populates the $_GET and $_POST arrays with the data submitted from the browser. case "PlaceOrder": // fourth call SaveOrder(); ShowResult(); break;.. 29 PHP HTML Output <html> <head> <title>acme Widgets Order Entry</title> </head> <body> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> <input type="hidden" name="idnum" value="<?php echo $sessionid?>" /> <table border="0" width="800" bgcolor="blue"> <tr><td align="center"> <p><b><font color="white">acme Widgets Order Entry</font></b></p> <br> </td></tr> <!-- Customer/Order No Selection --> <tr><td> <input type="hidden" name="action" value="editheader" /> <table border="0" width="100%" bgcolor="lightblue"> <tr> <td align="right">customer Number:</td> <td align="left"><input type="text" name="cust" maxlength="6" width="6" /></td> </tr> 30
16 PHP View function AskOrdCust() { require_once("acmeords1.php"); } Next call, it'll load the order data. require_once() is like /COPY in RPG inserts the contents of another file into the PHP program. function LoadHeader() { isset($_post['order'])? $order=$_post['order'] : $order=""; isset($_post['cust'])? $cust=$_post['cust'] : $cust=""; $errmsg = ""; if ( $order!="" ) { if (!ORDER_loadHeader($order, $hdr) ) { $errmsg = ORDER_error(); } } else { if (!ORDER_new($cust: $hdr) ) { $errmsg = ORDER_error(); } } if ( $errmsg!= "" ) { require_once("acmeords2.php"); } else { require_once("acmeords2.php"); } Unlike the RPG version, these are not direct calls. Instead, these are PHP functions that use SQL to call the underlying RPG functions 31 PHP Calling RPG (1 of 2) Since the RPG code is called via SQL statements, PHP needs to connect to the database first. This is required in order to run the SQL statements. function ORDER_connect() { $conn = db2_pconnect("","","", array("i5_naming"=>db2_i5_naming_on, "i5_commit"=>db2_i5_txn_no_commit) ); if (!$conn) { echo "<b>connect Failed: ". db2_conn_errormsg(). "</b>"; return FALSE; } return $conn; } The first three parameters to db2_pconnect() are set to "", "", "" and they specify the host name, userid and password, respectively. You can set them to nothing when connecting to the database on the same computer. Note: db2_pconnect() is for connections established once and re-used throughout all PHP code on the system. It'll keep the connection between calls to the PHP code to improve performance. But, this might have security drawbacks. There's also a db2_connect() that has to re-connect with every call to the script. 32
17 PHP Calling RPG (2 of 2) Each routine in the model is coded something like this in PHP. It simply takes it's parameters and constructs an SQL statement. Then returns the results in another parameter function ORDER_loadHeader($order, &$hdr) { $conn = ORDER_connect(); if (!$conn) return FALSE; $sql = "CALL ORDER_loadHeader('". $order. "')"; $stmt = db2_exec($conn, $sql); if (!$stmt) return FALSE; $row = db2_fetch_assoc($stmt); if (!$row) return FALSE; $hdr['orderno'] = $row['orderno']; $hdr['custno'] = $row['custno']; $hdr['shipname'] = $row['shipname']; $hdr['billname'] = $row['billname']; }... and so forth, for all of the fields in the header 33 Links to April 2008 Articles Articles from the April 2008 issue of System inews magazine: RPG and the Web: Technologies to Get There (Scott Klement) RPG and the Web: The CGIDEV2 Way (Paul Tuohy) RPG and the Web: The PHP Way (Tony Cairns) RPG and the Web: The Java or Groovy Way (Don Denoncourt) From System inetwork Programming Tips e-newsletter: Writing Reusable Service Programs (Scott Klement) 34
18 This Presentation You can download a PDF copy of this presentation (as well as Part I) from: Thank you! 35
Accesssing External Databases From ILE RPG (with help from Java)
Accesssing External Databases From ILE RPG (with help from Java) Presented by Scott Klement http://www.scottklement.com 2008-2015, Scott Klement There are 10 types of people in the world. Those who understand
Three Approaches to Web. with RPG
Three Approaches to Web with RPG Presented by Scott Klement http://www.scottklement.com 2013-2016, Scott Klement "A computer once beat me at chess, but it was no match for me at kick boxing." Emo Philips
Real SQL Programming 1
Real 1 We have seen only how SQL is used at the generic query interface an environment where we sit at a terminal and ask queries of a database. Reality is almost always different: conventional programs
PHP Tutorial From beginner to master
PHP Tutorial From beginner to master PHP is a powerful tool for making dynamic and interactive Web pages. PHP is the widely-used, free, and efficient alternative to competitors such as Microsoft's ASP.
Working with forms in PHP
2002-6-29 Synopsis In this tutorial, you will learn how to use forms with PHP. Page 1 Forms and PHP One of the most popular ways to make a web site interactive is the use of forms. With forms you can have
CS412 Interactive Lab Creating a Simple Web Form
CS412 Interactive Lab Creating a Simple Web Form Introduction In this laboratory, we will create a simple web form using HTML. You have seen several examples of HTML pages and forms as you have worked
Advantages of PML as an iseries Web Development Language
Advantages of PML as an iseries Web Development Language What is PML PML is a highly productive language created specifically to help iseries RPG programmers make the transition to web programming and
PHP on IBM i: What s New with Zend Server 5 for IBM i
PHP on IBM i: What s New with Zend Server 5 for IBM i Mike Pavlak Solutions Consultant [email protected] (815) 722 3454 Function Junction Audience Used PHP in Zend Core/Platform New to Zend PHP Looking to
RPG User Defined Functions (UDFs) and Table Functions (UDTFs) Scott Klement
RPG User Defined Functions (UDFs) and Table Functions (UDTFs) Presented by Scott Klement http://www.scottklement.com 2009-2015, Scott Klement There are 10 types of people in the world. Those who understand
Internet Technologies
QAFQAZ UNIVERSITY Computer Engineering Department Internet Technologies HTML Forms Dr. Abzetdin ADAMOV Chair of Computer Engineering Department [email protected] http://ce.qu.edu.az/~aadamov What are forms?
07 Forms. 1 About Forms. 2 The FORM Tag. 1.1 Form Handlers
1 About Forms For a website to be successful, it is important to be able to get feedback from visitors to your site. This could be a request for information, general comments on your site or even a product
Further web design: HTML forms
Further web design: HTML forms Practical workbook Aims and Learning Objectives The aim of this document is to introduce HTML forms. By the end of this course you will be able to: use existing forms on
Inserting the Form Field In Dreamweaver 4, open a new or existing page. From the Insert menu choose Form.
Creating Forms in Dreamweaver Modified from the TRIO program at the University of Washington [URL: http://depts.washington.edu/trio/train/howto/page/dreamweaver/forms/index.shtml] Forms allow users to
Viewing Form Results
Form Tags XHTML About Forms Forms allow you to collect information from visitors to your Web site. The example below is a typical tech suupport form for a visitor to ask a question. More complex forms
HTML Tables. IT 3203 Introduction to Web Development
IT 3203 Introduction to Web Development Tables and Forms September 3 HTML Tables Tables are your friend: Data in rows and columns Positioning of information (But you should use style sheets for this) Slicing
HTML Forms and CONTROLS
HTML Forms and CONTROLS Web forms also called Fill-out Forms, let a user return information to a web server for some action. The processing of incoming data is handled by a script or program written in
Configuring iplanet 6.0 Web Server For SSL and non-ssl Redirect
Introduction Configuring iplanet 6.0 Web Server For SSL and non-ssl Redirect This document describes the process for configuring an iplanet web server for the following situation: Require that clients
Implementing Specialized Data Capture Applications with InVision Development Tools (Part 2)
Implementing Specialized Data Capture Applications with InVision Development Tools (Part 2) [This is the second of a series of white papers on implementing applications with special requirements for data
Working with JSON in RPG. (YAJL Open Source JSON Tool)
Working with JSON in RPG (YAJL Open Source JSON Tool) Presented by Scott Klement http://www.scottklement.com 2014-2016, Scott Klement "A computer once beat me at chess, but it was no match for me at kick
TCP/IP Networking, Part 2: Web-Based Control
TCP/IP Networking, Part 2: Web-Based Control Microchip TCP/IP Stack HTTP2 Module 2007 Microchip Technology Incorporated. All Rights Reserved. Building Embedded Web Applications Slide 1 Welcome to the next
Novell Identity Manager
AUTHORIZED DOCUMENTATION Manual Task Service Driver Implementation Guide Novell Identity Manager 4.0.1 April 15, 2011 www.novell.com Legal Notices Novell, Inc. makes no representations or warranties with
HTML Form Widgets. Review: HTML Forms. Review: CGI Programs
HTML Form Widgets Review: HTML Forms HTML forms are used to create web pages that accept user input Forms allow the user to communicate information back to the web server Forms allow web servers to generate
Short notes on webpage programming languages
Short notes on webpage programming languages What is HTML? HTML is a language for describing web pages. HTML stands for Hyper Text Markup Language HTML is a markup language A markup language is a set of
RPG Web Development. Salt Lake Midrange Users Group Meeting November 10, 2010. Presented by: Keith Day President Apps ON i
RPG Web Development Salt Lake Midrange Users Group Meeting November 10, 2010 Presented by: Keith Day President Apps ON i [email protected] 801-808-5622 11/11/2010 1 RPG Web Development Agenda My experience
CGI Programming. What is CGI?
CGI Programming What is CGI? Common Gateway Interface A means of running an executable program via the Web. CGI is not a Perl-specific concept. Almost any language can produce CGI programs even C++ (gasp!!)
Forms, CGI Objectives. HTML forms. Form example. Form example...
The basics of HTML forms How form content is submitted GET, POST Elements that you can have in forms Responding to forms Common Gateway Interface (CGI) Later: Servlets Generation of dynamic Web content
Advanced Tornado TWENTYONE. 21.1 Advanced Tornado. 21.2 Accessing MySQL from Python LAB
21.1 Advanced Tornado Advanced Tornado One of the main reasons we might want to use a web framework like Tornado is that they hide a lot of the boilerplate stuff that we don t really care about, like escaping
Introduction to Web services for RPG developers
Introduction to Web services for RPG developers Claus Weiss [email protected] TUG meeting March 2011 1 Acknowledgement In parts of this presentation I am using work published by: Linda Cole, IBM Canada
WHITEPAPER. Skinning Guide. Let s chat. 800.9.Velaro www.velaro.com [email protected]. 2012 by Velaro
WHITEPAPER Skinning Guide Let s chat. 2012 by Velaro 800.9.Velaro www.velaro.com [email protected] INTRODUCTION Throughout the course of a chat conversation, there are a number of different web pages that
Chapter 22 How to send email and access other web sites
Chapter 22 How to send email and access other web sites Murach's PHP and MySQL, C22 2010, Mike Murach & Associates, Inc. Slide 1 Objectives Applied 1. Install and use the PEAR Mail package to send email
Web Programming with PHP 5. The right tool for the right job.
Web Programming with PHP 5 The right tool for the right job. PHP as an Acronym PHP PHP: Hypertext Preprocessor This is called a Recursive Acronym GNU? GNU s Not Unix! CYGNUS? CYGNUS is Your GNU Support
How to Make a Working Contact Form for your Website in Dreamweaver CS3
How to Make a Working Contact Form for your Website in Dreamweaver CS3 Killer Contact Forms Dreamweaver Spot With this E-Book you will be armed with everything you need to get a Contact Form up and running
DEERFIELD.COM. DNS2Go Update API. DNS2Go Update API
DEERFIELD.COM DNS2Go Update API DNS2Go Update API DEERFIELD.COM PRODUCT DOCUMENTATION DNS2Go Update API Deerfield.com 4241 Old U.S. 27 South Gaylord, MI 49686 Phone 989.732.8856 Email [email protected]
Xtreeme Search Engine Studio Help. 2007 Xtreeme
Xtreeme Search Engine Studio Help 2007 Xtreeme I Search Engine Studio Help Table of Contents Part I Introduction 2 Part II Requirements 4 Part III Features 7 Part IV Quick Start Tutorials 9 1 Steps to
PHP Authentication Schemes
7 PHP Authentication Schemes IN THIS CHAPTER Overview Generating Passwords Authenticating User Against Text Files Authenticating Users by IP Address Authenticating Users Using HTTP Authentication Authenticating
The Basics of Dynamic SAS/IntrNet Applications Roderick A. Rose, Jordan Institute for Families, School of Social Work, UNC-Chapel Hill
Paper 5-26 The Basics of Dynamic SAS/IntrNet Applications Roderick A. Rose, Jordan Institute for Families, School of Social Work, UNC-Chapel Hill ABSTRACT The purpose of this tutorial is to introduce SAS
2 SQL in iseries Navigator
2 SQL in iseries Navigator In V4R4, IBM added an SQL scripting tool to the standard features included within iseries Navigator and has continued enhancing it in subsequent releases. Because standard features
JavaScript and Dreamweaver Examples
JavaScript and Dreamweaver Examples CSC 103 October 15, 2007 Overview The World is Flat discussion JavaScript Examples Using Dreamweaver HTML in Dreamweaver JavaScript Homework 3 (due Friday) 1 JavaScript
Intro to Embedded SQL Programming for ILE RPG Developers
Intro to Embedded SQL Programming for ILE RPG Developers Dan Cruikshank DB2 for i Center of Excellence 1 Agenda Reasons for using Embedded SQL Getting started with Embedded SQL Using Host Variables Using
Advanced SQL. Jim Mason. www.ebt-now.com Web solutions for iseries engineer, build, deploy, support, train 508-728-4353. jemason@ebt-now.
Advanced SQL Jim Mason [email protected] www.ebt-now.com Web solutions for iseries engineer, build, deploy, support, train 508-728-4353 What We ll Cover SQL and Database environments Managing Database
MASTERTAG DEVELOPER GUIDE
MASTERTAG DEVELOPER GUIDE TABLE OF CONTENTS 1 Introduction... 4 1.1 What is the zanox MasterTag?... 4 1.2 What is the zanox page type?... 4 2 Create a MasterTag application in the zanox Application Store...
Meeting Users' Needs with Free Software for your IBM i
Meeting Users' Needs with Free Software for your IBM i Jon Paris Jon.Paris @ Partner400.com www.partner400.com www.systemideveloper.com Free Software? By "Free" I mean as in: No need to obtain budget approval
ASP &.NET. Microsoft's Solution for Dynamic Web Development. Mohammad Ali Choudhry Milad Armeen Husain Zeerapurwala Campbell Ma Seul Kee Yoon
ASP &.NET Microsoft's Solution for Dynamic Web Development Mohammad Ali Choudhry Milad Armeen Husain Zeerapurwala Campbell Ma Seul Kee Yoon Introduction Microsoft's Server-side technology. Uses built-in
Stata web services: Toward Stata-based healthcare informatics applications integrated
Stata web services: Toward Stata-based healthcare informatics applications integrated in a service-oriented architecture (SOA) Alexander Zlotnik Technical University of Madrid, ETSIT, DIE Ramon y Cajal
Multimedia im Netz Online Multimedia Winter semester 2015/16. Tutorial 03 Major Subject
Multimedia im Netz Online Multimedia Winter semester 2015/16 Tutorial 03 Major Subject Ludwig- Maximilians- Universität München Online Multimedia WS 2015/16 - Tutorial 03-1 Today s Agenda Quick test Server
Installation and Integration Manual TRANZILA Secure 5
Installation and Integration Manual TRANZILA Secure 5 Last update: July 14, 2008 Copyright 2003 InterSpace Ltd., All Rights Reserved Contents 19 Yad Harutzim St. POB 8723 New Industrial Zone, Netanya,
Create a New Database in Access 2010
Create a New Database in Access 2010 Table of Contents OVERVIEW... 1 CREATING A DATABASE... 1 ADDING TO A DATABASE... 2 CREATE A DATABASE BY USING A TEMPLATE... 2 CREATE A DATABASE WITHOUT USING A TEMPLATE...
FORM-ORIENTED DATA ENTRY
FORM-ORIENTED DATA ENTRY Using form to inquire and collect information from users has been a common practice in modern web page design. Many Web sites used form-oriented input to request customers opinions
Chapter 2: Interactive Web Applications
Chapter 2: Interactive Web Applications 2.1 Interactivity and Multimedia in the WWW architecture 2.2 Interactive Client-Side Scripting for Multimedia (Example HTML5/JavaScript) 2.3 Interactive Server-Side
Your First Web Page. It all starts with an idea. Create an Azure Web App
Your First Web Page It all starts with an idea Every web page begins with an idea to communicate with an audience. For now, you will start with just a text file that will tell people a little about you,
Dynamic Web-Enabled Data Collection
Dynamic Web-Enabled Data Collection S. David Riba, Introduction Web-based Data Collection Forms Error Trapping Server Side Validation Client Side Validation Dynamic generation of web pages with Scripting
Building Applications Using Micro Focus COBOL
Building Applications Using Micro Focus COBOL Abstract If you look through the Micro Focus COBOL documentation, you will see many different executable file types referenced: int, gnt, exe, dll and others.
Paging, sorting, and searching using EF Code first and MVC 3. Introduction. Installing AdventureWorksLT database. Creating the MVC 3 web application
Paging, sorting, and searching using EF Code first and MVC 3 Nadeem Afana's blog Download code! Introduction In this blog post, I am going to show you how to search, paginate and sort information retrieved
Presentation for The Omni User Group By Bob Dunn and Doug Bridwell
Presentation for The Omni User Group By Bob Dunn and Doug Bridwell 1 Bob Dunn Dunn-Rite Services Consultant / Contract Programmer Doug Bridwell The Morey Corporation Application Development Manager Omni
Perl/CGI. CS 299 Web Programming and Design
Perl/CGI CGI Common: Gateway: Programming in Perl Interface: interacts with many different OSs CGI: server programsprovides uses a well-defined users with a method way to to gain interact access with to
Chapter 12 Programming Concepts and Languages
Chapter 12 Programming Concepts and Languages Chapter 12 Programming Concepts and Languages Paradigm Publishing, Inc. 12-1 Presentation Overview Programming Concepts Problem-Solving Techniques The Evolution
Search help. More on Office.com: images templates
Page 1 of 14 Access 2010 Home > Access 2010 Help and How-to > Getting started Search help More on Office.com: images templates Access 2010: database tasks Here are some basic database tasks that you can
Introduction to Web Design Curriculum Sample
Introduction to Web Design Curriculum Sample Thank you for evaluating our curriculum pack for your school! We have assembled what we believe to be the finest collection of materials anywhere to teach basic
Client-side Web Engineering From HTML to AJAX
Client-side Web Engineering From HTML to AJAX SWE 642, Spring 2008 Nick Duan 1 What is Client-side Engineering? The concepts, tools and techniques for creating standard web browser and browser extensions
600-152 People Data and the Web Forms and CGI. HTML forms. A user interface to CGI applications
HTML forms A user interface to CGI applications Outline A simple example form. GET versus POST. cgi.escape(). Input controls. A very simple form a simple form
Introduction to Web Programming with RPG. Presented by. Scott Klement. http://www.scottklement.com. 2006-2009, Scott Klement.
Introduction to Web Programming with RPG Presented by Scott Klement http://www.scottklement.com 2006-2009, Scott Klement Session 11C There are 10 types of people in the world. Those who understand binary,
2- Forms and JavaScript Course: Developing web- based applica<ons
2- Forms and JavaScript Course: Cris*na Puente, Rafael Palacios 2010- 1 Crea*ng forms Forms An HTML form is a special section of a document which gathers the usual content plus codes, special elements
OVERVIEW OF ASP. What is ASP. Why ASP
OVERVIEW OF ASP What is ASP Active Server Pages (ASP), Microsoft respond to the Internet/E-Commerce fever, was designed specifically to simplify the process of developing dynamic Web applications. Built
HTML Basics(w3schools.com, 2013)
HTML Basics(w3schools.com, 2013) What is HTML? HTML is a language for describing web pages. HTML stands for Hyper Text Markup Language. HTML is a markup language A markup language is a set of markup tags.
Jet Data Manager 2012 User Guide
Jet Data Manager 2012 User Guide Welcome This documentation provides descriptions of the concepts and features of the Jet Data Manager and how to use with them. With the Jet Data Manager you can transform
7 Why Use Perl for CGI?
7 Why Use Perl for CGI? Perl is the de facto standard for CGI programming for a number of reasons, but perhaps the most important are: Socket Support: Perl makes it easy to create programs that interface
A send-a-friend application with ASP Smart Mailer
A send-a-friend application with ASP Smart Mailer Every site likes more visitors. One of the ways that big sites do this is using a simple form that allows people to send their friends a quick email about
Intro to Web Programming. using PHP, HTTP, CSS, and Javascript Layton Smith CSE 4000
Intro to Web Programming using PHP, HTTP, CSS, and Javascript Layton Smith CSE 4000 Intro Types in PHP Advanced String Manipulation The foreach construct $_REQUEST environmental variable Correction on
IBM FileNet eforms Designer
IBM FileNet eforms Designer Version 5.0.2 Advanced Tutorial for Desktop eforms Design GC31-5506-00 IBM FileNet eforms Designer Version 5.0.2 Advanced Tutorial for Desktop eforms Design GC31-5506-00 Note
Populating Your Domino Directory (Or ANY Domino Database) With Tivoli Directory Integrator. Marie Scott Thomas Duffbert Duff
Populating Your Domino Directory (Or ANY Domino Database) With Tivoli Directory Integrator Marie Scott Thomas Duffbert Duff Agenda Introduction to TDI architecture/concepts Discuss TDI entitlement Examples
NEMUG Feb 2008. Create Your Own Web Data Mart with MySQL
NEMUG Feb 2008 Create Your Own Web Data Mart with MySQL Jim Mason [email protected] ebt-now copyright 2008, all rights reserved What We ll Cover System i Web Reporting solutions Enterprise Open-source
A table is a collection of related data entries and it consists of columns and rows.
CST 250 MySQL Notes (Source: www.w3schools.com) MySQL is the most popular open-source database system. What is MySQL? MySQL is a database. The data in MySQL is stored in database objects called tables.
Data Transfer Tips and Techniques
Agenda Key: Session Number: System i Access for Windows: Data Transfer Tips and Techniques 8 Copyright IBM Corporation, 2008. All Rights Reserved. This publication may refer to products that are not currently
WIRIS quizzes web services Getting started with PHP and Java
WIRIS quizzes web services Getting started with PHP and Java Document Release: 1.3 2011 march, Maths for More www.wiris.com Summary This document provides client examples for PHP and Java. Contents WIRIS
In the March article, RPG Web
RPG WEB DEVELOPMENT Using Embedded SQL to Process Multiple Rows By Jim Cooper In the March article, RPG Web Development, Getting Started (www.icebreak4rpg.com/articles. html), the wonderful and exciting
SUBJECT CODE : 4074 PERIODS/WEEK : 4 PERIODS/ SEMESTER : 72 CREDIT : 4 TIME SCHEDULE UNIT TOPIC PERIODS 1. INTERNET FUNDAMENTALS & HTML Test 1
SUBJECT TITLE : WEB TECHNOLOGY SUBJECT CODE : 4074 PERIODS/WEEK : 4 PERIODS/ SEMESTER : 72 CREDIT : 4 TIME SCHEDULE UNIT TOPIC PERIODS 1. INTERNET FUNDAMENTALS & HTML Test 1 16 02 2. CSS & JAVASCRIPT Test
Introduction to XHTML. 2010, Robert K. Moniot 1
Chapter 4 Introduction to XHTML 2010, Robert K. Moniot 1 OBJECTIVES In this chapter, you will learn: Characteristics of XHTML vs. older HTML. How to write XHTML to create web pages: Controlling document
Script Handbook for Interactive Scientific Website Building
Script Handbook for Interactive Scientific Website Building Version: 173205 Released: March 25, 2014 Chung-Lin Shan Contents 1 Basic Structures 1 11 Preparation 2 12 form 4 13 switch for the further step
Rational Developer for IBM i (RDi) Introduction to RDi
IBM Software Group Rational Developer for IBM i (RDi) Introduction to RDi Featuring: Creating a connection, setting up the library list, working with objects using Remote Systems Explorer. Last Update:
Lesson 7 - Website Administration
Lesson 7 - Website Administration If you are hired as a web designer, your client will most likely expect you do more than just create their website. They will expect you to also know how to get their
JavaScript: Introduction to Scripting. 2008 Pearson Education, Inc. All rights reserved.
1 6 JavaScript: Introduction to Scripting 2 Comment is free, but facts are sacred. C. P. Scott The creditor hath a better memory than the debtor. James Howell When faced with a decision, I always ask,
XHTML Forms. Form syntax. Selection widgets. Submission method. Submission action. Radio buttons
XHTML Forms Web forms, much like the analogous paper forms, allow the user to provide input. This input is typically sent to a server for processing. Forms can be used to submit data (e.g., placing an
Intell-a-Keeper Reporting System Technical Programming Guide. Tracking your Bookings without going Nuts! http://www.acorn-is.
Intell-a-Keeper Reporting System Technical Programming Guide Tracking your Bookings without going Nuts! http://www.acorn-is.com 877-ACORN-99 Step 1: Contact Marian Talbert at Acorn Internet Services at
Using SAP Logon Tickets for Single Sign on to Microsoft based web applications
Collaboration Technology Support Center - Microsoft - Collaboration Brief March 2005 Using SAP Logon Tickets for Single Sign on to Microsoft based web applications André Fischer, Project Manager CTSC,
Database Driven Websites Using PHP with Informix
Database Driven Websites Using PHP with Informix February 12, 2013 Thomas Beebe Advanced DataTools Corp ([email protected]) Tom Beebe Tom is a Senior Database Consultant and has been with Advanced
Microsoft SQL Server Features that can be used with the IBM i
that can be used with the IBM i Gateway/400 User Group February 9, 2012 Craig Pelkie [email protected] Copyright 2012, Craig Pelkie ALL RIGHTS RESERVED What is Microsoft SQL Server? Windows database management
BarTender s ActiveX Automation Interface. The World's Leading Software for Label, Barcode, RFID & Card Printing
The World's Leading Software for Label, Barcode, RFID & Card Printing White Paper BarTender s ActiveX Automation Interface Controlling BarTender using Programming Languages not in the.net Family Contents
A Simple Shopping Cart using CGI
A Simple Shopping Cart using CGI Professor Don Colton, BYU Hawaii March 5, 2004 In this section of the course, we learn to use CGI and Perl to create a simple web-based shopping cart program. We assume
CTIS 256 Web Technologies II. Week # 1 Serkan GENÇ
CTIS 256 Web Technologies II Week # 1 Serkan GENÇ Introduction Aim: to be able to develop web-based applications using PHP (programming language) and mysql(dbms). Internet is a huge network structure connecting
Unique promotion code
Copyright IBM Corporation 2010 All rights reserved IBM WebSphere Commerce V7 Feature Pack 1 Lab exercise What this exercise is about... 2 What you should be able to do... 2 Introduction... 2 Requirements...
An Introduction To The Web File Manager
An Introduction To The Web File Manager When clients need to use a Web browser to access your FTP site, use the Web File Manager to provide a more reliable, consistent, and inviting interface. Popular
CSCI110: Examination information.
CSCI110: Examination information. The exam for CSCI110 will consist of short answer questions. Most of them will require a couple of sentences of explanation of a concept covered in lectures or practical
