付録1 プログラム例

ここでは、Javaアプリケーションプログラムを使用したプログラム例を記載します。

クエリー/レポートライタータイプ「Sample.java」

/*
 * Sample.java
 */
// SvfrClientクラスを使うために必要な宣言
import jp.co.fit.vfreport.SvfrClient;

//
// 以降は、SvfrClientクラスの使い方を示すためのプログラム例です。
//

public class Sample
{
 private static final String[][] sampleData = {
  { "EMPNO", "ENAME" , "JOB"      , "MGR" , "HIREDATE", "SAL" , "COMM", "DEPTNO", "DNAME"     , "LOC"      },
  { "7369" , "SMITH" , "CLERK"    , "7902", "80-12-17", "800" , ""    , "20"    , "RESEARCH"  , "DALLAS"   },
  { "7499" , "ALLEN" , "SALESMAN" , "7698", "81-02-20", "1600", "300" , "30"    , "SALES"     , "CHICAGO"  },
  { "7521" , "WARD"  , "SALESMAN" , "7698", "81-02-22", "1250", "500" , "30"    , "SALES"     , "CHICAGO"  },
  { "7566" , "JONES" , "MANAGER"  , "7839", "81-04-02", "2975", ""    , "20"    , "RESEARCH"  , "DALLAS"   },
  { "7654" , "MARTIN", "SALESMAN" , "7698", "81-09-28", "1250", "1400", "30"    , "SALES"     , "CHICAGO"  },
  { "7698" , "BLAKE" , "MANAGER"  , "7839", "81-05-01", "2850", ""    , "30"    , "SALES"     , "CHICAGO"  },
  { "7782" , "CLARK" , "MANAGER"  , "7839", "81-06-09", "2450", ""    , "10"    , "ACCOUNTING", "NEW YORK" },
  { "7788" , "SCOTT" , "ANALYST"  , "7566", "87-04-19", "3000", ""    , "20"    , "RESEARCH"  , "DALLAS"   },
  { "7839" , "KING"  , "PRESIDENT", ""    , "81-11-17", "5000", ""    , "10"    , "ACCOUNTING", "NEW YORK" },
  { "7844" , "TURNER", "SALESMAN" , "7698", "81-09-08", "1500", "0"   , "30"    , "SALES"     , "CHICAGO"  },
  { "7876" , "ADAMS" , "CLERK"    , "7788", "87-05-23", "1100", ""    , "20"    , "RESEARCH"  , "DALLAS"   },
  { "7900" , "JAMES" , "CLERK"    , "7698", "81-12-03", "950" , ""    , "30"    , "SALES"     , "CHICAGO"  },
  { "7902" , "FORD"  , "ANALYST"  , "7566", "81-12-03", "3000", ""    , "20"    , "RESEARCH"  , "DALLAS"   },
  { "7934" , "MILLER", "CLERK"    , "7782", "82-01-23", "1300", ""    , "10"    , "ACCOUNTING", "NEW YORK" }
 };

 //
 // 以降は、SvfrClientクラスの使い方を示すためのプログラム例です。
 //
 
 public static void main(String[] args)
 {
  String dbServer = args.length > 0 ? args[0] : "";
  String hostName = args.length > 1 ? args[1] : "localhost";
  new Sample(dbServer, hostName);
 }

 //
 // PDF作成プログラム例
 //
 
