วันพุธที่ 22 กรกฎาคม พ.ศ. 2558

Tip:SQL Read File (many Member)

Tip:SQL Read File (many Member)

CREATE ALIAS    QTEMP.myALIAS    FOR     LIB.QRPGSRC (PGM1)
SELECT   QTEMP.myALIAS
DROP ALIAS      QTEMP.myALIAS

File ใน DB2/400  (มีโครงสร้าง พิเศษ) สามารถจัดเก็บ 1 File ได้หลาย Member

ตย. Source Code (เช่น QRPGSRC, QDDSSRC)  ที่เก็บ RPG, Physical,Logical,Display File
ตย. File ที่ IBM มักจะแนะนำให้ใช้  คือ  File Monthly แยก Member ตาม ปี/เดือน เป็นต้น
       (ไม่เหมาะกับ SQL)

คำสั่งมาตรฐาน SELECT  ไม่มี  Syntax ที่ใช้อ้างอิง โครงสร้างพิเศษ ข้างต้น
ต้องสร้าง  object  ที่ระบุ Member เจาะจง   รู้จักกันในชื่อ   ALIAS

ชุดคำสั่งข้างบน ทำให้อ่าน Member ที่เจาะจงได้
(เรียกใช้งานได้ใน iSeries Navigator)

ตย. ใน DotNet : ต้องการสร้าง Class เกี่ยวกับ Database โดยสร้างจาก DB2
       ณ.วันนี้ (2015/07/23)  ยังไม่มีเครื่องมือช่วยสร้าง

       บน DB2        LIB.QDDSSRC  (myFile)  จัดเก็บลักษณะนี้

              R  MYFILER1
                 FLDA        10    COLHDG('FIELD-A')
                 FLDB         8    COLHDG('FIELD-B')
                 ...  
                                  มีประมาณ 30-50 field

       บน  DotNet  ต้องสร้าง  code ลักษณะนี้ (ตย. แบบย่อ)

              Class myFILE
                  Property  FLDA  as  String
                  Property  FLDB  as  String
                  ...

                  Sub GetData  (byVal myID as String)
                      '...SQL to DataTable
                      Loop  Data Table
                           FLDA = dt.FLDA
                           FLDB = dt.FLDB
                           ...
                      End loop
                  End Sub
              End Class

               ถ้าต้องทำ  1-2  File - เปิด Editor แล้ว Copy / Paste  เร็วที่สุด
               แต่ถ้าต้องทำ มากกว่า  5 file แต่ละ File มี Field มาก     ลองสร้าง Tool
               สังเกต  Code สีชมพู  (ที่มีลักษณะแน่นอน)

Code สีชมพูดในส่วนที่ 2 ทำง่ายกว่า ครับ

Select srcdta
      ,substr(srcdta,19,6) || ' = dt.' || substr(srcdta,19,6)
From qtemp.myAlias 
Where substr(srcdta,7,1)<>'*' and substr(srcdta,17,1)=' ' 
  and substr(srcdta,19,6)<>'      '

SQL Result
     A            MXOPEC         2          COLHDG('OPEC CODE')                  MXOPEC = dt.MXOPEC
  ++ A            MXCOMC         1          COLHDG('COMC CODE')                  MXCOMC = dt.MXCOMC

Code สีชมพูดในส่วนที่ 1 เพิ่มรายละเอียด ครับ
Select srcdta
      ,' Property ' || substr(srcdta,19,6)
       || Case Trim(substr(srcdta,36,2)) 
             When '  ' Then ' As String'
             Else ' As Float'  End 
       || ' '' ' 
       || Replace(Replace(Trim(substr(srcdta,44,30)),'COLHDG(''',''),''')','') 
From qtemp.myAlias 
Where substr(srcdta,7,1)<>'*' and substr(srcdta,17,1)=' ' 
  and substr(srcdta,19,6)<>'      '

SQL Result
     A            MXTYCD         5          COLHDG('TYPY CODE')                 Property MXTYCD As String ' TYPE CODE
  C  A            MXTYPE        25          COLHDG('TYPY')                       Property MXTYPE As String ' TYPE
     A            MXWEIT         7  3       COLHDG('WEIGHT')                     Property MXWEIT As Float ' WEIGHT
     A            MXODOW         7  4       COLHDG('O/W')                       Property MXODOW As Float ' O/W

Reference
http://search400.techtarget.com/tip/Using-SQL-on-System-i-to-color-source-code-and-inline-comments

วันอังคารที่ 14 กรกฎาคม พ.ศ. 2558

Download Spool File to PC

Download iSeries : Spool File to PC

เป็นงานประเภทหนึ่ง ที่ต้องทำกัน  มีทางเลือกในการทำหลายแบบ  เลือกตามความถนัดครับ

1. ใช้ iSeries Navigator  ลาก  แล้ววางลง Folder เลย
2. ใช้ CPYTOIMPF
3. เขียนโปรแกรม

1. ใช้ iSeries Navigator  ลาก  แล้ววางลง Folder เลย

    a. เปิด iSeries Navigator 
    
 
    b. เลือก iSeries (AS/400, Server) กรณีที่คุณมีหลายเครื่อง
    

    c. เปิด OutQ ที่เก็บ Spool
        AS/400 (Server) > Basic Operation > Printer Output
        * OutQ ที่เห็น  จะ *Default  ตาม UserProfile ที่ Sign On
    
        เปิดดู Spool    โดย Double Click หรือ Right click > Open

         Drag (ลาก) Spool File ที่ต้องการ  Drop (วาง) ไปที่ PC:Desktop หรือ Folder ปลายทาง
         หรือ Spool File + Right Click > Copy   แล้วไปที่ Folder + Right Click > Paste

         ถ้าต้องการเปลี่ยน OutQ
              Printer Output + Right Click > Customize this View > Include > ป้อน OutQ ที่ต้องการ
         

        สังเกต  เลือก Spool File + Right Click > มีตัวเลือก Convert to PDF

2. ใช้ CPYTOIMPF

    ขออภัยครับ  ผมแสดงให้ดูไม่ได้   (เข้าใจว่า) ที่ AS/400 ต้องซื้อ (ติดตั้ง) Integrate File System  (โหมดที่เปลี่ยน AS/400 เป็น Folder ที่ PC ทั่วไปมองเห็น)  หลายคนจะคุ้นเคยกับชื่อ copy document

3. เขียนโปรแกรม  

    โดยใช้เทคนิค Copy Spool File เป็น Physical-File ก่อน แล้วจึง Download ลงมาผ่าน ตัวเลือก (บน Client Access) หรือ RTOPC cmd
ตย. 
    0. สร้าง WorkFile  
CRTPF FILE(SARAYUT/A)      RCDLEN(200)   
    1. CPYSPLF FILE(QSYSPRT) TOFILE(SARAYUT/A) JOB(241844/USNADS/QPRTJOB
        ระบุ  Spool File ต้องระุบ   เต็ม  Spool file name +  (Spool File No.) +  Job No/User/Job
    2. คำสั่ง download  to PC
        จาก Client Access  (ใช้เพื่อสร้าง โครงสร้าง .fdf ก่อนเขียนโปรแกรมเรียกใช้)
        จาก Start > program
        จาก Command  (เขียน Batch โปรแกรมได้)