วันอาทิตย์ที่ 5 มีนาคม พ.ศ. 2560

Print อักษรใหญ่,Barcode ด้วย ESC-Code

Print  อักษรใหญ่,Barcode ด้วย ESC-Code

เครดิต : หัวข้อนี้เป็นความสำเร็จของ รุ่นพี่ที่ทำงานคนหนึ่งครับ (พี่บูลย์)
        เกิดจาก IBM Printer มีราคาแพงมากกว่า Printer ทั่วไป 2-3 เท่า
        ในขณะที่ บางงาน ดูไม่คุ้มที่ต้องทำตามขั้นตอนของ IBM

        IBM ได้เตรียม Printer File ไว้สำหรับการทำ อักษร(Font)ใหญ่ หรือ Barcode
แต่เท่าที่ทราบ   จนถึงปัจจุบัน (ปี 2016) ต้องใช้ Printer เฉพาะรุ่นที่  รองรับ *IPDS ได้
(ปี 2015 ได้ทราบว่า  Laser Printer หลายรุ่นทำได้แล้ว - แค่ลง PTF เพิ่ม)

        ทางเลือกอื่น  ในการพิมพ์  อักษร(Font)ใหญ่ หรือ Barcode
บน Dot Metric Printer ที่ไม่รองรับ *IPDS
คือ  การพิมพ์โดยผ่าน Mode = ESC-Code  ของ Printer

Q: ทำไมต้องใช้ Dot Metric Printer 
A: ใช้กับ  งานที่ต้องมี Copy หรือ   ความเร็วสูง, ปริมาณมาก, ทนทาน (ราคาถูกกว่า)
     ก่อนเลือกใช้ ขอให้คำนวนต้นทุนก่อนน๊ะครับ! (ปี 2017 Laser Printer ราคาถูกลงมามาก)

Q: ข้อเสียของ Dot Metric Printer มีอะไร ?
A: อักษร/Barcode "ไม่ชัด"  -  ไม่เหมาะกับส่งให้ลูกค้า 
     ถ้าใช้กันเอง (ต้องมี Barcode ที่ผ่านการทดสอบ ว่าอ่านได้)

ตย. ใช้ Printer รุ่น   Fujitsu DL-6400   เมื่อต่อกับ Window
(ยุ่ง-1) Config Window/Printer
           1.1 ต้องติดตั้ง Driver = EPSON LQ 2xxx
                ผมเคยทดลองใช้ Driver ของ Fujistu ตรงๆ   สั่งพิมพ์ ESC ไม่ได้!
           1.2 Config ให้ Printer ให้ทำงาน กับ ESC ได้  (ผมเข้าใจว่ามันตั้งค่าไว้แล้ว)
                  EUMULATE =ESC/P2
(ยุ่ง-2) เขียนโปรแกรม
           2.1 ก่อนที่ RPG จะเริ่ม  เปิด/สร้าง Spool File
                    OVRPRTF  QPRINT   RPLUNPRT(*NO)   
                    หมายถึง   ไม่ต้อง auto clear ค่าถ้าพบ  อักษรพิเศษ (กลุ่ม "คำสั่ง" ESC)
                    ทำที่ CL หรือ ทำใน RPG (เรียกใช้ ก่อน OPEN)
           2.2 แทรก  ESC-Command
                   - เปิดใช้
                   - (ต่อไปนี้) ให้พิมพ์  อักษรใหญ่/Barcode
                   - ข้อความที่จะพิมพ์
                   - ยกเลิก การพิมพ์ อักษรใหญ่/Barcode

ESC-Command

      ใครสนใจไปลองอ่านดูน๊ะครับ มีรายละเอียด น่าสนใจมาก
      แบบย่อๆ คือ EPSON ได้ฝังชุดคำสั่ง  ให้เราสามารถสั่งพิมพ์ได้โดยตรง เป็นชุดคำสั่งไม่มาก
เช่น อักษรใหญ่ขึ้น 1,2 เท่า  อักษรกว้างขึ้น 1,2 เท่า  เป็นต้น
      ต้องไปอ่านคู่มือ  ว่า  ESC-Code ทำอะไรได้บ้าง  ตรงกับที่เราต้องการหรือไม่ ?

      สังเกต - ตัวเลือกจะน้อย  เมื่อเทียบกับ สิ่งที่เราคุ้นเคย เช่น ตั้งค่า  Font=Arial ,Size=8,12,72