 public Sample(String dbServer, String hostName)
 {
  String dbq   = dbServer.length() > 0 ? "dbq=" + dbServer + ";" : "";
  String form  = "." + java.io.File.separator + "sample.xml";
  String pdf   = "." + java.io.File.separator + "sample.pdf";
  String query = "." + java.io.File.separator + "sample.vrq";
  String conn  = dbq + "uid=scott;pwd=tiger";
  int mode, code;
  boolean ok = false;

  try {
  
   //
   // SvfrClientとSVF Connect for Java APIサーバーとの接続開始
   // hostName部分にPDF作成サーバーのIPアドレスを記述
   //
   
   SvfrClient svf = new SvfrClient(hostName);
   try {
   
    //
    // PDF作成開始
    //
    
    code = svf.VrInit();
    if (code < 0)
     System.out.println("error: VrInit() = " + code);
    else {
     try {
      //
      // PDF出力を明示的に指示
      //

      
      code = svf.VrSetPrinter("", "PDF");
      if (code < 0)
       System.out.println("error: VrSetPrinter() = " + code);
      
      //
      // 作成するPDF名の指定
      //
      
      code = svf.VrSetSpoolFileName2(pdf);
      if (code < 0)
       System.out.println("error: VrSetSpoolFileName2(\"" + pdf + "\") = " + code);
      
      //
      // フォームファイルの指定
      //
      
      mode = 5;
      code = svf.VrSetForm(form, mode);
      if (code < 0)
       System.out.println("error: VrSetForm(\"" + form + "\", " + mode + ") = " + code);
      else {
      
       //
       // レコードデータの出力
       //
       
       if (dbServer.equals("")) {
       
        code = -1;
        recordLoop:

        for (int row = 1; row < sampleData.length; ++row) {
         for (int col = 0; col < sampleData[0].length; ++col)
          svf.VrsOut(sampleData[0][col], sampleData[row][col]);
        
        //
        // 1レコード分のデータの出力終了命令
        //
        
         code = svf.VrEndRecord();
         if (code < 0) {
          System.out.println("error: VrEndRecord() = " + code);
          break recordLoop;

         }
        }
        if (code == 0)
         ok = true;
       }
       else {
       
        //
        // クエリーファイル使用時のファイル名指定
        //
        
        mode = 0;
        code = svf.VrSetQuery(conn, query, mode);
        if (code < 0)
         System.out.println("error: VrSetQuery(\"" + conn + "\", \"" + query + "\", " + mode + ") = " + code);
        else {
        
         //
         // クエリー実行開始
         //
         
         code = svf.VrExecQuery(); // API関数マニュアルに記載されているVrReportと同じ関数ですが、使用する名前が違います。
         if (code < 0)
          System.out.println("error: VrExecQuery() = " + code);
         else
          ok = true;
        }
       }
      }
     }
     catch (Exception e) {
      // io error
      e.printStackTrace();
     }


     finally {

      //
      // VrInit() 成功後は、必ず呼び出してください。
      //

      code = svf.VrQuit();
      if (code < 0)
       System.out.println("error: VrQuit() = " + code);
      else if (ok)
       System.out.println("success: output to \"" + pdf + "\"");
     }
    }
   }
   catch (Exception e) {
    // VrInit() error ?
    e.printStackTrace();
   }

   finally {
   
    //
    // new SvfrClient() 成功後は、必ず呼び出してください。
    //
    svf.close();
   }
  }
  catch (Exception e) {
   // connection failed
   e.printStackTrace();
  }
 }
}

固定帳票タイプ「CHAIN.java」

/*
 * CHAIN.java
 */
//SvfrClientクラスを使うために必要な宣言
import jp.co.fit.vfreport.SvfrClient;

//
// 以降は、SvfrClientクラスの使い方を示すためのプログラム例です。
//

public class CHAIN {

 public static void main(String[] args) {
  String hostName = args.length > 1 ? args[1] : "localhost";
  String dbServer = args.length > 0 ? args[0] : "";
   new CHAIN(dbServer, hostName);
 }

//
//PDF作成プログラム例
//
 
