1 * Curl simple URL request 2 * 3 h DFTACTGRP(*NO) ACTGRP(*NEW) 4 h OPTION(*NOSHOWCPY) 5 h BNDDIR('CURL') 6 * 7 ************************************************************************** 8 * _ _ ____ _ 9 * Project ___| | | | _ \| | 10 * / __| | | | |_) | | 11 * | (__| |_| | _ <| |___ 12 * \___|\___/|_| \_\_____| 13 * 14 * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. 15 * 16 * This software is licensed as described in the file COPYING, which 17 * you should have received as part of this distribution. The terms 18 * are also available at https://curl.se/docs/copyright.html. 19 * 20 * You may opt to use, copy, modify, merge, publish, distribute and/or sell 21 * copies of the Software, and permit persons to whom the Software is 22 * furnished to do so, under the terms of the COPYING file. 23 * 24 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 25 * ANY KIND, either express or implied. 26 * 27 * SPDX-License-Identifier: curl 28 * 29 ************************************************************************** 30 * 31 /include H,CURL.INC 32 * 33 * Simple example to request the URL given as command line parameter and 34 * output its response. 35 * 36 d pi 37 d url 120 38 * 39 d urllen s 10u 0 URL length 40 * 41 ************************************************************************** 42 * 43 c eval urllen = trimmed_length(url: %len(url)) 44 * 45 * Do the curl stuff. 46 * 47 c callp curl_global_init(CURL_GLOBAL_ALL) 48 c callp main 49 c callp curl_global_cleanup() 50 c seton lr Exit 51 * 52 ************************************************************************** 53 * Main procedure: do the curl job. 54 ************************************************************************** 55 * 56 p main b 57 d main pi 58 * 59 d h s * Easy handle 60 d result s like(CURLcode) Curl return code 61 d inz(CURLE_OUT_OF_MEMORY) 62 d errmsgp s * Error string pointer 63 d response s 52 For error display 64 * 65 * Create and fill curl handle. 66 * 67 c eval h = curl_easy_init() 68 c if h <> *NULL 69 c callp curl_easy_setopt_ccsid(h: CURLOPT_URL: 70 c %subst(url: 1: urllen): 0) 71 c callp curl_easy_setopt_long(h: 72 c CURLOPT_FOLLOWLOCATION: 1) 73 * 74 * Perform the request. 75 * 76 c eval result = curl_easy_perform(h) 77 c callp curl_easy_cleanup(h) Release handle 78 c endif 79 * 80 * Check for error and report if some. 81 * 82 c if result <> CURLE_OK 83 c eval errmsgp = curl_easy_strerror_ccsid(result: 0) 84 c eval response = %str(errmsgp) 85 c dsply response 86 c endif 87 p main e 88 * 89 ************************************************************************** 90 * Get the length of right-trimmed string 91 ************************************************************************** 92 * 93 p trimmed_length b 94 d trimmed_length pi 10u 0 95 d string 999999 const options(*varsize) 96 d length 10u 0 value 97 * 98 d len s 10u 0 99 * 100 c eval len = %scan(X'00': string: 1: length) Limit 0-terminated 101 c if len = 0 102 c eval len = length + 1 103 c endif 104 c if len <= 1 105 c return 0 106 c endif 107 c return %checkr(' ': string: len - 1) Trim right 108 p trimmed_length e 109