Q: ทำงานยาก และ มีข้อจำกัดเพียบ  แล้วทำไมยังใช้อยู่ ?
A: เพราะ  ตัวเลือกอื่นๆ  เสียเงินมากครับ
                 Printer กลุ่ม POS หลายรุ่น ยังรองรับ  งานในลักษณะนี้อยู่
     (แปลกเหมือนกัน ผ่านมา 20 ปีแล้ว ผมยังต้องใช้เทคนิคนี้อยู่)

Q: แล้วมีตัวเลือก อื่นๆมั๊ย ?
A: ผมเสนอให้     ย้ายไปเขียน Report บน Web แล้วครับ! 
     ใครที่ ถูกกดดันให้ทำในแบบที่คุ้นเคย     บทความนี้คงช่วยได้บ้าง (ผมว่ามันยากกว่า)

วิธีใช้

      โดยการส่งรหัส  แทรกลงไปในตัวรายงาน ด้วย Format ตามนี้
      "เปิดใช้ ESC" + "จำนวนคำสั่งที่เรียกใช้" + คำสั่ง  +  ข้อความที่จะพิมพ์
   
ตย. ต้องการพิมพ์  ความกว้าง 2 เท่า, ความสูง 2 เท่า  ใน O-spec เดิม
                เดิม
O        E 10             DTL010        
O                         O#TXT    40

1. เลือก ESC Command ให้ตรง + จัดให้มี Format
        "คำสั่งเปิดใช้ ESC" + จำนวนคำสั่ง + คำสั่ง ESC + "คำสั่งปิด ESC"

  1.1 คำสั่ง "เปิด" ใช้ ESC = 03    คำสั่ง "ปิด" ด้วย 40
       จำนวนคำสั่ง = (นับจากด้านล่าง)

           เครื่องที่ผมใช้เป็น  DBCS (double byte) จะนับแบบนี้
           ตาราง ESC-Command   (รหัสเลขฐาน 16)
           ESC (1B)  v (76)        Double Width  เปิด = 01     รหัสรวม 1B7601 (3 Byte)
           ESC (1B)  w(77)        Double Height เปิด = 01     รหัสรวม 1B7701 (3 Byte)
            ... จำนวนคำสั่ง ที่จะใช้= 6 คำสั่ง

       สรุป เขียนต่อเนื่องคือ    03061B76011B770140

   1.2 คล้ายกัน  เพื่อพิมพ์ ข้อความเสร็จ   ให้  "ยกเลิก" ESC ข้างต้น
       เปลี่ยนจาก   เปิด (01)  เป็น  ปิด (00)
           ตาราง ESC-Command   (รหัสเลขฐาน 16)
           ESC (1B)  v (76)        Double Width  ปิด = 00     รหัสรวม 1B7600 (3 Byte)
           ESC (1B)  w(77)        Double Height ปิด = 00     รหัสรวม 1B7700 (3 Byte)

ใน RPG เขียนแบบนี้
I             X'03061B7601-        C          HEXON

I             '1B770140'                                    
            I             X'03061B7600-        C          HEXOF
I             '1B770040'                                    

แทรกคำสั่งใน  O-Spec
                เดิม
O        E 10             DTL010        
O                         O#TXT    40
            ใหม่ (แทรก)
O        E 10             DTL010        
O                         HEXON     1
O                         O#TXT    40

O                         HEXOF    60

วันจันทร์ที่ 21 มีนาคม พ.ศ. 2559

Download AS/400 File to Excel-2

Download AS/400 File to Excel-2

มาดูวิธีทำทั่วไปครับ  ทำผ่านเครื่องมือที่ ibm จัดไว้ให้
1. เรียกใช้ โปรแกรม
    Start > IBM i Access for Windows
    หรือ   กดปุ่ม Received files from host (ด้านบน หน้าจอ 5250 Emulator)