 public CHAIN(String dbServer, String hostName){

  int code;
  boolean ok = false;
  
  try {
  
  //
  //SvfrClientとSVF Connect for Java APIサーバーとの接続開始
  //"localhost"部分にPDF作成サーバーのIPアドレスを記述
  //
  
  SvfrClient svf = new SvfrClient("localhost");
   
  try {
   
   //
   //PDF作成開始
   //
   
    code = svf.VrInit();
    if (code < 0)
     System.out.println("error: VrInit() = " + code);
    else {
    
    try {
      
     //
     //PDF出力を明示的に指示
     //
      
     code = svf.VrSetPrinter("", "PDF");
     if (code < 0)
      System.out.println("error: VrSetPrinter() = " + code);
      
     //
     //フォームファイルの指定
     //
      
     code = svf.VrSetForm("CHAIN.xml", 1);
     if (code < 0)
      System.out.println("error: VrSetForm() = " + code);
     else {
      
     //
     //作成するPDFファイル名の指定
     //
      code = svf.VrSetSpoolFileName2("chain.pdf");
      if (code < 0)
       System.out.println("error: VrSetSpoolFileName2() = " + code);
      
     //
     //以降データを出力
     //
      
      code = svf.VrsOut("COMPANY_NAME", "ウイングアーク");
      if (code < 0)
       System.out.println("error: VrsOut(COMPANY_NAME) = " + code);
      
      code = svf.VrsOut("DEPT_NAME", "ツール営業部");
      if (code < 0)
       System.out.println("error: VrsOut(DEPT_NAME) = " + code);
      
      code = svf.VrsOut("DEPT_CODE", "010203040506");
      if (code < 0)
       System.out.println("error: VrsOut(DEPT_CODE) = " + code);
      
      code = svf.VrsOut("CATEGORY", "0001");
      if (code < 0)
       System.out.println("error: VrsOut(CATEGORY) = " + code);
      
      code = svf.VrsOut("ORDER_TYPE", "11");
      if (code < 0)
       System.out.println("error: VrsOut(ORDER_TYPE) = " + code);
      
      code = svf.VrsOut("NO", "0000001");
      if (code < 0)
       System.out.println("error: VrsOut(NO) = " + code);
      
      code = svf.VrsOut("CUSTOMER_CODE", "110001");
      if (code < 0)
       System.out.println("error: VrsOut(CUSTOMER_CODE) = " + code);
      
      code = svf.VrsOut("CUSTOMER", "FIT");
      if (code < 0)
       System.out.println("error: VrsOut(CUSTOMER) = " + code);
      
      code = svf.VrsOut("CUSTOMER_TEL", "00-1111-2222");
      if (code < 0)
       System.out.println("error: VrsOut(CUSTOMER_TEL) = " + code);
       
      //
      //繰り返し項目へのデータ出力
      //
      
      code = svf.VrsOutn("PRODUCT", 1, "SVF設計部");
      if (code < 0)
       System.out.println("error: VrsOutn(PRODUCT,1) = " + code);
      
      code = svf.VrsOutn("PRODUCT_CODE", 1, "0000000000001");
      if (code < 0)
       System.out.println("error: VrsOutn(PRODUCT_CODE,1) = " + code);
      
      code = svf.VrsOutn("QTY", 1, "5");
      if (code < 0)
       System.out.println("error: VrsOutn(QTY,1) = " + code);
      
      code = svf.VrsOutn("UNIT_PRICE", 1, "700000");
      if (code < 0)
       System.out.println("error: VrsOutn(UNIT_PRICE,1) = " + code);
      
      code = svf.VrsOutn("PRODUCT", 2, "SVF/Web実行部");
      if (code < 0)
       System.out.println("error: VrsOutn(PRODUCT,2) = " + code);
      
      code = svf.VrsOutn("PRODUCT_CODE", 2, "0000000000002");
      if (code < 0)
       System.out.println("error: VrsOutn(PRODUCT_CODE,2) = " + code);
      
      code = svf.VrsOutn("QTY", 2, "3");
      if (code < 0)
       System.out.println("error: VrsOutn(QTY,1) = " + code);
      
      code = svf.VrsOutn("UNIT_PRICE", 2, "800000");
      if (code < 0)
       System.out.println("error: VrsOutn(UNIT_PRICE,2) = " + code);
      
      code = svf.VrsOutn("PRODUCT", 3, "RDサーバー版");
      if (code < 0)
       System.out.println("error: VrsOutn(PRODUCT,3) = " + code);
      
      code = svf.VrsOutn("PRODUCT_CODE", 3, "0000000001001");
      if (code < 0)
       System.out.println("error: VrsOutn(PRODUCT_CODE,3) = " + code);
      
      code = svf.VrsOutn("QTY", 3, "4");
      if (code < 0)
       System.out.println("error: VrsOutn(QTY,3) = " + code);
      
      code = svf.VrsOutn("UNIT_PRICE", 3, "500000");
      if (code < 0)
       System.out.println("error: VrsOutn(UNIT_PRICE,3) = " + code);
      
      code = svf.VrsOutn("PRODUCT", 4, "RDユーティリティ版");
      if (code < 0)
       System.out.println("error: VrsOutn(PRODUCT,4) = " + code);
      
      code = svf.VrsOutn("PRODUCT_CODE", 4, "0000000001003");
      if (code < 0)
       System.out.println("error: VrsOutn(PRODUCT_CODE,4) = " + code);
      
      code = svf.VrsOutn("QTY", 4, "60");
      if (code < 0)
       System.out.println("error: VrsOutn(QTY,4) = " + code);
      
      code = svf.VrsOutn("UNIT_PRICE", 4, "50000");
      if (code < 0)
       System.out.println("error: VrsOutn(UNIT_PRICE,4) = " + code);
      
      //
      //データ出力終了(改ページ)
      //
      
      code = svf.VrEndPage();
      if (code < 0)
       System.out.println("error: VrEndPage() = " + code);
      else
       ok = true;
       
     }
    }
    
    catch (Exception e) {
     // io error
     e.printStackTrace();
    }
    
   }

        //
        // VrInit() 成功後は、必ず呼び出してください。
        //
        code = svf.VrQuit();
        if (code < 0)
         System.out.println("error: VrQuit() = " + code);

   
   }

      catch (Exception e) {
       // VrInit() error ?
       e.printStackTrace();
      }
      
      finally {
       //
       // new SvfrClient() 成功後は、必ず呼び出してください。
       //
       svf.close();
      
  
  }
  
    catch (Exception e) {
     // connection failed
     e.printStackTrace();
    }
   
 }

}