400 likes | 616 Views
Presented by David Mount Owner of Texas400 Computer Consulting See www.texas400.com for more on Perl on the iSeries / AS400 . Using Perl on an AS/400 / iSeries. Reasons to Pay Attention.
E N D
Presented by David Mount Owner of Texas400 Computer Consulting See www.texas400.com for more on Perl on the iSeries / AS400 Using Perl on an AS/400 / iSeries
Reasons to Pay Attention • You may actually want to provide the public or your users with internet access to some of your data – PERL is an easy and FREE way to do this • PERL is a great way to learn about CGI programming as well at HTML and HTTP server • Someday, you may have the chance to port a PERL application to your iSeries
Typical Computer User’s Understanding of AS/400 / iSeries • What’s an AS/400? What’s an iSeries? • Old architecture that uses green screens • Programs written in RPG • Runs applications written 10 to 15 years ago • Doesn’t belong in the same sentence as “internet” • Upload data via PC Support or Client Access • Really different from world of PC’s and internet • Isolated from rest of world
We have the opportunity to educate the IT public about AS400 / iSeries • Internet Accessible – Free Telnet products (www.symtrax.com) • Uploads and Downloads over internet with FTP • Internet remote printing to IP addressable printers • SMTP Server – Send emails • HTTP Server – web hosting • Various CGI programming capabilities
Career questions to keep you awake at night • What programming language should I be learning? • What computer platform will be in use in 5 to 10 years? • What can I learn today that will still be valuable in 5 to 10 years?
Answer to these questions is: The Internet The Internet The Internet
TCP-IP issues are the same regardless of the platform • Once you configure FTP Server on AS/400, you already know how to do it on Windows • The FTP client on OS/400 is operationally very similar to the FTP on windows and Linux • Getting the SMTP server working involves learning about DNS, mail forwarding, third party relay
Roadmap of next 25 slides • Write a “Welcome to my page” static HTML page • Use PERL to output “Hello World” to browser • Write an HTML form to accept PERMIT# • Write a PERL program to process the CGI data, lookup the permit inspections and write to browser • Use a link to look up specific info about an inspection • Read a non-keyed file and write it to the browser
Non platform specific things to know for web site programming • HTML formatting • Static HTML • Forms with fields • Links with Query Strings • How to FTP HTML to web server • Web server configuration Default folder, CGI-BIN directory
Http Server Directives for Static HTML So that a browser going to my AS/400 will be served the HTML in “index.html” in the “html” folder (get there with WRKLNK), use these two directives: Pass /* /html/* Welcome index.html There is nothing magic about the HTML folder. I created it from the WRKLNK screen
To make a “Welcome” page • Use a PC to create a document named “index.html” with the following: • <html><body>Welcome to my home page</body></html> • Use FTP to put that document in the HTML folder • Specifically, connect to 66.12.223.253 with remote directory of /html • Use a browser to go to 66.12.223.253 and you should see the Welcome page
Download and Install PERL • PERL (Practical Extraction and Report Language) • An interpretted language (don’t compile) • Written in C as a quick and dirty language • Used by Unix administrators for years • Probably the most common CGI programming language • www.cpan.org/ports/ to download the free library
PERL Resources • Vast supplies of sample code on the internet • Many Perl and CGI / PERL books • “Writing CGI Applications with PERL” by Kevin Meltzer and Brent Michalski
PERL Executable Code • I used WRKLNK and MD PERL commands to create a directory named PERL • I FTP my PERL documents to the PERL directory
Hello World Program • Use notepad to create a document named Hello.PL • #!/usr/bin/perl use CGI qw/:standard/; print header; print '<html><body>'; print 'Hello World'; print '</body></html>'; • FTP document to AS/400
Configure HTTP Server for CGI • Enable GET • Enable HEAD • Enable POST • EXEC /cgi-bin/* /QSYS.LIB/T40CGI.LIB/*.PGM %%EBCDIC%%
CL Program • Compile a CL program named HELLO CALL PGM(PERLDIST/PERL) + PARM('/PERL/HELLO.PL') Program must be where you told the HTTP server that CGI-BIN programs are. In my case, the library T40CGI Make sure QTMHHTTP and QTMHHTP1 have authority to everything
Program execution time! • When browser goes to 66.12.223.253/cgi-bin/hello The HTTP server maps anything coming to “cgi-bin” to T40CGI library So, HTTP server tries to run the program HELLO from T40CGI library
What is CGI? • Common Gateway Interface • A defined standard for executing programs with parameters • Conceptually similar to a DDS display file • Invoke a CGI program with either a link from a web page or a submit button on a form • Data arrives as a string of field names and values: gtpermit.pgm?PERMT=1234&USR=David
Different ways to process CGI • RPG ILE program using IBM supplied API’s (see Brad Stones’s eRPG book) • IBM’s Easy400 tool (see www-922.ibm.com) • 3rd Party Products like ProGen WebSmart • PERL
CGI form with submit button --- named GTPERMIT.HTML <html><body> <FORM METHOD="POST“ ACTION="http://66.12.223.253/cgi-bin/gtpermit"> Permit# <INPUT TYPE="text" NAME="PERMT“ Maxlength=4><p> <INPUT TYPE="Submit" VALUE="Submit“> </form></body></html>
Program Execution Time! • When submit button is clicked: String “66.12.223.253/cgi-bin/gtpermit?PERMT=1234” Goes to IP address 66.12.223.253 The HTTP server maps anything coming to “cgi-bin” to T40CGI library So, HTTP server tries to run the program GTPERMIT with the query string of ?PERMT=1234 We need a program named GTPERMIT to read this value and respond
Use SQL to read AS/400 database • Need to read value from CGI form and then… • Build the SQL string: SELECT * FROM T40CGI/INS WHERE INSPMT = ‘1234’ and then… Show the data
Put new Perl program on AS400 • FTP this Perl program named “gtpermt” to the AS/400 • Create a CL to run it • Make sure the database and the CL program are usable by QTMHTTP and QTMMHTP1 • Click on the submit button
Add a link to see details of inspection • Add this line as the last column of table: • print q(<td><a href=showdetl?PERMT= $data->{INSPMT}&TYP=$data->{INSTYP} >Details</a></td>\n); Builds a string like: <a href=showdetl?PERMT=1234&TYP=DW> Details</a>
Perl Program named showdetl.pl • Get parms from query string • Build the SQL string: SELECT * FROM T40CGI/INS WHERE INSPMT = ‘1234’ AND INSTYP = ‘DW’ and then… Show the data
Put new program on AS/400 • FTP this Perl program named “showdetl” to the AS/400 • Create a CL to run it • Make sure the CL program is usable by QTMHTTP and QTMMHTP1
At Your Next Company Meeting • Can users use the internet to get on the iSeries? • Can people upload and download data from the AS400 over the internet? • Can our computer host web pages? • Can we process CGI input? • Can we run PERL?
Duh!!!! It’s an AS/400!