2. ระบุ  file ที่จะ Download
    IBM :   Server อะไร,  ชื่อ File (Lib / File)
    ปุ่ม [Data Option] ใช้ใส่รายละเอียด เหมือน SQL(เลือก บาง Field, กรองข้อมูลด้วย Where)
          ถ้าทำตามคำแนะนำ  ส่วนนี้จะไม่ต้องทำ        
    ข้อแนะนำ  -  สำหรับ User เรียกใช้  ให้แยก Lib / File  ออกมา
                         ทุกครั้งที่  ส่ง File ให้ Replace (ทับ/แทนที่ ลงไป)

    ระบุ  การจัดเก็บ PC File
    PC :      Output Device  เปลี่ยนเป็น  "File"
                 ระบุ Path/File  ที่จะจัดเก็บ

                 กดปุ่ม [Detail]    เพื่อเลือกชนิด File เช่น   CSV  หรือ BIFF(Excel File)
    File Details :
         PC File Description file (.FDF)
         กรณีที่  จะทำซ้ำ หรือ upload   เราจะ Save ไว้  (จำ Path ที่เก็บไว้ด้วย)
         กด  [Ok]  เพื่อปิดหน้าต่างนี้
   กด File > Save เพื่อจัดเก็บ Profile ให้เรียกใช้ซ้ำ (ผ่าน RTOPCb.exe)

ขั้นตอน Upload จะคล้ายกัน
แต่มีเทคนิค  ให้สร้าง File บน AS/400, iSeries ก่อน  แล้วทำ Download ลงมา
        แล้วจัดเก็บ .FDF (โครงสร้าง File/Field)

เมื่อทำ Upload ให้  ป้อน   ดึง info จาก .FDF มาใช้งาน
สังเกต  การ Upload ไปสร้าง File บน AS/400 จะต้องผ่านอุปสรรคหลายจุด
             ข้อแนะนำข้างต้น จะช่วยลดปัญหาต่างๆ ได้มาก

วันพฤหัสบดีที่ 17 มีนาคม พ.ศ. 2559

Download AS/400 file to Excel

Download AS/400,iSeries file to Excel

ทำผ่าน IFS (Integration File System)

มีหลายวิธีที่ทำได้  ครับ ที่ผมใช้บ่อยคือ  ข้อ 1,3
1. ใช้ Excel : MS Query  ดึงข้อมูลโดยตรง  ... วิธีนี้เหมาะกับ Developer มาก
         Excel  > Data > From Other Sources > From Microsoft Query
         (สร้าง ชื่อที่ชี้ไป AS/400   Data Source ใน ODBC)
         Tip : ผมจะ  ยกเลิก  ไม่ใช้ Query Wizard (Cancel)   แต่ใช้ MS Query (ํYes)
         Tip : ผมจะ  เขียน SQL ใน iSeries Navigator ก่อน - ตรวจ Syntax ได้ดีกว่า

2. ทำผ่าน IFS (Integration File System)  ... วันนี้จะอธิบายตัวนี้

3. start > IBM i Access for Windows > Data Transfer from IBM i
         วิธีนี้ ทำเสร็จจะ save โครงสร้างไว้  ... เหมาะกับ  "ทำซ้ำ"  (โดย User)


ออกตัวก่อน   หัวข้อ 2  นี้  ผมทำไม่ผ่าน  (เกิดจาก ระบบ Security  ในบริษัทฯ)
ถ้า  บริษัทฯไหน  ที่ไม่  ติดปัญหา Security   น่าจะทำได้ และเป็นอีกตัวเลือก ที่เลือกใช้ได้ครับ

IFS คืออะไร

ในภาพของผม  มันคือ  การทำให้ AS/400,iSeries เป็น Drive ที่ PC มองเห็น
      = ใช้ Disk บน AS/400 ... ผมไม่ค่อยเห็นด้วย เพราะ Disk บน AS/400 ราคาแพงไป
แต่ถ้ามอง  เป็นเส้นทาง  ส่งต่อ File  ก็นับว่า  เป็นอีกตัวเลือกที่ดี
สำคัญมาก    file ในนี้ AS/400,iSeries   ไม่สามารถเรียกใช้ได้โดยตรง จาก PC
      (การจัดเก็บต่างกัน)  ต้องมี  "ขั้นตอน" โอนแปลงชนิด file

ขั้นตอน (แบบย่อ)

1. สร้าง Folder IFS  ใน AS/400,iSeries + กำหนดให้ Share
    หัวข้อนี้ ผมไม่เชี่ยวชาญ น๊ะครับ  แต่ในนี้อธิบายไว้ครบ

      คลิกขวา > เลือก New Folder
       
    สังเกต เปลี่ยนค่า *default เพื่อลดปัญหา Security

    อ้างอิง  http://www.rpgpgm.com/2014/09/how-to-map-ifs-folder-as-windows-share.html

2. cmd  CPYTOIMPF   ไปที่  Folder IFS ที่สร้างไว้
    อ้างอิง   http://www.itjungle.com/fhg/fhg010913-story01.html

    CPYTOIMPF FROMFILE(MYLIB/ITEMS)  
              TOSTMF('/Sarayut/Items.csv')
              RCDDLM(*CRLF)  ADDCOLNAM(*SYS)

    ตย.ผลลัพธ์ ใน Items.csv
        ITEM_NO,ITEM_00001,ITEM_PRICE  
        1          ,"Whirlpool Washing Machine",750.0000
        2          ,"Whirlpool Dryer (Gas)",775.0000
        3          ,"Maytag Dishwasher",600.0000

    ปรับรูปแบบได้  เช่น เปลี่ยน/เพิ่ม อักษร ลงท้าย เป็นต้น

3. Windows Explorer : Map Network Drive ไปที่ Folder IFS

     ระบุไปที่    //AS400 server name/Folder ที่สร้าง)
          
    จุดนี้  copy File ไปใช้ หรือ เปิดโดยตรง ก็ได้ครับ

ผมพบปัญหาคือ Access Deny  (ในการใช้ในส่วน AS/400 IFS)
น่าจะเกิดจาก สิทธิ ของการเข้าใช้ IFS

วันอังคารที่ 15 มีนาคม พ.ศ. 2559

Rename Field while Running RPG/400

การเปลี่ยนชื่อ Field ใน RPG ILE
    มีแนะนำใน Internet มาก- หาได้ง่าย ... ไม่ขออธิบายน๊ะครับ
แต่การเปลี่ยนชื่อ Field ใน RPG/400 หาได้ "ยากกว่า"

การใช้งาน + ปัญหาที่พบ

- มีการใช้หลาย File ที่มี Write,Delete,Update  ชื่อ Field  "ซ้ำกัน" 
  ตย.1  File = Order     มี   field ORDER
            File = Invoice   ก็มี field ORDER

  ตย.2  จะลบข้อมูลที่ซ้ำ (ด้วย RPG/400)  โดยเลือก เปิด L-File 2 ตัว
           L-File ตัวแรก  ชี้จุดเริ่มต้น   
           L-File อีกตัวใช้   ตรวจและ "ลบ"

- ปัญหาที่พบ คือ  หลัง compile ตัวแปรทั้ง 2 จะใช้  พื้นที่  "ร่วมกัน"  
          ตัวแปรจะ  จะเก็บค่า  "ล่าสุด"  ไว้เท่านั้น 
          ถ้าเผลอนำค่านี้  ไปชี้เพื่อ  Write, Update, Delete จะ "ผิด"
                จะพบปัญหา  เมื่อ  ใช้เทคนิคเขียน code แบบสั้น (จัดการ file แบบง่าย)
                             มาเขียนงานที่เริ่มซับซ้อน  (ใช้ย่อ แบบผิดประเภท)

ทางแก้ไข

- ย้ายค่า ตัวแปร ไปเก็บที่อื่น แล้ว ย้ายกลับมา
          ไม่เหมาะ ถ้ามีจำนวน Field มาก  (เริ่มยาว)
- สร้าง Logical File ใหม่   โดย rename ใน Logical File 
          ไม่เหมาะ ถ้า file ขนาดใหญ่ (Index นาน) แต่ใช้งานชั่วคราว
- เปลี่ยนชื่อ Field ใน File ขณะ Run

วิธีการประกาศ

+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 .
 Ircd-fmt                                                 
 I              old-field                       new-field 

ตัวอย่าง

ข้อมูล Logical File (ข้อมูลเรียงตามนี้)

RPG เปิดใช้ ทั้ง 2 Logical File  โดยชี้ไป   ต่าง Row

FSQL010L1IF  E           K        DISK                    
FSQL010L2IF  E           K        DISK                    
 *------------------------------------------------------* 
ISQL010R1                                                 
I              L1EPNO                          AAEPNO     
I              L1EDUC                          AAEDUC     
 *------------------------------------------------------* 
C           KL114     KLIST                               
C                     KFLD           PLAC    2            
C                     KFLD           DIVI    2            
C                     KFLD           OPEC    2            
C                     KFLD           EPNO    6            
C           KL214     KLIST                               
C                     KFLD           PLAC                 
C                     KFLD           DIVI         
C                     KFLD           OPEC         
C                     KFLD           EDUC    1    
C                     MOVEL'T2'      PLAC         
C                     MOVEL'72'      DIVI         
C                     MOVEL'11'      OPEC         
C                     MOVEL'D'       EPNO         
C           KL114     CHAINSQL010L1             80
C                     MOVEL'1'       EDUC         
C           KL214     CHAINSQL010L2             80
C           *IN80     IFEQ '0'                    
C                     END                         

ดูค่าจากการ Debug (StrISDB)
     ตัวแปร  AAEPNO, AAEDUC แสดงค่า แตกต่างกันกับ  L1EPNO,L1EDUC

วันอาทิตย์ที่ 28 กุมภาพันธ์ พ.ศ. 2559

มาแล้ว SQL Editor แบบ GUI

หลังจากต้องใช้ iSeries Navigator เขียน SQL สำหรับ DB2/400 มานาน
ต้องบ่น เกือบทุกครั้งว่า ทำไม ไม่มี GUI ดีๆ มาช่วยเลยน๊ะ


เคยลอง  ค้นหา ทางเลือกอื่น มาระยะหนึ่ง  ก็จะพบแต่  ต้องซื้อเพิ่ม : P

ในที่สุด  ก็พบ   IBM Data Studio   มาช่วยเขียน SQL  ... ค้นพบโดยบังเอิญ

ข้อดี
- ฟรี
- S/W ใหม่ๆ ติดตั้ง "ง่าย" (ไม่งอแง)
- การเรียนรู้  ใช้เวลาสั้น  แต่ถ้าได้อ่านสักนิด ก็จะดีครับ
- เพิ่ม สีสัน (ทำให้อ่าน/แยก SQL ได้ง่ายขึ้น)
- เห็น File/Field ในหน้าต่าง  ดูเป็นสิ่งเล็กๆ ที่ช่วยได้มาก
- มีตัวช่วย แสดงตัวเลือก  ชื่อ Field หรือ คำสั่งใน SQL .., Microsoft เรียก intellisence
- เก็บประวัติ + เรียกใช้ซ้ำ (เดิม ต้อง save เก็บไว้เอง)


ข้อเสีย
- เปิดใช้ 5 ครั้งจะเปิดไม่ได้ 1 ครั้ง (มี Error ให้อ่านใน Log...บลาๆๆ  สักพักเปิดใหม่ก็ได้)
       อาการเดียวกับ  หัดใช้ IBM Rational Rose แรกๆ
       มีคนอธิบายว่า ตัวนี้เขียนด้วย Java ทำให้ ต้องการ RAM มากๆ
- (ยังไม่คุ้น)
    # เดิมแสดง  ข้อมูลผลลัพธ์ เลย
       ตัวนี้จะแสดง สถานะ  ใช้เวลาเท่าไหร่ ก่อน  (ต้อง เพิ่ม กด Tab: Result เพื่อดู)
    # เดิมมีมี Error cursor จะชี้จุดที่ผิด  (หลายครั้งแนะนำ ตำแหน่งที่ถูกที่ให้)
        ตัวนี้  ต้องหาเอง
    # ลากชื่อ field  มาใส่ใน SQL (ทำไม่ได้)

ยังมีข้อดี  อีกหลายตัว  แล้วแต่ผู้ใช้งานน๊ะครับ
เช่น  ตัวช่วยทำ Migration = การย้าย file หรือ เปลี่ยน ระบบ DB เป็นต้น

ส่วนตัว ก็สรุปว่า น่าใช้งานครับ
ลองไปใช้ดูครับ

เอาไว้วันหลังจะไกด์ step by step ในงานแต่ละเรื่องให้ดูครับ

ปล. ผมใช้งาน MS SQL Server บางเรื่องอยู่ ทำให้เปรียบเทียบได้ระดับหนึ่งน๊ะครับ

วันพุธที่ 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 โปรแกรมได้)